السلام عليكم ورحمة الله وبركاته :
إخواني الكرام دعوني أمهد كالتالي :
مع تزايد أهمية العمل مع الـ (Common Language Run-Time)
أو اختصاراً CLR و الإستفادة من الكود المدار بالحد الأقصى بدأت MicroSoft تعمل على جعل Sql Server
تستفيد أيضاً من مقدرات بيئة الـ Dot Net الغنية عن التعريف في الوقت الراهن ..
فأصبح لدينا الآن ما تسميه MicroSoft ( باستضافة Sql Server 2005 لـ بيئة Dot Net ) ..
على كل لن أطيل كثيراً في كلام نظري .. و سأبدأ بمثال عملي واقعي ..
بسم الله نبدأ :
لنفتح الآن Visual Studio و لنقم بكتابة كلاس بسيط :
ستجد مع المرفقات مشروع بسيط بلغة C# قمت بإنشائه لبناء مكتبة DLL والتي سنستخدم دوالها في الـ Sql Server 2005 .
قم بالدخول إلى المسار bin\Release داخل مجلد المشروع لتصل إلى مكتبة DLL اسمها dllStart.dll
هل وجدتها ؟ .. سأفترض ذلك و أكمل .. إنسخ هذه المكتبة و ضعها على السواقة ( \:C ) على حاسبك لكي نسهّل كتابة المسارات ..
لنفتح الآن ( Sql Server Management Studio ) الخاص بالـ ( Sql Server 2005 ) ..
طبعاً نسخة Developer مش الـ Express .. :)
و ننشئ قاعدة بيانات لتجربتنا و لتكن : test_2005
و لكن ماذا بعد ؟
إبدأ New Query و ضع فيه الكود التالي ( بعد أن تقرأه ) :
Use test_2005
Go
-- تضمين المكتبة السابقة الذكر في قاعدة البيانات
Create Assembly dllStart From 'C:\dllStart.dll'
Go
-- كالتالي CLR يجب عليك أن تفعل الخيار استخدام الـ
EXEC sp_configure 'clr enabled', '1';
RECONFIGURE WITH OVERRIDE;
GO
--------------
-- كإجرائيات و دوال مخزنة في قاعدة بياناتنا التي أنشأناها للتو DLL الآن دعنا نضمن الدوال و الإجرائية التي الموجودة في مكتبة الـ
create function Get_Number()
Returns float
External Name dllStart.CStart.Get_Number
GO
-- test it
Select dbo.Get_Number() AS [Value]
Go
--------------
create function Cur_Date()
Returns datetime
External Name dllStart.CStart.[Current_Date]
GO
-- test it
Select convert(Varchar(10), dbo.Cur_Date(), 103) AS [Current_date]
Go
--------------
Create function Get_Minutes( @dt NVarchar(10) )
Returns NVarchar(10)
External Name dllStart.CStart.Get_Minutes
Go
-- test it
Select dbo.Get_Minutes('12:24') AS Minutes
GO
--------------
Create proc doWhile
AS External Name dllStart.CStart.doWhile
Go
-- test it
Exec doWhile
GO
--------------سيأتي التفصيل في مراحل قادمة لأن الطريقة فقط في Sql Server 2005 و لم تكن في
Sql Server 2000 لذا لا بد أن تكون مبهمة نوعاً ما على كثير من الإخوة ..
لكن إن شاء الله سنفصل في المستقبل القريب - إذا أحيانا الله لحينها - .
بالتوفيق :)