SQL Server 2014
SQL Server 2014
إعداد:
أٌ.اسٌن ٌوسف األسطل
فرع رفح
جذٚي اٌّذز٠ٛبد
مقدمة3 ........................... ................................ ................................ ................................ :
تشغيل برنامج 4 ............. ................................ Microsoft SQL Server 2014 Management Studio
إنشاء قاعدة بيانات6 ............ ................................ ................................ ................................ :
إنشاء جدول9 .................... ................................ ................................ ................................ :
أنواع البيانات11 ................ ................................ ................................ ................................ :
مخطط قاعدة البيانات (مخطط العالقات) 13 ..................... ................................ ................................
ادخال البيانات في الجدول 16 .................................... ................................ ................................
عزض البياناث17 ............... ................................ ................................ ................................ :
القيود 18 ...................................... ................................ ................................ :Constraints
القيد على جدول 19 ............... ................................ ................................ :Table Constraint
القوادح 22 ......................................... ................................ ................................ :Triggers
أنواع القوادح 22 ........................ ................................ ................................ :Trigger Types
إنشاء قادح 22 .................................... ................................ ................................ :Trigger
2
هقذهت:
٠غد Microsoft SQL Serverأدذ أفعً أٔظّخ خٛادَ لٛاػذ اٌج١بٔبد اٌؼالئم١خ
،)RDBMS( Relational Database Management Systemاٌز ٟرّزبص ثبٌىفبءح اٌؼبٌ١خ
ٚاألداء اٌّزّ١ض ف ٟرصّ ُ١لٛاػذ ث١بٔبد ػالئم١خ ِزىبٍِخِٚ ،شٔخ االعزخذاَّ٠ٚ ،ىٓ سثطٙب ِغ
ثشاِج أخشِ ٜثً ٚ C#غ١ش٘بٚ ،رُ ربص ثذسجخ ػبٌ١خ جذاًا ِٓ األِبْ .Security
ٔٚظبَ ٌ SQL Serverذ ٗ٠اٌمذسح ػٍ ٝرخض ٓ٠وُ ٘بئً ِٓ اٌّؼٍِٛبد ٠صً ئٌ ٝأالف اٌّ١جب
ثب٠ذٚ ،ثبعزطبػزٗ ادزٛاء أوثش ِٓ لبػذح ث١بٔبد ٚادذح.
ٌمذ غٛسد ششوخ ِب٠ىشٚعٛفذ ِذشن لٛاػذ اٌج١بٔبد ِٓ أجً سفغ لذسد اٌّغزخذِ ِٓ ٓ١خالي
ِششٚع جذ٠ذ ٠ذػ “Hekaton ” ٝاٌز ٞرُ االفصبح ػٕٗ ػبَ ( )2013خالي اٌّإرّش اٌؼبٌّٟ
ـي ) ٚ PASS ( Professional Association for SQL Serverاٌز ٞشىً ٔمطخ رذٛي
دم١م١خ ف ٟرطٛس االداء ٠زشاٚح ِٓ 10اظؼبف ئٌ 30 ٝظؼف ِٓ غ١ش رؼذ ً٠جزسٌ ٞألوٛاد،
ٚثٕب ًاء ػٍ ٝرىٌٕٛٛج١ب اٌزاوشح اٌّذِجخ ) ٚ ( In Memory Built inاٌز ٟال رذزجض أِٓ ٞ
ِٛاسد اٌزاوشح االدز١بغ١خ ) ٚ (Bufferال رعطش ئٌ ٝدجض صفذبد ف ٟلبعدح اٌج١بٔبد اٌشئ١غ١خ
) TempDB ( Page latchإلجشاء ػٍّ١بد اٌزذذ٠ث ٚاٌذزف ٚاإلدخبي ٌٍج١بٔبد.
ٌمذ رّ١ضد MS SQL Server 2014ثطش٠مخ رخض ٓ٠اٌج١بٔبد ف ٟاٌجذاٚي اٌّطٛسح ثزىٌٕٛٛج١ب
اٌزاوشح اٌّذِجخ )ٌٍ ( Memory Optimized tableذفبظ ػٍ ٝاٌج١بٔبد ػٕذ ئػبدح رشغ ً١خبدَ
،MS SQL Serverوّب ٘ ٛاٌذبصً ف ٟوث١ش ِٓ ِذشوبد لٛاػذ اٌج١بٔبد االخشٚ ،ٜفعال
ػٓ رٌه أصجخ ئٔشبء أوٛاد ِزشجّخ ) (Stored Procedureف ٟشىً ٍِفبد ثشِج١خ ِٓ ٔٛع
ِ dllثٍٙب ِثً أوٛاد ٌغبد اٌجشِجخ األخشِّ ،ٜب أد ٜئٌ ٝاٌزػٚس ف ٟػٍّ١بد اٌذزف ٚاالدخبي
ٌٍج١بٔبد ثذجُ ْٛ١ٍِ 1عجً ف ٟدٛاٌ ٟألً ِٓ ثبٔ١ز ٓ١يِذشن لٛاػذ ث١بٔبد MS SQL
ِٓ Server 2014غ١ش اٌزأث١ش اغاللب ػٍ ٝػٍّ١بد اٌّغزخذِ ٓ١األخش ٜألْ ػٍّ١خ اٌذزف ٠زُ
آٔ( ٟ أخش ٜثّغخ ٘زٖ اٌج١بٔبد ف ٟشىً غ١ش رشِ١ض٘ب ٌٍذزف ٚعزز ٌٝٛػٍّ١خ
) ِAsynchronousغ ػٍّ١بد اٌّغزخذِ ٓ١األخشٚ ، ٜغٛس MS SQL Server 2014
ثبٌفٙبسط اٌؼّٛد٠خ اٌؼٕمٛد٠خ ) (Clustered Column store indexثبعزخذاَ رىٌٕٛٛج١ب
اٌزاوشح اٌّذِجخ ٌ In memory built inى ٟرصجخ فٙبسط ػّٛد٠خ ػٕمٛد٠خ ّ٠ىٓ رطج١مٙب
ػٍ ٝاٌج١ئخ اٌذ١خ ٌمٛاػذ ا ٌج١بٔبد ِٓ غ١ش ا ٞرؼبسض ِغ ػٍّ١بد اٌزذذ٠ث ٚاإل دخبي ٚاٌذزف
!!…
ٌمذ دمك ثشٔبِج MS SQL Server 2014غفشح جذ٠ذح ف ٟدػُ اٌج١ئخ اٌغذبث١خ
(ٚ ،)Cloudingاٌشىً اٌج١بٔ ٟاٌزبٌٛ٠ ٟظخ اٌّض٠ذ ِٓ اٌّؼٍِٛبد ػٓ ِشادً رطٛس ِذشوبد
لٛاػذ اٌج١بٔبد ِٓ اصذاس .MS SQL Server 2000ئٌMS SQL Server 2014 ٝ
3
تطوير منصة قواعد البيانات
4
عزٌزي الطالب :نشاهد من الشكل السابق خٌار Server typeوالتً تعنً نوع قاعدة البٌانات
التً سوف نستخدمها ،فنختار Database Engineالخاصة فً تصمٌم جداول قاعدة البٌانات
والتعامل معها ،تم نختار اسم خادم قاعدة البٌانات ( )Server nameالتً تم انشاءه اثناء عملٌة
تثبٌت ،Ms SQL Server 2014تم نضغط على Connectلالتصال بقاعدة البٌانات الخاصة
بك ،أو ٌمكن كتابة ( )Server nameأسم الخادم (\ ،).وٌعنً االتصال بخادم البٌانات المحلً
االفتراضً ،وتعنً Authenticationالدخول كمدٌر لـ serverدون الحاجة إلى اسم
المستخدم ( )User nameأو كلمة مرور ( ،)Passwordوتأخذ مستخدم وٌندوز Windows
،Authenticationأو اختٌار ،SQL Server Authenticationتم ٌظهر بعد عملٌة
االتصال بخادم قاعدة البٌانات الشكل التالً:
تتكون واجهة SQL Server 2014من شرٌط العنوان وشرٌط القوابم وشرٌط األدوات
Standardومتصفح الكابنات Object Explorerالتً ٌتكون من مجموعة من المجلدات كما
فً الشكل التالً:
5
٠زىِ ْٛزصفخ وبئٕبد لبػذح اٌج١بٔبد ِٓ اٌخبدَ Serverاٌز ٞرُ االرصبي ثٗ اٌز٠ ٞذز ٞٛػًٜ
ِجّٛػخ ِٓ اٌّجٍذاد ٘ : ٟلبػذح اٌج١بٔبد ِٚ ،Databasesجٍذ األِبْ ِٚ ،Securityجٍذ
ِٚ ،Replicationجٍذ االداسح وبئٕبد اٌخبدَ ِٚ ،Server Objectsجٍذ اٌزؼش٠فبد
ٚ ،Managementع١زُ الدمب رٛظ١خ ٌجؼط اٌّجٍذاد اٌّزوٛسح أٔفب.
أِب شش٠ػ أدٚاد ايخبصح ثّزصفخ اٌىبئٕبد اٌز٠ ٞزى ِٓ ْٛاالرصبي ثمبػذح اٌج١بٔبد
(ّ٠ٚ ،)Connectىٓ اخز١بس ٔٛع لبػذح اٌج١بٔبد اٌزٛ٠ ٟد االرصبي ثٙبٚ ،ا٠مْٛاد االرصبي ٚلطغ
ٚ ،ا٠مٔٛخ Refresh ٚ ،ا٠مٔٛخ Filter ٚ ،ا٠مٔٛخ Stop االرصبي ثبٌخبدَ
. ٚ ،ا٠مٔٛخ show policy
6
نكتب أسم قاعدة البٌانات فً
Database Name
ٔم َٛثزغّ١خ لبػذح اٌج١بٔبد اٌخبص ثٕب فٚ ،)Database Name( ٟئرا أسدٔب اخز١بس ِبٌه لبػذح
اٌج١بٔبد ٔخزبس ِٓ Ownerاٌّبٌهٚ ،ئرا أسدٔب أشبء لبػذح ث١بٔبد ثبٔ١خ فٕعغػ ػٍ،Add ٝ
٠ظٙش اعُ لبػذح اٌج١بٔبد ف ٟلبئّخ .Database
ٚاظبفخ لبػذح ث١بٔبد ثبٔ١خ ،رُ ٔعغػ ػٍ ،ok ٝف
ٚاخز١بس اعُ ػض٠ض ٞاٌطبٌت ّ٠ :ىٓ رذذ٠ذ اٌّبٌه ٌمٛاػذ اٌج١بٔبد ِٓ خالي اٌعغػ ػٍٝ
اٌّغزخذَ اٌز ٌٗ ٞصالد١خ ػٍ ٝلبػذح اٌج١بٔبد إٌّشأح أ ٚرشوٙب ثذ ْٚرذذ٠ذ Defaultاٌز ٟرّىٓ
جّ١غ اٌّغزخذِ ِٓ ٓ١اٌزؼبًِ ِؼٙب.
صس ثبٌعغػ ػٍٝ االعزؼالَ ِٓ خالي ّ٠ٚىٓ ػض٠ض ٞاٌطبٌت أشبء لبػذح ث١بٔبد
ِٓ شش٠ػ األدٚاد ،أ ٚثبٌعغػ ػٌٍٛ ِٓ Ctrl+N ٝدخ اٌّفبر١خ ٌفزخ اعزؼالَ
٠ظٙش ٌٕب اٌشىً اٌزبٌٔٚ ٟىزت ف ٟداخٍٙب االِش
جذ٠ذ new Queryف
اعُ لبػذح اٌج١بٔبد CREATE DATABASE
ِٓ شش٠ػ األدٚاد ،ف١زُ أشبء لبػذح ث١بٔبد ثبعُ ٚ test1ئرا أسدٔب رُ ٔعغػ ػٍٝ
أشبء اعزؼالَ أ ٚجذٚي فٕغزجذي وٍّخ ) )databaseثـ Tableإلٔشبء جذٚي أ Query ٚإلٔشبء
اعزؼالَ٘ٚ ،ىزا.
7
ٚيِشب٘ذح لبػذح اٌج١بٔبد اٌز ٟرُ أشبئٙب ٔعغػ ثبٌضس األ ّٓ٠ػٍ ٝلبػذح اٌج١بٔبد ٔٚخزبس أِش
ِٓ ،Refreshا ٚثبٌعغػ ػٌٍٛ ِٓ F5 ٝدخ اٌّفبر١خ ،أ ٚاٌعغػ ػٍ ٝاأل٠مٔٛخ اٌزبٌٟ
شش٠ػ األدٚاد اٌخبص ةِزصفخ اٌىبئٕبد ،فٔشب٘ذ لبػذح اٌج١بٔبد اٌز ٟرُ أشبؤ٘ب داخً ِجٍذ
.Database
ػض٠ض ٞاٌطبٌت ٌٛ :أسدٔب ِؼشف ِىبْ لبػذح اٌج١بٔبد اٌز ٟرُ أشبؤ٘ب عبثمبٔ ،ز٘ت ئٌ ٝاٌّغبس
C:\program files\Microsoft SQL
server\MSSQL11.MSSQLSERVER\MSSQL\DATA
فٕجذ لبػذح اٌج١بٔبد اٌز ٟرُ أشبؤ٘ب ٚرزىًِ ِٓ ْٛفبْ ّ٘ب:
Test1.MDF
Test1_log.LDF
ف١غزخذَ العزؼبدح لبػذح ،أِب اٌٍّف اٌثبٟٔ فبٌٍّف األٚي ٠ذز ٞٛػٍ ٝلبػذح اٌج١بٔبد اٌفؼٍ١خ
اٌج١بٔبد.
أ٠عب ػض٠ض ٞاٌطبٌت ّ٠ىٓ ِشب٘ذح ٍِفبد لبػذح اٌج١بٔبد ِٓ خالي اٌعغػ ثبٌضس األ ّٓ٠ػٍٝ
٠ظٙش اٌشىً اٌزبٌ:ٟ
لبػذح اٌج١بٔبد رُ ْخزبس Propertiesف
8
ِٓ لبئّخ ٠ Filesزُ ػشض اٌٍّفبد اٌخبص ح ثمبػذح اٌج١بٔبد ،أ٠عب ّ٠ىٓ ئظبفخ لبػذح ث١بٔبد
جذ٠ذح ِٓ خالي اٌعغػ ػٍ ،Add ٝأ ٚدزف ٍِفبد لبػذح اٌج١بٔبد ِٓ خالي اٌعغػ ػٍٝ
ِٓٚ ،Removeخالي ّ٠ Permissionsىٓ ئػطبء صالد١بد ٌٍّغزخذِ ٓ١ػٍ ٝلبػذح اٌج١بٔبد
ٚاٌز ٟعٛف ٔزطشق اٌٙ١ب الدمب.
إنشاء جذول:
كٌف انشاء قاعدة البٌانات ،وسنتناول فً هذا البند طرق انشاء عزٌزي الطالب :ذكرنا سابقا ً ة
جدول أو جداول داخل قاعدة البٌانات لمستخدمً قاعدة البٌانات التً تم انشا ئها سابقاً ،والٌكم
طرٌقة انشاء جدول داخل قاعدة البٌانات.
.1نقوم بتوسٌع قاعدة البٌانات التً تم انشابها مسبقا ً بالضغط على )(DB name
فتظهر قابمة من المجلدات منها Tablesالخاصة بإنشاء الجداول.
ٌظهر الشكل التالً:
.2نضغط على Tablesبالزر األٌمن للفارة ف
9
من هذه الشكل نستطٌع انشاء سجالت من البٌانات ،حٌث تدل Column Nameعلى أسم
نصً أم تارٌخ )...
ة العمود ،فً السجل ،أما Data Typeفتدل على نوع البٌانات (رقمٌة أم
فً وسوف نتطرق لها بالتفصٌل الحقاُ ،أما Allow Nullsفتعنً عند وضع إشارة صح
المربع أمام الحقل ،فً كون إدخال البٌانات اختٌاري ،أي ٌمكن ترك هذا الحقل بدون ادخال
فٌجب ادخال البٌانات دخال الحقل اجباري البٌانات الٌه ،أما إذا ترك بدون وضع اإلشارة
وال ٌمكن االنتقال للحقل التالً إال بعد ادخال البٌانات فً الحقل.
عزٌري الطالب :لتحدٌد المفتاح األساسً Primary Keyلحقل معٌن فً الجدول نضغط
بالزر األٌمن على السهم بجانب الحقل ،فتظهر لنا قابمة بالشكل التالً ،فنختار Set Primary
Keyلتعٌٌن مفتاح أساسً للحقل فً الجدول ،أو ٌمكن ادخال عمود جدٌد بالضغط على
Insert Columnأو حذف عمود كذلك من خالل Delete Columnأو غٌر ذلك من القابمة.
أو من خالل قابمة ملف تم وٌمكن حفظ الجدول من خالل إشارة حفظ فً شرٌط األدوات
حفظ الجدول ،او بالضغط على مفاتٌح االختصار لعملٌة الحفظ ،Ctrl+Sولتأكٌد حفظ الجدول
نذهب إلً قابمة جداول Tablesونعمل Refreshفنجد الجدول التً تم انشاءه.
عزٌزي الطالب ٌ :مكن انشاء جدول من خالل استعالم بالضغط على أٌقونة
من شرٌط األدوات ،أو بالضغط على Ctrl+Nمن لوحة المفاتٌح ،أو بالزر األٌمن على قاعدة
تم نكتب االستعالم التالً: البٌانات التً تم انشاءها ونختار
10
Create Table course
( course_no nvarchar(10) not null primary key,
course_name nvarchar(200) not null,
) marks bigint not null
من شرٌط وبعد كتابة االستعالم السابقة نظلل الكتابة لٌتم تنفٌذها فقط ونضغط على
األدوات ،أو الضغط على F5من لوحة المفاتٌح ،فٌتم انشاء جدول جدٌد باسم courseفً
قاعدة البٌانات التً تم انشابها سابقا ،ولتأكٌد نعمل Refreshلمجلد الجداول ( )Tablesفنجد
الجدول courseبداخله ،مع العلم أن المفتاح األساسً ( )Primary Keyللجدول ٌعتبر من
القٌود .Constraints
ٌحتوي على مجموعة من عزٌزي الطالب قم بتوسٌع الجدول الذي تم انشاءه لنالحظ أنه
المجلدات كما فً الشكل التالً:
مجلد االعمدة (ٌ )Columnsحتوي على كافة االعمدة التً تم انشاؤها فً الجدول. .1
مجلد المفاتٌح ٌ Keysحتوي على مفاتٌح الحقل مثل المفتاح األساسً ( Primary .2
،)Keyأو المفتاح األجنبً ( )Foreign Keyوغٌره.
مجلد القٌود ) (Constraintsفٌحتوي على جمٌع القٌود على الجدول أو األعمدة، .3
وسوف نتطرق له بالتفصٌ ًل.
مجلد القوادح Triggersوهو إجرا ء او أمر ٌتم تنفٌذه بنا ًء على تنفٌذ احدى عملٌات .4
اإلضافة أو التحدٌث أو الحذف للحفاظ على سالمٌة البٌانات.
مجلد الفهارس :Indexedوهً عبارة عن هٌاكل مرتبطة بالجدول ،تشٌر على .5
السجالت الفعلٌة بداخل الجدول.
مجلد االحصابٌات :Statisticsيحتوي على معلومات عن البٌانات ،وكٌفٌة توزيع .6
البٌانات داخل الجدول.
أنىاع البياناث:
تنقسم البٌانات فً SQL Serverإلى أربعة فبات هً:
البٌانات الرقمٌة. .1
البٌانات النصٌة. .2
البٌانات المنطقٌة. .3
البٌانات الخاصة بالتارٌخ/الوقت. .4
11
أوالً البٌانات الرقمٌة:
نوع البٌانات السعة التخزٌنٌة
وصف البٌانات
Data Type
BigInt أرقام صحٌحة 8 Bytes
Int أرقام صحٌحة 4 Bytes
SmallInt أرقام صحٌحة 2 Bytes
Tinyint أرقام صحٌحة 1 byte
bytesوصف
Decimal 0-9 5
أو أرقام عشرٌة 19-10 9
Numeric 28-20 13
38-29 17
Money أرقام عشرٌة 8 bytes
Smallmoney أرقام عشرٌة 4 bytes
Float أرقام عشرٌة 4 – 8 bytes
Real أرقام عشرٌة 4 bytes
12
ثالثا :البٌانات المنطقٌة:
نوع البٌانات السعة التخزٌنٌة
وصف البٌانات
Data Type
bit Yea/No, T/F, 0/1 1byte
المفتاح األجنبً ٌتم فً مخطط العالقات ربط الجداول مع بعضها البعض من خالل
( ،)Foreign Keyولعمل مخطط عالقات لقاعدة البٌانات ،نقوم بتوسٌع قاعدة البٌانات
التً تم انشاءها ،تم بالزر األٌمن على ،Database Diagramتم New Database
Diagramكما فً الشكل التالً:
13
ٔم َٛثاظبفخ اٌجذاٚي ثبٌعغػ ػٍ١ٌ Add ٝظٙش اٌشىً اٌزبٌ:ٟ
ٌٚؼًّ ػاللخ ث ٓ١جذْ ، ٓ١ٌٚظغػ ٔٚغذت ثبيفبسح عٌ ٝاٌذمً ِٓ اٌجذٚي األٚي ئٌٝ
اٌجذٚي اٌثبٔ ٟػٍٔ ٝفظ اٌذمًِ ،ثً E_noف ٟجذٚي ِ Employeeغ ٔفظ اٌذمً فٟ
جذٚي ، Work_onف١ظٙش اٌشىً اٌزبٌ:ٟ
14
ِٓ خالي ٘زا اٌشىً ّ٠ىٓ وزبثخ أعُ اٌؼاللخ ف ،Relationship name ٟرُ اخز١بس
اٌّفزبح األعبعِ ٟغ اٌّفزبح األجٕج ٟاٌز٠ ٟزٛفش ف ٟوٍ ٝاٌجذ ،ٓ١ٌٚفٕعغػ ػٍ Ok ٝثُ
١ٌ Okظٙش ِخطػ اٌؼاللبد ثشىً اٌزبٌ:ٟ
ٌٚذفع اٌّخطػ ِٓ خالي دفع ِٓ شش٠ػ األدٚاد ٔٚخزبس اعُ اٌّخطػٌٚ ،ذزف ػاللخ
ث ٓ١جذٔ ٓ١ٌٚعغػ ثبٌضس األ ّٓ٠ػٍ ٝايػاللخ ،ف١ظٙش ٌٕب اٌشىً اٌزبٌ ،ٟفٕخزبس Delete
ٚ ،Relationship Databaseثزٌه ٔى ْٛلذ خزفٕب اٌؼاللخ ث ٓ١اٌجذ ٓ١ٌٚوّب ف ٟاٌشىً
اٌزبٌ:ٟ
15
أٌضا عزٌزي الطالب توجد طرٌقة أخرى إلنشاء العالقات بٌن الجداول وذلك أثناء
عملٌة تصمٌم الجداول وتعرٌف المفتاح االجنبً Foreign Keyللجداول ،نضغط بالزر
األٌمن على الحقل تم نختار Relationshipفٌظهر الشكل التالً:
من الشكل السابق نضغط مقابل Tables And Columns Specificفٌظهر لنا شاشة
اسمها Tables and Columnsكما وضحناها سابقا.
عزٌزي الطالب ،إلدخال قٌم إلى الجدول التً تم تصمٌمة نضغط بالزر األٌمن على
( )Edit Top 200 Rowsلفتح الجدول التً تم انشاءه فً قاعدة البٌانات ونختار
الجدول ،وسوف نشاهد بان جمٌع البٌانات فارغة ( )NULLفً الجدول ،كما فً الشكل
التالً:
فندخل البٌانات للجدول حسب تصمٌم الجدول سابقا ،كم ا ٌمكن ادخال البٌانات للجدول
من خالل كتابة جملة Insertفً االستعالم كما ٌلً:
)بٌانات الحقل حسب نوع البٌانات( ) VALUESاسم الحقول( اسم الجدول INSERT INTO
16
) insert into Table_Name (field0, field1, field2 , ...field N
values
)(value0, value1, value2, ...value N
كما فً المثال التالً:
;)insert into Employee (E_no,E_name,E_SuperNo) values (12,'fadi',142
مالحظةٌ :مكن عزٌزي الطالب اختٌار اسم حقل واحد فقط أو أكثر إلدخال البٌانات
بشرط أال تكون القٌم اجبارٌة كما بٌنا سابقا ً فً تصمٌم الجدول)
وٌمكن التعدٌل على تصمٌم الجدول (التعدٌل على الحقول ) من خالل أمر Designكما
فً الشكل التالً:
عزض البياناث:
يمكن عزٌزي الطالب عرض الحقول (األعمدة) من خالل جملة Selectوالتً تعرض
جمٌع البٌانات المدخلة للجدول من خالل الضغط على Select Top 1000 Rows
لتظهر جملة Selectويظهر الناتج فً اسف الشكل التالً:
17
عزٌزي الطالب :من خالل جملة Selectفً الشكل السابق ٌمكن التعدٌل وحذف عمود
من شرٌط األدوات فٌتم عرض مثل Emp_Nameوالضغط على أمر
الحقول Emp_noو الحقل Emp_Salaryفقط من الجدول علما بانه ٌمكن حذف
االقواس ] [ ،وٌمكن حذف Top 1000من جملة . Select
أٌضا عزٌزي الطالب ٌ :مكن من خالل الضغط على Script Table asعرض جمٌع
أوامر SQLمثل Createو Dropوغٌرها ،حٌث ٌمكننا من نسخها وانشاء جدول
جدٌد بنفس الشكل ،أو الحذف بعض الحقول من الجدول أو استعرض جمل .SQL
شكل لجملة ،Selectنذكر منها التالً: عزٌزي الطالب ،توجد عدة أ ا
اسم الجدول SELECT * FROM
وتعنً (*)عرض جمٌع الحقول فً الجدول ،أما الجملة التالٌة:
اسم الجدول ,.. FROMاسم الحقل الثانً ,اسم الحقل االول SELECT
عرض أسماء الحقول المذكورة قبل كلمة Fromفقط ،مثل:
SELECT D_no , D_name FROM Depatment
أو عرض عدد من الحقول بنا ًء على شرط معٌن مثل:
SELECT D_no , D_name FROM Depatment WHERE D_no=2
أو عرض جمٌع الحقول بناء على شرط معٌن مثل:
* SELECT FROM Depatment WHERE D_no=2
كما ٌمكن عرض حقول من عدة جداول من خالل Viewsوالتً سنتطرق الٌها الحقا ً.
مالحظة :عزٌزي الطالب ،لكتابة جمل االستعالم السابقة كما وردت ،نضغط بالزر
األٌمن على قاعدة البٌانات التً تحوي الجداول ونختار ،New Queryأما إذا اخترنا
New Queryمن شرٌط األدوات فٌجب كتابة اسم قاعدة البٌانات قبل اسم الجدول.
القيىد :Constraints
تفرض على جدول أو حقل لضمان صحة البٌانات ،و تستخدم هً مجموعة من الشروط التً ُ
SQL Serverالقٌود لتحدٌد قواعد للبٌانات فً الجدولّ٠ٚ ،ىٓ تحدٌد القٌود عند إنشاء الجدول
(من خالل عبارة )CREATE TABLEأو بعد االنتهاء من انشاء الجدول ( من خالل عبارة
،)TABLE ALTERكما فً االستعالم التالً:
CREATE TABLE table_name
(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
18
….
;)
ٌظهر لنا
بالضغط بالزر األٌمن للفارة على Constraintsتم اختٌار New Constraintف
الشكل التالً:
19
من خالل الشكل السابق ٌمكن أن ننشا قٌد على أي حقل فً الجدول ،ولكً ٌتم انشاء قٌد ٌجب
اتباع الخطوات التالٌة:
.1اضغط على الزر Deleteفً أسفل الشكل.
.2اضغط على زر Addلعمل قٌد.
.3تم نذهب إلى Expressionمن Generalكما فً الشكل التالً:
20
ٌمكن كتابة Constraintعلى حقل العالمة على سبٌل المثال :أال ٌكون رقم الطالب أقل من
صفر ،فٌمكن كتابة الجملة كما ٌلً:
S_id>0 ,
أو كتابة العالمة بالطرٌقة التالٌة:
Mark>0 and Mark <100
تم نضغط على ،okوٌمكن تغٌر اسم القٌد من خالل Identityتم ) (Nameفنجد اسم القٌد
على الجدول (اسم الجدول _ ،)CKفٌمكن كتابة اسم الحقل بجوار اسم الجدول ،فٌظهر القٌد فً
قابمة Constraintبعد عمل .Refresh
من خالل جملة االنشاء كما ٌلً: كذلك ٌمكن كتابة القٌد فً استعالم جدٌد
( CREATE TABLE student
s_Id int NOT NULL CHECK (s_Id>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
) Address varchar(255),
نالحظ فً اال ستعالم السابق استخدمنا االمر Checkو االمر Not Nullبجانب ،S_idوهذا
ٌعنً ان S_Idقٌمة غٌر فارغة وال ٌمكن تجاهلها ،أٌضا االمر ٌ checkقوم بفحص القٌمة
المدخلة علً الحقل على أن تكون أكبر من صفر.
أما إذا كان الجدول تم انشاءه ونرٌد أن نفرض قٌد على عمود رقم الطالب S_idفنستخدم جملة
ALTERكما فً االستعالم التالً:
ALTER TABLE student
)ADD CHECK (S_Id>0
وٌمكن عزٌزي الطالب فرض قٌد على أكثر من حقل فً جملة واحدة كما ٌلً:
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND
)'City='Gaza
ولحذف القٌد على الحقل نكتب الجملة التالٌة:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
مع العلم أن chk_Personاسم قٌد ٌتم كتابته من قبل المستخدم.
21
القىادح :Triggers
عزٌزي الطالب :عند القٌام بإحدى عملٌات اإلضافة أو الحذف أ و التعدٌل على سجل (أو
سجالت) من جدولٌ ،قوم SQL Serverبعرض إخطار أو إشعار للمستخدمٌ ،مكن استخدام هذا
الحدث التخاذ بعض اإلجراءات.
اإلضافأو التحدٌث
ة والقادح Triggerه و إجراء او أمر ٌتم تنفٌذه بنا ًء على تنفٌذ إحدى عملٌات
أو الحذف للحفاظ على سالمٌة البٌانات التً تتم تنفٌذها خلف الكوالٌس عند تطبٌق حدث من
العملٌات السابقة على الجدول ،ومن فوابده:
.1أحد المفاهٌم التً تساعد فً تحقٌق سالمة البٌانات .Data Integrity
.2تقلٌل عملٌات االتصال بخادم .SQL Server
.3فصل الجزبٌات الخاصة بقاعدة البٌانات وعملها عل ى SQL Serverعن الجزبٌات
الخاصة بلغة البرمجة.
فٌظهر لنا استعالم جدٌد ،نحذف ما بداخلة و نكتب الـقادح Triggerالتالً للجدول الذي تم
اختٌاره ،كما ٌلً:
CREATE TRIGGER Trigger_name ON Table_Name
]ON [AFTER | INSTEAD OF] [ INSERT, UPDATE, DELETE
22
AS
BEGIN
كتابة القادح هناTrigger Code …..
;END
أو إدخال (أحد العملٌات السابقة ) على على سبٌل المثال نرٌد أن نعلم المستخدم عند إضافة
السجل بطبع رسالة تفٌد بأن اإلضافة قد تمت:
CREATE TRIGGER printMsg
ON Course AFTER INSERT
AS
Begin
"تمت عملٌة االضافة" Print
end
ٌ ،مكن استعراض الرسالة السابقة من خالل بعد تنفٌد الجمل السابقة بالضغط على
جملة Insertفقط ،فتظهر لنا الرسالة مباشرة فور إضافة أي قٌمة.
مثال:
عزٌزي الطالب :لنفرض أن لدٌنا الجدول التالً:
(STUDENTS)SC_ID, studentID, CourseID, Degree, Grade
ونرٌد أن نعمل قادح Triggerلتحدٌد Gradeحسب التالً:
من 90وما فوق ٌطبع A
من 80إلى ٌ 89طبع B
من ٌ 79 – 70طبع C
أقل من ٌ 70طبع D
الحل:
CREATE TRIGGER updategrade
ON STUDENTS
AFTER UPDATE
AS
23
BEGIN
DECLARE @Ststore INT
SET @Ststore =(SELECT DEGREE FROM INSERTED)
DECLARE @Ststore NVARCHAR(2)
IF @Ststore>=90
SET @Ststore='A'
ELSE IF @Ststore >=80 AND @Ststore<90
SET @Ststore='B'
ELSE IF @Ststore>=70 AND @Ststore <80
SET @Ststore= 'C'
ELSE
@Ststore ='D'
UPDATE STUDENTS SET GRADE =@Ststore WHERE SC_ID =(SELECT SC_ID
FROM INSERTED)
END
24
"انتهت عملٌة بعد تنفٌذ هذا الكود لن ٌتم إضافة أي سجل على الجدول ولن تظهر الرسالة
التسجٌل " اال باستخدام جملة INSERTفقط.
فيظهر استعالم جديد ،نقوم بحذف محتواه ونكتب االجراء الخاص بنا ،و الصيغة العامة ألمر
أنشاء اإلجراء المخزن هي :
CREATE PROCEDURE Procedure_Name OR CREATE PROC …..
]"[Variables list Declaration
AS
Procedure Body
GO
25
ٔالدع ِٓ االعزؼالَ اٌغبثمخ أْ ّ٠ىٓ أشبء اعزؼالَ ِٓ خالي أِش االٔشبء CREATEرُ اعُ
االجشاء Procedureأ ٚالئخزصبس Procرُ اعُ االجشاء ،أِب ف ٟاٌغطش اٌثبٔ ٟفٕؼشف
اخز١بس ،ٞرُ ٠أر ٟجغُ االجشاء.
ح اٌّزغ١شاد ٠ٚجت أْ ٠غجمٙب سِض @ ٞ ٖٚ
ِثبي:
جٍّخ اعزؼالَ :
CREATE PROCEDURE AddEntry
@name VARCHAR(100), @ID int(9), @address VARCHAR(255),
AS
)INSERT INTO myTable (theName, theAddress, thePhone
)VALUES (@name, @ID, @address
ٔالدع ف ٟاالعزؼالَ اٌغبثك رُ أشبء اجشاء ِغ اػطبءٖ اعُ ،Addingرُ ػشفٕب اٌّزغ١شاد
االعُ ٚسلُ اٌ٠ٛٙخ ٚاٌؼٕٛاْ ،رُ ف ٟجغُ اإلجشاء لّٕب ثزٕف١ز ٘ب ٟ٘ٚػٍّ١خ ئظبفخ اٌج١بٔبد ػًٜ
اٌجذٚي ،وّب ّ٠ىٓ وزبثخ االِش GOفٙٔ ٟب٠خ االدشاء ٌزٕف١زٖ أ ٚاٌفصً ث ٓ١اٌىزً ،أ ِٓ ٚخالي
االِش ِٓ Executeشش٠ػ األدٚاد.
ثؼذ رٕف١ز ٘زا االجشاء ِٓ خالي ِٓ Executeشش٠ػ األدٚاد ٔى ْٛلذ أشبءٔب اجشاء ِخضْ فٟ
٠ ،Stored Proceduresم٘ َٛزا االجشاء ثؼذ اٌزٕف١ز ثبعزؼشاض وبًِ اٌج١بٔبد ِٓ جذٚي
ٌٚ ، Employeeزٕف١ز ٘زا االجشاء ثبٌعغػ ثبٌضس األ ّٓ٠ػٍ ٝاالجشاء ،رُ ٔخزبس Execute
Stored Procedureوّب ف ٟاٌشىً اٌزبٌ:ٟ
26
ً اٌشىٟز االجشاء اٌّخضْ وّب ف١رٕفٚ ،ذ٠ش اعزؼالَ جذٙظ١ٌ ok ٍٝ ٔعغػ ػ،ذ٠ش شىً جذٙظ١ف
:ٌٟاٌزب
غخ االعزؼالَ وّب١رىزت صٚ ، EXECUTE ز االجشاء اٌّخضْ ثبعزخذاَ االِش١ّىٓ رٕف٠ وّب
:ٍٟ٠
EXECUTE Procedure_Name [parameter1_value , parameter2_value , ...,
parameter N_value "]
َّىٓ وزبة االعزؼال٠ وّب،EXEC ٌٝ ئEXECUTE اٌطبٌت اخزصبس وٍّخٞض٠ّىٓ ػض٠ٚ
:ً ِثٜغ أخش١ثص
Create Procedure PX
@No Int (INT عٌٕٛش ِٓ ا١) ػشفٕب ِزغ
AS
Select
E_No , E_Name, E_adress,E_superNo
From
Employee
27
Where
) دغت لّ١خ اٌّزغ١ش رزذذد اٌغجالد إٌبرجخ ( E_No = @No
Go
الفهارس :INDEXES
الفهر س هو حقل أو مجموعة من الحقول التً ٌمكن استخدامها لتحدٌد عملٌات محددة على
السجالت حسب الصالحٌات المخولة علٌها ،وهً عبارة عن هٌاكل مرتبطة بالجدول ،تشٌر
على السجالت الفعلٌة بداخل الجدول ،وٌحتوي الجدول على فهرس واحد أو أكثر من فهرس،
وٌتم تخزٌنه ا من المفاتٌح فً هٌكل ( )B-Treeالتً تمكن SQL Serverمن عدم تكرار
البٌانات ،وسرعة البحث واسترجاع البٌانات بكفاءة عالٌة ،علما ً أن الجدول ٌتكون من صفحات
وكل صفحة تحتوي على 100سجل (صف) ،وحجم الصفحة تقرٌبا ،8KBوالفهارس تزٌد من
حجم قاعدة البٌانات وتبطء فً إضاعة سجل جدٌد للبٌانات.
28
ٌقوم خادم قواعد البٌانات SQL Serverبإنشاء فهرس على الجدول اعتمادا على طرٌقة انشاءه،
مثل انشاء مفتاح أساسً ) (Primary Keyفً الجدول فإن SQL Serverتلقابٌا ٌعتمد المفتاح
األساسً فهرس ،وإلنشاء فهرس أثناء عملٌة تصمٌم الجدول فً ، SQL Serverنقوم بتوسٌع
الجدول المراد عمل فهرس له ،وتم نضغط بالزر األٌمن على Indexesونختار New Index
تم نختار نوع الفهرس كما فً الشكل التالً:
ٌظهر فً الشكل السابق اسم الجدول ( ،)Table Nameواسم الفهرس االفتراضً ( Index
،)Nameوٌمكن تغٌر اسم الفهرس حسب ما ٌراه المستخدم ،ثم نوع الفهرس ()Index type
وذلك حسب ما تم اختٌاره من قبل المستخدم ،وٌمكن اختٌار Uniqueلٌكون فرٌد من نوع ه،
وإلضافة فهرس جدٌد نضغط على زر اإلضافة Addفٌظهر مربع حوار لتحدٌد االعمدة من
الجدول بالتأشٌر أمام العمود كما فً الشكل التالً:
29
وعند االنتهاء من تحدٌد فهرس واحد أو فهارس مركبة (أكثر من عمود ) نضغط على زر ،Ok
فتظهر االعمدة التً تم تحدٌدها فً مربع ، New Indexنضغط على زر ،Okفٌتم انشاء
فهرس فً قابمة الفهارس ،وللتأكٌد نعمل Refreshلقابمة Indexesفنالحظ الفهارس التً تم
انشاءها.
الطرٌقة الثانٌة:
نضع الجدول فً حالة التصمٌم بالضغط بالزر األٌمن على الجدول ،ونختار ،Designبالضغط
بالزر األٌمن على العمود المراد عمل فهرس له كما فً الشكل التالً:
30
نضغط على زر اإلضافة Addفٌظهر مربع الحوار التالً:
فٌظهر اسم Indexجدٌد وهو (اسم الجدول _ ،)IXثم نذهب إلى Columnsونضغط على الزر
لٌظهر الشكل التالً: التالً
31
نختار اسم العمود من خالل Column Nameتم ،Okفٌتم انشاء فهرس.
الطرٌقة الثالثة:
ٌمكن إنشاء فهرس من خالل االستعالم New Queryكما ٌلً:
) ASCاسم العمود ( اسم الجدول ONاسم الفهرس CREATE INDEX
وإلنشاء فهرس من نوع ،Uniqueفقط نكتب كلمة Uniqueمباشرة بعد كلمة Create
) ASCاسم العمود ( اسم الجدول ONاسم الفهرس CREATE UNIQUE INDEX
وإذا أردنا انشاء فهرس مركب فً الجدول الواحد ،فٌتم بالشكل التالً:
ASC,اسم العمود ASC, 2اسم العمود ( 1اسم الجدول ONاسم الفهرس CREATE INDEX
)…..
مالحظة ASC :تعنً فرز البٌانات تصاعدي
32
:Views
هو إنشاء استعالم وهمً ٌسمح لعرض البٌانات التً تم استٌرادها من مجموعة حقول
من جدول أو مزٌج من جداول قاعدة البٌانات بشكل معٌن ،ومرتبط مباشرة معها ،مما
ٌسهل عملٌة استعالم البٌانات المعقدة وتحسٌن أداء قاعدة البٌانات وحماٌة البٌانات،
وتتعامل االستعالمات المنشأة مع أوامر .DML
إلنشاء الـ ٌ Viewوجد عدة طرق:
الطرٌقة األولى:
إلنشاء Viewمن متصفح الكابنات ،نقوم بتوسٌع قاعدة البٌانات التً تم انشاءها،
وبالضغط بالزر األٌمن على مجلد Viewونختار New Viewكما فً الشكل التالً:
فٌظهر الشكل التالً الذي ٌعرض جمٌع الجداول التً تم انشاءها فً قاعدة البٌانات
4
33
نختار الجداول من خالل الضغط على الجدول و Addفٌظهر لنا الشكل التالً:
كما فً الشكل السابق ٌمكن اختٌار الحقول من الجداول التً تم اضافتها بوضح إشارة
صح فً المربع المقابل للحقل فٌظهر الحقل مباشر ًة فً االستعالم الجدٌد ،بعد ذلك
نضغط على Saveفً شرٌط األدوات لحفظ االستعالم فً ،Viewsوٌمكن فحص
Edit Top 200 rows االستعالم بعد الحفظ بالضغط علٌة بالزر األٌمن واختٌار
فٌستعرض جمٌع الحقول التً تم استٌرادها من الجداول.
أٌضا عزٌزي الطالب ٌمكن وضع شرط فً االستعالم من خالل كتابة الشرط أو أكثر
من شرط فً مربع ،Filterكما فً الشكل التالً:
كما فً الشكل السابق تم انشاء استعالم لعرض اسم القسم واسماء الموظفٌن الذٌن
ٌعملون فً قسم رقم " "2وعدد ساعات العمل أكبر من 15ساعة ،مع العلم لٌس من
الضروري استعراض حقل ساعات العمل أو رقم القسم ،وذلك بإزالة إشارة الصح من
امام الحقل كما فً الشكل السابق ،وٌمكن كتابة االستعالم بالطرٌقة التالٌة:
34
SELECT Depatment.D_name, Employee.E_name FROM
Depatment INNER JOIN Work_on ON Depatment.D_no =
Work_on.D_no INNER JOIN Employee ON Work_on.E_no =
Employee.E_no WHERE (Work_on.D_no = 2) AND
(Work_on.Hour > 15)
.وبعد تنفٌذ االستعالم السابقة ٌظهر الناتج حسب الشرط أو الشروط المطلوبة
New login نختارlogins وبالزر األٌمن علىSecurity إلنشاء مستخدم جدٌد نقوم بتوسع
:ًكما فً الشكل التال
35
نكتب فً Login nameاسم المستخدم الذي سوف ٌكون له صالحٌة على قاعدة البٌانات ،تم
نختار SQL Server authenticationإلعطاء المستخدم كلمة المرور ،كما نالحظ من الشكل
بعض الخٌارات على كلمة المرور مثل تغٌر كلمة المرور عند الدخول لقاعدة البٌانات ،وذلك
من خالل ،User must change password at next loginأو تطبٌق االمن Policy
كطول كلمة المرور أو خلٌط من األ رقام والحروف أو تغٌرها كل فتر ة زمنٌة ،تم نختار قاعدة
البٌانات التً ٌكون لهذا المستخدم صالحٌة علٌها من خالل ،Default databaseتم نذهب
ٌظهر لنا الشكل التالً:
إلى server Rolesف
36
من الشكل السابق نالحظ العدٌد من الصالحٌات ٌمكن إعطابها للمستخدم على سبٌل المثال
صالحٌة dbcreatorإلنشاء قاعدة بٌانات على الخادم ،أما شاشة user mappingكما فً
الشكل التالً:
37
من الشكل السابق نختار قواعد البٌانات التً سوف ٌكون للمستخدم صالحٌة علٌها تم نعطً
الصالحٌات من خالل Database role membership for:على سبٌل المثال صالحٌة
ٌ db_ownerكون للمستخدم كامل الصالحٌات على قاعدة البٌانات بصفته المالك،
db_backupoperatorفقط انشاء نسخة احتٌاطٌة backupلقاعدة البٌانات،
db_datareaderقارئ لبٌانات فقط ،
db_datawriterفلهو صالحٌة التعدٌل والحذف ،
db_ddladminله جمٌع الصالحٌات المتعلقة فً ،DDL language
db_denydatareaderفال ٌستطٌع القراءة والكتابة على قاعدة البٌانات،
Sysadminالتحكم الكامل فً ،SQLوتعد هذه الصالحٌات من القواعد Rolesفً SQL
.Server
تم بعد اختٌار الصالحٌات نضغط ،okونقوم بعملٌة اتصال باسم المستخدم وكلمة المرور التً
اضفناها فً الخطوات السابقة ،فنجد أن المستخدم ال ٌملك سوى الصالحٌة المخولة له فقط،
وٌظهر اسم المستخدم فً قابمة .logins
38
عزٌزي الطالب :إلعطاء صالحٌة للمستخدم على جدول معٌن من قاعدة البٌانات ،أو مجموعة
حقول من قاعة البٌانات ،نقوم بعمل جدول من البٌانات من خالل Viewكما ذكرنا سابقا فً
،Viewتم نختار شرح ال ،Viewتم نضغط بالزر األٌمن على الجدول فً قابمة
،Propertiesأو بالزر األٌمن على مجلد Synonymsفنختار من القابمة New Synonym
ٌظهر الشكل التالً ونختار Permissionفٌظهر الشكل التالً:
ف
39
نضغط من الشكل السابق Browseلعرض جمٌع المستخدمٌن ،كما فً الشالشة التالً:
نختار اسم المستخدم بوضع إشارة صح أمام أسم المستخدم تم نضغط ،okفٌظهر اسم المستخدم
والصالحٌات التً ٌمكن أن تعطى للمستخدم كما فً الشكل التالً:
40
فٌتم تحدٌد الصالحٌات التً ٌمكن أن ٌمنحها مدٌر قاعدة البٌانات للمستخدم على جدول معٌن ،تم
نضغط ، okوبذلك نكون قد اعطٌنا صالحٌة للمستخدم ،او من خالل االستعالم نكتب التالً:
اسم المستخدم TOاسم الجدول DENY insert,select ,….. ON
أو إعطاء صالحٌة
اسم المستخدم TOاسم الجدول GRANT insert,select ,….. ON
41
المخططات :Schemas
ِالدظخ :اعُ اٌّبٌه ٠ Owner nameجت أْ ٠ى ِٓ ْٛاٌّغزخذِ Users ٓ١اٌزبثؼخ ٌمبػذح
اٌج١بٔبد وّب فِ ٟجٍذ Usersف ٟاٌشىً اٌغبثك.
عزٌزي الطالب ،بعد انشاء مخطط Schemaوإعطاء صالحٌة للمستخدم على المخططٌ ،جب
أن نقوم بما ٌلً:
.1نذهب إلى الجدول فً قابمة ،Tablesونضغط علٌة بالزر األٌمن للفارة ونضغط على
Designللتعدٌل على الجدول.
.2نذهب إلى قابمة الخصابص Propertiesومنها نفتح القابمة المنسدلة أمام ، schema
ونختار اسم المخطط التً تم انشاءه كما فً الشكل التالً:
42
تم تظهر الرسالة تفٌد بأن جمٌع الصالحٌات السابقة التً اخذها الجدول من المخطط ات السابقة
سٌتم حذفها كما فً الشكل التالً:
43
تغييز اسن قاعذة البياناث:
ػض٠ض ٞاٌطبٌت ٌ :زغ١ش اعُ لبػذح اٌج١بٔبد اٌز ٟرُ ئٔشبئٙب عبثمبًإ٘ ،بن خ١بساْ ،األٚي ثبٌعغػ
ثبٌضس األ ّٓ٠ػٍ ٝاٌج١بٔبد اٌز ٟرُ ئٔشبئٙب ٚاخز١بس أِش ٚ Renameاعزجذاٌٗ ثبالعُ اٌز ٟرش٠ذٖ أٚ
ٔٚىزت اٌزبٌ:ٟ ِٓ خالي االعزؼالَ
Alter Database test1 modify name=test
اٌّٛجٛدح ف ٟشش٠ػ األدٚادٚ ،ثٙزٖ اٌطش٠مخ ٔى ْٛلذ غ١ش ٔب ثُ ٔعغػ ػٍ ٝا٠مٔٛخ
أعُ لبػذح اٌج١بٔبد ِٓ Test1ئٌ.test ٟ
أ٠عب ّ٠ىٓ دزف لبػذح اٌج١بٔبد ِٓ خالي االعزؼالَ ِثً ػٍّ١خ االٔشبءٌٚ ،ىٓ ٔغزخذَ االِش
ِ ،Dropثً .Drop database test
أ٠عب ػض٠ض ٞاٌطبٌت ال ّ٠ىٓ دزف لبػذح ث١بٔبد أثٕبء االعزخذاَ ألوثش ِٓ ِغزخذَ فٔ ٟفظ
اٌٍذظخٚ ،ػٕذ رٌه ٠ؼط ٟخطأٌ ،زا ٠جت رٛقٞف جّ١غ ِغزخذِ ٟلبػذح اٌج١بٔبد ،ثُ رم َٛثذزفٙب،
ّ٠ٚىٓ اعزخذاَ األِش اٌزبٌ ٟفٔ ٟبفزح االعزؼالِبد:
Alter DatabaseName Set SINGLE_USER With Rollback Immediate
رؼٕ With Rollback immediate ٟأ ٞاٌزشاجغ ػٓ اٌّؼبِالد غ١ش اٌّىزٍّخ ٚئغالق
االرصبي ثمبػذح اٌج١بٔبد دز ٝر ُ١دزفٙب.
44
نسخ قاعذة البياناث:
ػض٠ض ٞاٌطبٌت ال ّ٠ىٓ ٔغخ اٌٍّفبد اٌغبثمخ اال ف ٟدبي لطغ االرصبي ثبٌخبدَ
،Disconnectedدز ٌٛٚ ٝرُ اغالق ثشٔبِج MS SQL Server 2014 Management
Control Panelرُ ٔز٘ت ئٌٌٛ ٝدخ اٌزذىُ ٌٚ ،Studioمطغ االرصبي ثبٌخبَ
( Administration Toolsأدٚاد ئداس٠خ ) ،رُ ،Servicesرُ ٔجذث ػٓ SQL Server
)ٔٚ (FDBفزخٖ ،ف١ظٙش اٌشىً اٌزبٌ:ٟ
ٔعغػ ػٍ Stop ٝف١زُ لطغ االرصبي ثمبػذح اٌج١بٔبد ّ٠ٚىٓ ٔغخٙب ثؼذ ػٍّ١خ لطغ االرصبي،
ٚثٓفظ ايغش٠مخ ّ٠ىٓ ػًّ االرصبي ثبٌعغػ ػٍ.Start ٝ
أ٠عب ػض٠ض ٞاٌطبٌت ّ٠ىٓ ٔغخ لبػذح اٌج١بٔبد ثذ ْٚػًّ اٌخطٛاد اٌغبثمخ (لطغ االرصبي )
ِٓ خالي اٌعغػ ثبٌضس األ ّٓ٠ػٍ ٝلبػذح اٌج١بٔبد ٚاٌعغػ ػً Tasks ٜرُ Detachوّب فٟ
اٌشىً اٌزبٌ:ٟ
45
ف١ظٙش اٌشىً اٌزبٌ:ٟ
ِٓ اٌشىً اٌغبثك ثبٌعغػ ػٍ Ok ٝف١زُ فصً ٌ Detachمبػذح اٌج١بٔبد ،أِب ف ٟدبي اخز١بس
ِٓ Dropاٌشىً اٌغبثك ،ف١زُ دزف لبػذح اٌج١بٔبد ِٓ اٌمشص ِٓٚ Cثشٔبِج ،SQL Server
أِب دبي اخز١بس Updateف١زُ رذذ٠ث اٌج١بٔبد لجً ٚ ،Detachال ٠ذجز اعزخذاِٙب.
ٌٕٚغخ لبػذح اٌج١بٔبد ثذ ْٚفصٍٙب ِٓ ٔ SQL Serverزجغ اٌخطٛاد اٌزبٌ١خ:
ثبٌضس األ ّٓ٠ػٍ ٝلبػذح اٌج١بٔبدٔٚ ،خزبس ،Tasksرُ ،Take OffLineف١ظٙش اٌشىً اٌزبٌ:ٟ
46
فٕعغػ ػٍ ،close ٝف١زُ اغالق لبػذح اٌج١بٔبد ثذ ْٚح رفٙب ِٓ ػٍ ٝاٌخبدَ ٠ٚى ْٛشىٍٙب ػٍٝ
،أِب ئرا اسدٔب ئػبدح رشغٍٙ١ب فجٕفظ اٌطش٠مخ ٔٚخزبس اٌخبدَ ثبٌّظٙش اٌزبٌ: ٟ
.Bring OnLine
ّ٠ٚىٓ ػض٠ض ٞاٌطبٌت دفع لبػذح اٌج١بٔبد ِٓ خالي ػًّ ٔغخخ ادز١بغ١خ ِٓ Backupخالي
اٌعغػ ثبٌضس األ ّٓ٠ػٍ ٝلبػذح اٌج١بٔبد رُ Tasksرُ ٔخزبس ،Backupأ ِٓ ٚخالي رٛع١غ
ِجٍذ ٚ ،Server Objectsثبٌعغػ ثبٌضس األ ّٓ٠ػٍِ ٝجٍذ ٔٚ Backup Serversخزبس
،Back Up a databaseف١ظٙش اٌشىً اٌزبٌ:ٟ
47
ِٓ اٌشىً اٌغبثك ّ٠ىٓ اخز١بس ٔٛع إٌغخخ االدز١بغ١خ ِٓ Backupخالي ،Backup typeئِب
Differentialاٌز ٟرؼٕ ٟفمػ ٔخزبسٖ ٚ Fullاٌز٠ ٞؼٕ ٟوبًِ لبػذح اٌج١بٔبد أٔ ٚخزبس
اٌزذذ٠ثبد اٌز ٟرّذ ػٍ ٝلبػذح اٌج١بٔبدٚ ،ارا اسدٔب اعزجذاي ِىبْ اٌذفع ٔعغػ ػٍRemove ٝ
ٌذزف ِغبس اٌذفع رُ ٔعغػ ػٌٍ Add ٝزذذ٠ذ ِغبس جذ٠ذ ٌٍذفعٚ ،اخز١بس اعُ إٌغخخ وّب فٟ
اٌشىً اٌزبٌ:ٟ
أِبَ ٌ File nameزذذ٠ذ ِغبس ِٓ ٘زٖ اٌشىً ّ٠ىٓ رغ١ش ِغبس اٌذفع ثبٌعغػ ػٍٝ
جذ٠ذ وّب ف ٟاٌشىً اٌزبٌ:ٟ
48
ِٓ اٌشىً اٌغبثك ٔخزبس ِىبْ اٌذفع ٚاعُ اٌٍّف ِٓ خالي ٔٚ File nameىزت اعُ اٌٍّف
٠ٚجت أْ ٠ى ْٛاالِزذاد ّ٠ٚ ،)file name.bak( Bakىٓ ػض٠ض ٞاٌطبٌت رذذ٠ذ خ١بساد إٌغخ
االدز١بغ١خ ِٓ خالي لبئّخ Media Optionsوّب ف ٟاٌشىً اٌزبٌ:ٟ
49
وّب ِٓ اٌشىً اٌغبثك ٔالدع خ١بس ٛ٘ٚ ،Append the Existing backup setخ١بس
افزشاظٌٕ ٟغخ وٍّذك ػٍ ٝإٌغخخ اٌغبثمخ ٕ٘ٚ ،بن خ١بساد أخشٌ ٜؼًّ إٌغخ االدز١بغ١خ ّ٠ىٓ
اعزخذاِٙب ِٓ ،لبئّخ Backup Optionsوّب ف ٟاٌشىً اٌزبٌ:ٟ
50
ٔالدع ِٓ اٌشىً اٌغبثك وزبثخ اعُ لبػذح اٌج١بٔبد ،Nameرُ ٚصف اٌج١بٔبد ،Description
رُ ربس٠خ أزٙبء إٌغخ االدز١بغ ِٓ ٟخالي Afterأ ٚاخز١بس ربس٠خ ِذذد ِٓ خالي خ١بس ،On
ِٓٚرُ ٔعغػ ػٍ١ٌ ok ٝزُ ػًّ ٔغخخ ِ ،Backupغ ا يػٍُ أٔٗ ٠زُ دفع اٌٍّف ِجبششح داخً
ِجٍذ Backupاٌّٛجٛد ػٍٝ
C:\program files\Microsoft SQL
server\MSSQL11.MSSQLSERVER\MSSQL\backup
ِٓ Restore ٚئرا اسدٔب ػًّ ٌٍٕ Restoreغخخ اٌز ٟدفظٕب٘ب عبثمب ،ثٕفظ اٌطش٠مخ ٔخزبس
٠ظٙش اٌشىً اٌزبٌ:ٟ
Tasksرُ ، Databaseف
ِٓ خالي اٌشىً اٌغبثك٠ ،زُ ادعبس جّ١غ اٌٍّفبد اٌز ٟرُ دفظٙب ف ٟاٌّجٍذ Backupاٌّشبس
اٌ١خ عبثمب ،أِب ف ٟدبي رُ رغ١١ش اٌّىبْ فٕخزبس ٔٚ Deviceذذد اٌّىبْ اٌّشاد ػًّ Restore
ِٕٗ ،رُ ٔعغػ Okف١زُ اعزشاد لبػذح اٌج١بٔبد ٚرشغٍٙ١ب ػٍ ٝاٌخبدَ.
51
استزاد جذول هن قاعذة بياناث أخزي:
العزشاد Importجذاٚي ِٓ أِ ٞىبْ ف ٟلبػذح اٌج١بٔبد ٌمبػذح ث١بٔبد أخشٔ ٞزجغ اٌخطٛاد
ٞظٙش اٌشىً
اٌزبٌ١خ :ثبٌضس األ ّٓ٠ػٍ ٝلبػذح اٌج١بٔبد رُ Tasksرُ ٔخزبس Import Dataف
اٌزبٌ:ٟ
ٔخزبس اعُ اٌخبدَ Server nameرُ ٔخزبس اعُ لبػذح اٌج١بٔبد اٌز ٟرذز ٞٛػٍ ٝاٌجذاٚي اٌّشاد
ٔغخٗا ِٓ ،خالي ٔ ،Databaseغ١ش > <defaultئٌ ٝاعُ لبػذح اٌج١بٔبد ،رُ ،Nextرُ ٞظٙش
،Next اٌشىً ٔفظ اٌغبثمخ فٕخزبس اعُ لبػذح اٌج١بٔبد اٌز ٟعٛف ٕٔغخ اٌٙ١ب اٌج١بٔبد فمػ رُ
فٟظٙش شىً جذ٠ذح وّب :ٍٟ٠
52
فٕعغػ ػٍ Next ٝثؼذ اخز١بس ٔغخ اٌج١بٔبد ِٓ اٌجذاٚي ٚاٌـ ٌٟ Viewظٙش شىً أخش ٜوّب
:ٍٟ٠
53
خزبس اٌجذاٚي اٌّشاد ٔغخ٘ب ثٛظغ ئشبسح صخ اِبَ اٌجذٚي رُ ٔعغػ ػٍ Next ٝرُ Nextرُ ف
،Finishف١زُ ٔغخ اٌجذاٚي ئٌ ٝلبػذح ث١بٔبد جذ٠ذح وّب ف ٟاٌشىً اٌزبٌ:ٟ
54
ّ٠ٚىٓ رصذ٠ش٘ب ةٔفظ غش٠مخ اعز١شاد٘ب فمػ ْخزبس .Export Data
55
فتح قاعذ ة البياناث علً خادم آخز:
ٌشفغ لبػذح اٌج١بٔبد ثجّ١غ ٍِفبرٙب ػٍ ٝخبدَ ِخزٍف ٔ ،عغػ ثبٌضس األ ّٓ٠ػٍ ٝلبػذح اٌج١بٔبد
٠ظٙش اٌشىً اٌزبٌ ٟاٌز ٟثٙب ثالثخ خ١بساد:
ٔ Tasks ِٓٚخزبس Generate Scriptsف
56
ِٓ اٌشىً اٌغبثك (اٌّشدٍخ اٌثبٔ١خ)ٚ ،اٌز ٟدِىٓٔب ِٓ اخز١بس جّ١غ ٍِفبد لبػذح اٌج١بٔبد Select
،the database objects to Scriptأ ٚاخز١بس جضء ِٓ اٌٍّفبد ِٓ خالي select specific
ٚ database objectsاخز١بس اٌٍّفبد ،فٕخزبس جّ١غ اٌٍّفبد (اٌخ١بس األٚي ) ٔٚعغػ Next
يٞظٙش اٌشىً اٌزبٌ:ٟ
57
ِٓ اٌشىً اٌغبثك ّ٠ىٓ اْ ٔخزبس ِٓ ١ٌ Advancedزُ أخذ جّ١غ اٌج١بٔبد ١ٌٚظ فمػ اٌزصُّ١
ٌٚزٌه ِٓ خالي اٌشىً اٌزبٌ:ٟ
58
نَ ا ِ٘ٛ ٛظخ ف ٟاٌشىً اٌغبثك ٔخزبس ٔٛع اٌج١بٔبد ٌ Type of data to scriptزذذ٠ذ
٘ٚ ،Schema and dataزٖ اٌشىً ٞدز ٞٛػٍِ ٝجّٛػخ ِٓ اٌخ١بساد اٌزّ٠ ٟىٓ أْ ٠زُ أخذ٘ب
ِغ االعزؼالَ ،وّب ٔالدع أْ غش٠مخ دفع اٌٍّفبد فِ ٟىبْ ِذذد ػٍ ٝاٌجٙبص أٔ ٚششح ػٍٝ
ٚ ، Web Serviceئرا اخزشٔب ٠ Save scripts to specific locationزُ رذذ٠ذ ِىبْ اٌٍّف
أ Save to new query window ٚف ُ١أشبء اعزؼالَ جذ٠ذ ٠ذز ٜٛػٍ ٝثشِجخ جّ١غ
اٌجذاٚي (لبػذح اٌج١بٔبد ) اٌز ٟرُ اخز١بس٘ب ،ثُ ٔعغػ ػٍ Next ٝرُ ١ٌ Nextزُ رذًّ١
ٚاٌزذ ً٠ٛئٌ ٝاعزؼالَ وّب ف ٟاٌشىً اٌزبٌ:ٟ
59
رُ ٔعغػ ػٌٍٕ Finish ٝذصً ػٍ ٝاالعزؼالَ وّب ف ٟاٌشىً اٌزبٌ:ٟ
60
ِٓ خالي ٘زا االعزؼالَ ّ٠ىٓ دفظٗ أٔ ٚغخخ ٔٚششح ػٍ ٝأ ٞاٌخبدَ Serverأخش.
61