الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شرح لبعض دوال ال Extended Stored Procedures

مغلق
بدأه imadouzoun في 8 أبريل 2006 · 5 رد · 3,342 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله و بركاته :

إخواني وضعت في هذا الرابط شرح لبعض إجرائيات الـ XP المستخدمة مع إصداري Sql Server

الـ 2000 و 7 والتي لا تجد لها شرحاً في الـ Books OnLine كالتعامل مع الريجيستري و المجلدات و ..

و الباقي إنك تنقر على الرابط على شان تشوف الموضوع و نسمع رأيك الذي يسرني :

وإن شاء الله يكون في فائدة للجميع : :)

شرح لبعض دوال الـ XP العاملة مع مخدم الـ SQL

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#2

جزاك الله خير على هذا المجهود

يا حى يا قيوم برحمتك أستغيث اصلح لى شأنى كله ولا تكلنى إلى نفسى طرفة عين

اللهم أعنا على ذكرك وشكرك وحسن عبادتك

اللهم انك عفو كريم حليم تحب العفو فاعفو عنا

اللهم إنى أسألك رضاك والجنة وأعوذ بك من سخطك والنار

اللهم إرحمنا فوق الأرض وإرحمنا تحت الأرض وإرحمنا وإعتق رقابنا يوم العرض

اللهم لا تدع لنا ذنبًا إلا غفرته ولا همًا إلا فرجته ولا مريضًا ولا دينًا إلا قضيته ولا عيبا إلا سترته ولا حاجًا هى لك رضا إلا قضيتها

اللهم انى أسألك موجبات رحمتك وعزائم مغفرتك والسلامة من كل إثم والغنيمة من كل بر والفوز بالجنة و النجاة من النار اللهم أمين يا رب العالمين

#3

مشكور أخي العزيز ان شاء الله الرد عن قريب

رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ

#4

مقال مفيد وجهد مقدر تشكر عليه

حبذا لو وضعت نسخة منه في هذا القسم

:)

فكر بطريقة أخرى

#5

السلام عليكم و رحمة الله :

شكراً لكل من دعا لنا و لكل من شكرنا :)

تكرم عينك أخي Walcom و هذه أحلى نسخة :

------------------------------------------------------------------------------------------------------------------------

سأتحدث اليوم عن إجرائيات موسعة (Extended Stored Procedure) أو ما يسمى دوال الـ XP وهي كما تعلم (أو لا تعلم) عبارة عن مكتبات ربط ديناميكي Dll Library مكتوبة بلغة الـ C++ من أجل قضاء بعض الإحتياجات و التي لا نستطيع الوصول إليها عبر T-SQL

(أكبر مثال على ذلك الدالة التي قمت بوضعها سابقاً "التصدير إلى Excel عبر T-SQL" والتي هي في الحقيقية استدعاءات لإجرائيات من هذه المكتبات .. أقصد الدوال التي تبدأ تسميتها بـ SP_OA كالدالة SP_OACreate)

بالإضافة للوصول إلى بعض مكونات النظام الأخرى كمسجل النظام Registry مثلاُ ..

طبعاً كما ذكرت أنني سأتحدث عن دوال الـ Extended الغير موضحة في الـ Help و العاملة في الإصدارين 7 و 2000 وليس لها أي أمثلة أو شرح كافي اليوم بإذن الله .. فلننطلق :

طبعاً اختبارنا للدوال و تنفيذها سيكون باستخدام الأداة Query Analyzer القادمة مع Sql Server

Start -> Programs ->Microsoft Sql Server -> Quary Analayzer

كما ذكرنا أن هذه الدوال مكتوبة بلغة C++ ما يعني أنك أيضاُ يمكنك أن تكتب إجرائياتك الموسعة بمكتبات ربط ديناميكي و تضيفها إلى Extended Stored Proceduersلديك و تستخدمها ضمن شيفرات T-SQL .. بما يلائم احتياجاتك . OK

1- sp_MSgetversion :

معرفة إصدار الـ Sql Server الذي تعمل عليه .. استخدم الدالة :

EXEC master..sp_MSgetversion

ملاحظة يوجد طريقة شائعة أكثر من هذه الدالة و هي :

Select @@Version

وهي تزودنا بمعلومات أكثر تفصيلاً من الدالة : sp_MSgetversion

2- xp_dirtree :

وهي دالة رائعة بكل معنى الكلمة :

تستخدم للحصول على قائمة تضم أسماء جميع المجلدات الموجودة (مع المجلدات الفرعية) في المسار الذي تحدده كبارامتر لها

EXEC master..xp_dirtree 'C:\Program Files'

3- xp_enum_oledb_providers :

هذه الإجرائية الظريفة أيضاً تستخدم لعرض جميع مزودات محركات قواعد البيانات من نوع OLE DB ..

تعرض هذه الدالة اسم المزود و شرح بسيط له و للحصول على كل المزودات من أجل مخدم الـ SQL الخاص بك :

EXEC master..xp_enum_oledb_providers

4- xp_enumcodepages :

هذه الإجرائية تستخدم لعرض كافة الـ (code pages) و الـ (character sets) ..

لكنها صراحة لم تعمل عندي ربما هذه الدالة لإصدار Sql 7على مايبدو .. ولكن للتجربة يمكنك أن تكتب :

EXEC master..xp_enumcodepages

5- xp_enumdsn :

تعيد هذه الدالة قائمة بكل الـ (DSNs) التابعة للنظام مصادر البيانات التابعة للنظام (Data Source Names) .

و للتجربة أكتب :

EXEC master..xp_enumdsn

6- xp_enumerrorlogs :

هذه الدالة ببساطة تعيد قائمة بالأخطاء المسجلة (Error Logs) مع تواريخها .. للإختبار يمكنك أن تكتب :

EXEC master..xp_enumerrorlogs

7 - xp_enumgroups :

هذه الدالة فظيعة و حلوة تقوم بجلب أسماء مجموعات المستخدمين في نظام التشغيل يعني (Windows NT Groups) .. شو رأيك أخي الكريم ؟؟!!

EXEC master..xp_enumgroups

8 - xp_fileexist :

طيب إذا كان عندك ملف CSV مثلاً أو قاعدة بيانات أكسس وبدك تسحب Data من هكذا ملفات أو غيرها .. ولكن قبل أن تبدأ

بسحب الداتا مو لازم يكون الملف موجود في المسار المحدد ؟ إذاً سوف تحتاج هذه الدالة ..

الصيغة العامة :

EXECUTE xp_fileexist filename [, file_exists INT OUTPUT]

للتجربة :

EXEC master..xp_fileexist 'c:\boot.ini'

9- xp_fixeddrives :

شو رأيك تعرف شو عندك سواقات .. مو بس هيك لاء .. كمان الـ Free Space لكل سواقة بالـ MB ميغا بايت .

لترى ذلك المنظر أكتب :

EXEC master..xp_fixeddrives

10- xp_getnetname :

تعيد هذه الدالة اسم الحاسب ضمن شبكة الـ (Wins) لمخدم الـ Sql المتصل به .

للإختبار ببساطة اكتب :

EXEC master..xp_getnetname

11- xp_readerrorlog :

هذه الدالة أيضاً رائعة .. فقط جربها ستعرف لماذا .. تعطيك قائمة واضحة بالأخطاء التي ارتكبتها سابقاً ..

للتجربة فقط أكتب :

EXEC master..xp_readerrorlog

----------------------

هل وصلنا إلى مسجل النظام ؟؟ !! .. نعم يا أخي الكريم و هذا شرح للدوال العاملة مع Registry :

12- xp_regdeletekey :

حذف مفتاح بالكامل من الـ Registry :

الصيغة العامة للأمر :

EXECUTE xp_regdeletekey [@rootkey=]'rootkey',
[@key=]'key'

تريد أن تجرب ؟ طبعاً .. فالعلم تجربة ونتيجة !

أنشئ المفتاح 'SOFTWARE\Test' على الجذر 'HKEY_LOCAL_MACHINE'

لكي تحذفه أكتب مايلي :

EXEC master..xp_regdeletekey
@rootkey='HKEY_LOCAL_MACHINE', 
@key='SOFTWARE\Test'

شلون الدالة ؟ تمام ؟

13- xp_regdeletevalue :

حذف قيمة مفتاح في الريجيستري , استخدمها بحذر يا أخي الكريم ...

فربما تسبب الدالتين السابقتين لك متاعب في حال استخدامها بشكل غير صحيح .

الصيغة :

EXECUTE xp_regdeletevalue [@rootkey=]'rootkey',
[@key=]'key',
[@value_name=]'value_name'

أنشئ مجدداً المفتاح الذي قمت بحذفه 'SOFTWARE\Test' على الجذر 'HKEY_LOCAL_MACHINE' وضع له قيمة ما :

EXEC master..xp_regdeletevalue
@rootkey='HKEY_LOCAL_MACHINE',
@key='SOFTWARE\Test',
@value_name='TestValue'

14- xp_regread :

لقراءة قيمة مفتاح في الريجيستري .. استخدم هذه الدالة بالشكل :

EXECUTE xp_regread [@rootkey=]'rootkey',
[@key=]'key'
[, [@value_name=]'value_name']
[, [@value=]@value OUTPUT]

للتجربة و الإختبار :

ضع قيمة للمفتاح الذي أنشأته : 'SOFTWARE\Test' على الجذر 'HKEY_LOCAL_MACHINE' , ضع فيه قيمة و أسمها TestValue

وضع لها قيمة ما كاسمك مثلاً :

واكتب :

DECLARE @test varchar(20)

EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key='SOFTWARE\Test',
@value_name='TestValue',
@value=@test OUTPUT

SELECT @test

15- xp_regwrite :

أكتب في الريجيستري أيضاً بواسطة هذه الدالة :

الصيغة :

EXECUTE xp_regwrite [@rootkey=]'rootkey',
[@key=]'key',
[@value_name=]'value_name',
[@type=]'type',
[@value=]'value'

مثلاً لكي تكتب القيمة النصية : 'Test' ضمن القيمة 'TestValue' للمفتاح 'SOFTWARE\Test' الموجود على الجذر 'HKEY_LOCAL_MACHINE' :

أكتب :

EXEC master..xp_regwrite
@rootkey='HKEY_LOCAL_MACHINE',
@key='SOFTWARE\Test',
@value_name='TestValue',
@type='REG_SZ',
@value='Test'

16- xp_subdirs :

هذه الدالة نفس الدالة التي تحدثنا عنها xp_dirtree ولكن أقل إمكانية منها ..

حيث أنها تعيد المجلدات الموجوة في المسار المحدد لها بدون المجلدات الفرعية لكل منها , كما تفعل xp_dirtree .

أي أن عمق المجلدات depth الذي تجلبه هذه الدالة = 1 .

مثال :

EXEC master..xp_subdirs 'C:\'

ملاحظة : هذه الدوال ليست مدعومة كثيراً من قبل Microsoft وربما ستقوم بتغييب بعضها عن الإصدارات القادمة من Sql Server

ولكن :

مع هذا فإنها تقوم بأعمال لابأس بها و تفيد في كثير من المواطن ..

أسأل الله أن يجعل في هذه الدوال الخير العميم و الفائدة .. أتمنى منكم دعوة صادقة في ظهر الغيب .

تم تعديل هذه المشاركة بواسطة imadouzoun في 8 أبريل 2006 في 16:37

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#6

ماشاء الله عليك الله يوفقك :)

هذا الموضوع مغلق.

مواضيع مشابهة