02-10-12, 12:38 AM
السلام عليكم اخواني واحبائي...
اعود اليكم اليوم لأكمال الحلقات حول السيكوال سيرفر 2012 وما جاء به من جديد التي تسر الصديق وتبغض العدو ^_^ لمتابعة الحلقة الاولى (http://vb4arb.com/vb/showthread.php?362-...erver-2012)
الكل يعلم ان السيكوال سيرفر في اتجاه Developer قد جاء بأنقلابات ثورية في مجال تعزيز الـ virtualization بالاضافة الى دعم Cloud Server من اجل تثبيت نفسها في سوق Cloud application
لنبدأ على بركة الله
1-SEQUENCE Object
لعل اول ميزة قد تجلب الانتباه والتي تم تسليط الضوء عليها كثيرآ من قبل مايكروسوفت هو SEQUENCE Object وهو عبارة عن كائن تسلسلي يستخدم من اجل انشاء سلسلة من القيم الرقمية استنادآ الى الخصائص التي حددت اثناء انشاءه, من ميزاته هو اننا نستطيع ان ننشأ هذا الكائن ويقوم بتوليد قيم بشكل تصاعدي او تنازلي وكذلك يمكننا من ان نقوم بأعداد هذا الكائن لكي يدور ويعيد نفسه من البداية عند وصوله للنهاية (اي يدور بنفس الحلقة التكرارية ) ,وعالعكس من خاصية Columns Identity فأنه لا يرتبط مع الجداول >>
الجميل بهذا الكائن الجديد أنه بأمكانك ان تقوم بأستدعاء القيمة الجديدة للمتسلسلة وان تتوقعها وذلك من خلال جملة NEXT VALUE FOR SeqNAme.
يجدر بالاشارة ان العلاقة بين هذا الكائن والجداول تتم عن طريق البرامج والتطبيقات
جملة انشاء هذا الكائن
مثال حول انشاء هذا الكائن
لشرح الكود السابق نجد ان الكائن السلسلة يبدأ عند القيمة 1 ويزداد بمقدار واحد في كل مرة يتم استدعاء Next value for كما انه ليس هناك حد اقصى لهذا Sequence اي انه سوف يتكرر الى مالانهاية
مع الملاحظة ان القيمة التي ابتدأ بها (start with) هذا الكائن يجب ان تكون قيمة لا تكون اكبر او تساوي الـ MaxValue وبنفس الوقت يجب ان تكون أقل او تساوي الـ Minvalue, وفي حالة عدم ذكر قيمة الخاصية Start with فأنها سوف تأخذ القيمة الافتراضية والتي تساوي الـ minvalue
مثال ثاني
شرح المثال :نجد ان الكائن Sequence يبدأ بالقيمة -10 ويزداد بمقدار واحد وصولآ للقيمة 10 وكذلك في هذا المثال نجد ان الخاصية Cycle فعالة اي انه بمجرد ان تنتهي الدورة الاولى للـ Sequence سوف يعيد نفسه ولكن هذه المرة ليس من نفس المنطقة التي انطلق منها بل من قيمة الحد الادنى.....
ولاستخدام قيم الـ Sequence نقوم بأستخدام جملة"NEXT VALUE FOR " كما ذكرنا سابقآ كالمثال التالي
الكود الاخير يقوم بأسترجاع القيمة الحالية للكائن testSchema.eGilgameshSeq مهما كانت قيمته ومن ثم يقوم بزيادته حسب ما جاء في الـ Rule عندما انشئناه
اسلوب اخر لأستخدام هذا الكائن في جملة الـ Insert
كما يمكننا من اسناد قيمته لمتغير خاص كما في المثال التالي
يتبقى ان نشير الى فائدة الخاصية CACHE , فهي تقوم بزيادة فعالية وتحسين اداء التطبيقات التي تستخدم الكائن sequence وذلك من خلال تقليل عدد الـ disk IOs المستخدمة والمطلوبة لأنشاء وتوليد المتسلسلة الرقمية
على سبيل المثال، إذا تم اختيار CACHE من 50، SQL Server لايقوم بالاحتفاظ بـ 50 قيمة مخزنة بشكل مؤقت. بل انه يقوم فقط بتخزين القيمة الحالية وترك عدد من القيم الموجودة في ذاكرة التخزين المؤقت. هذا يعني أن كمية الذاكرة المطلوبة لتخزين ذاكرة التخزين المؤقت هو دائما عبارة عن two instances من نوع بيانات كائن التسلسل.
يجدر الاشارة الى أن هذا الكائن هو كائن مرتبط بالسكيما حاله حال العناصر الاخرى المتواجدة في السيكوال....
اي ان استخدام احد هذه الجمل CREATE SEQUENCE, ALTER,control يحتاج الى صلاحية (permission) في السكيما التي سوف يرتبط بها هذا الكائن وذلك عن طريق
اعطاء التخويل بالـ Database rule التالي
1-db_owner و db_ddladmin لكي يمكننا من استخدام Create ,Control,Alter
2-db_owner و db_datawriter لكي يمكننا من استخدام جملة "next value for " من اجل استدعاء القيمة الجديدة للـ Sequence .
وللمزيد من المعلومات حول هذا الكائن تفضل بزيارة الرابط
http://msdn.microsoft.com/en-us/library/....110).aspx
اعود اليكم اليوم لأكمال الحلقات حول السيكوال سيرفر 2012 وما جاء به من جديد التي تسر الصديق وتبغض العدو ^_^ لمتابعة الحلقة الاولى (http://vb4arb.com/vb/showthread.php?362-...erver-2012)
الكل يعلم ان السيكوال سيرفر في اتجاه Developer قد جاء بأنقلابات ثورية في مجال تعزيز الـ virtualization بالاضافة الى دعم Cloud Server من اجل تثبيت نفسها في سوق Cloud application
لنبدأ على بركة الله
1-SEQUENCE Object
لعل اول ميزة قد تجلب الانتباه والتي تم تسليط الضوء عليها كثيرآ من قبل مايكروسوفت هو SEQUENCE Object وهو عبارة عن كائن تسلسلي يستخدم من اجل انشاء سلسلة من القيم الرقمية استنادآ الى الخصائص التي حددت اثناء انشاءه, من ميزاته هو اننا نستطيع ان ننشأ هذا الكائن ويقوم بتوليد قيم بشكل تصاعدي او تنازلي وكذلك يمكننا من ان نقوم بأعداد هذا الكائن لكي يدور ويعيد نفسه من البداية عند وصوله للنهاية (اي يدور بنفس الحلقة التكرارية ) ,وعالعكس من خاصية Columns Identity فأنه لا يرتبط مع الجداول >>
الجميل بهذا الكائن الجديد أنه بأمكانك ان تقوم بأستدعاء القيمة الجديدة للمتسلسلة وان تتوقعها وذلك من خلال جملة NEXT VALUE FOR SeqNAme.
يجدر بالاشارة ان العلاقة بين هذا الكائن والجداول تتم عن طريق البرامج والتطبيقات
جملة انشاء هذا الكائن
كود :
CREATE SEQUENCE [schema_name . ] sequence_name
[ AS [ built_in_integer_type | user-defined_integer_type ] ]
[ START WITH <constant> ]
[ INCREMENT BY <constant> ]
[ { MINVALUE [ <constant> ] } | { NO MINVALUE } ]
[ { MAXVALUE [ <constant> ] } | { NO MAXVALUE } ]
[ CYCLE | { NO CYCLE } ]
[ { CACHE [ <constant> ] } | { NO CACHE } ]
[ ; ]
مثال حول انشاء هذا الكائن
كود :
CREATE SEQUENCE testSchema.eGilgameshSeq
START WITH 1
INCREMENT BY 1
MINVALUE 1
NO MAXVALUE
NO CYCLE;
لشرح الكود السابق نجد ان الكائن السلسلة يبدأ عند القيمة 1 ويزداد بمقدار واحد في كل مرة يتم استدعاء Next value for كما انه ليس هناك حد اقصى لهذا Sequence اي انه سوف يتكرر الى مالانهاية
مع الملاحظة ان القيمة التي ابتدأ بها (start with) هذا الكائن يجب ان تكون قيمة لا تكون اكبر او تساوي الـ MaxValue وبنفس الوقت يجب ان تكون أقل او تساوي الـ Minvalue, وفي حالة عدم ذكر قيمة الخاصية Start with فأنها سوف تأخذ القيمة الافتراضية والتي تساوي الـ minvalue
مثال ثاني
كود :
CREATE SEQUENCE testSchema.eGilgameshSeq2
START WITH -10
INCREMENT BY 1
MINVALUE 1
MAXVALUE 10
CYCLE;
شرح المثال :نجد ان الكائن Sequence يبدأ بالقيمة -10 ويزداد بمقدار واحد وصولآ للقيمة 10 وكذلك في هذا المثال نجد ان الخاصية Cycle فعالة اي انه بمجرد ان تنتهي الدورة الاولى للـ Sequence سوف يعيد نفسه ولكن هذه المرة ليس من نفس المنطقة التي انطلق منها بل من قيمة الحد الادنى.....
ولاستخدام قيم الـ Sequence نقوم بأستخدام جملة"NEXT VALUE FOR " كما ذكرنا سابقآ كالمثال التالي
كود :
SELECT NEXT VALUE FOR testSchema.eGilgameshSeq as IdentityFromSequence;
الكود الاخير يقوم بأسترجاع القيمة الحالية للكائن testSchema.eGilgameshSeq مهما كانت قيمته ومن ثم يقوم بزيادته حسب ما جاء في الـ Rule عندما انشئناه
اسلوب اخر لأستخدام هذا الكائن في جملة الـ Insert
كود :
INSERT testTable (myColumn)
VALUES (NEXT VALUE FOR testSchema.eGilgameshSeq);
كما يمكننا من اسناد قيمته لمتغير خاص كما في المثال التالي
كود :
SET @x=NEXT VALUE FOR testSchema.eGilgameshSeq;
يتبقى ان نشير الى فائدة الخاصية CACHE , فهي تقوم بزيادة فعالية وتحسين اداء التطبيقات التي تستخدم الكائن sequence وذلك من خلال تقليل عدد الـ disk IOs المستخدمة والمطلوبة لأنشاء وتوليد المتسلسلة الرقمية
على سبيل المثال، إذا تم اختيار CACHE من 50، SQL Server لايقوم بالاحتفاظ بـ 50 قيمة مخزنة بشكل مؤقت. بل انه يقوم فقط بتخزين القيمة الحالية وترك عدد من القيم الموجودة في ذاكرة التخزين المؤقت. هذا يعني أن كمية الذاكرة المطلوبة لتخزين ذاكرة التخزين المؤقت هو دائما عبارة عن two instances من نوع بيانات كائن التسلسل.
يجدر الاشارة الى أن هذا الكائن هو كائن مرتبط بالسكيما حاله حال العناصر الاخرى المتواجدة في السيكوال....
اي ان استخدام احد هذه الجمل CREATE SEQUENCE, ALTER,control يحتاج الى صلاحية (permission) في السكيما التي سوف يرتبط بها هذا الكائن وذلك عن طريق
اعطاء التخويل بالـ Database rule التالي
1-db_owner و db_ddladmin لكي يمكننا من استخدام Create ,Control,Alter
2-db_owner و db_datawriter لكي يمكننا من استخدام جملة "next value for " من اجل استدعاء القيمة الجديدة للـ Sequence .
وللمزيد من المعلومات حول هذا الكائن تفضل بزيارة الرابط
http://msdn.microsoft.com/en-us/library/....110).aspx