0% found this document useful (0 votes)
268 views61 pages

SQL Server 2014

Uploaded by

Hamid Harrath
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
268 views61 pages

SQL Server 2014

Uploaded by

Hamid Harrath
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 61

‫الدلٌل العملً‬

‫قاعدة البٌانات وإدارتها ‪1383‬‬

‫‪MS SQL Server 2014‬‬


‫‪Management Studio‬‬

‫إعداد‪:‬‬
‫أ‪ٌ.‬اسٌن ٌوسف األسطل‬
‫فرع رفح‬
‫جذ‪ٚ‬ي اٌّذز‪٠ٛ‬بد‬
‫مقدمة‪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‬‬

‫اإلجراءات المخزنة ‪25 .......................................... ................................ :Stored Procedures‬‬


‫إنشاء اإلجزاءاث الوخزنت‪25 ............................... ................................ ................................ :‬‬
‫الفهارس ‪28 ..................................... ................................ ................................ :INDEXES‬‬
‫أنواع الفهارس ‪28 .................. ................................ ................................ :Types of Indexes‬‬
‫إنشاء الفهرس ‪28 ........................ ................................ ................................ :Create Index‬‬
‫‪33 ...................... ................................ ................................ ................................ :Views‬‬
‫انشاء مستخدم جديد وتحديد صالحياته‪35 .................... ................................ ................................ :‬‬
‫المخططات ‪42 ...................................... ................................ ................................ :Schemas‬‬
‫تغيير اسم قاعدة البيانات‪44 ................................ ................................ ................................ :‬‬
‫اسقاط أو حذف قاعذة البياناث (‪44 ....................................... :)Deleting or Dropping a database‬‬
‫نسخ قاعدة البيانات‪45 .......................................... ................................ ................................ :‬‬
‫استراد جدول من قاعدة بيانات أخرى‪52 ...................... ................................ ................................ :‬‬
‫فتح قاعد ة البيانات على خادم آخر‪56 ......................... ................................ ................................ :‬‬

‫‪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‬‬
‫تطوير منصة قواعد البيانات‬

‫‪Microsoft SQL Server 2014 Management‬‬ ‫تشغيل بزناهج‬


‫‪Studio‬‬
‫لتشغٌل برنامج ‪ ،Ms SQL server 2014‬نذهب إلً قابمة إبدا (‪ ،)Start‬تم كافة البرامج‪ ،‬تم‬
‫مجلد ‪ ،Microsoft SQL server 2014‬تم نختار ‪SQL Server 2014 Management‬‬

‫‪ ،‬فٌظهر الشكل التالً‪:‬‬ ‫‪Studio‬‬

‫تم ٌظهر بعد فترة قصٌر الشكل التالً‪:‬‬

‫‪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‬‬

‫إنشاء قاعذة بياناث‪:‬‬

‫‪٠‬ظ‪ٙ‬ش لبئّخ ِٕغذٌخ‪،‬‬


‫إلٔشبء لبػذح ث‪١‬بٔبد جذ‪٠‬ذح ٔعغػ ثبٌضس اال‪ ٓ١ّ٠‬ػٍ‪ِ ٝ‬جٍذ ‪ Database‬ف‬
‫ٔخزبس ِٕ‪ٙ‬ب ‪ New Database‬وّب ف‪ ٟ‬اٌشىً اٌزبٌ‪:ٟ‬‬

‫ف‪١‬ظ‪ٙ‬ش ٌٕب اٌشىً اٌزبٌ‪:ٟ‬‬

‫‪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‬‬

‫ثانٌا ً‪ :‬البٌانات النصٌة‪:‬‬


‫نوع البٌانات‬ ‫السعة التخزٌنٌة‬
‫وصف البٌانات‬
‫‪Data Type‬‬
‫)‪Char(n‬‬ ‫مجموعة الحروف أو‬ ‫السعة التخزٌنٌة ‪N‬‬
‫األرقام أو خلٌط منهم‬
‫])‪VarChar[(n|max‬‬ ‫مجموعة الحروف أو‬ ‫حسب المدخالت حتى ‪2‬‬
‫األرقام أو خلٌط منهم‬ ‫‪GB‬‬
‫‪nchar‬‬ ‫مجموعة الحروف أو‬ ‫‪N‬‬
‫األرقام أو خلٌط منهم مع‬
‫الحروف ‪Unicode‬‬
‫])‪nvarChar[(n|max‬‬ ‫مجموعة الحروف أو‬ ‫حسب المدخالت حتى ‪2‬‬
‫األرقام أو خلٌط منهم مع‬ ‫‪GB‬‬
‫الحروف ‪Unicode‬‬
‫‪Text‬‬ ‫مجموعة الحروف أو‬ ‫‪4 bytes‬‬
‫األرقام أو خلٌط منهم‬
‫‪Ntext‬‬ ‫مجموعة الحروف أو‬ ‫حسب المدخالت حتى ‪2‬‬
‫األرقام أو خلٌط منهم مع‬ ‫‪GB‬‬
‫الحروف ‪Unicode‬‬

‫‪12‬‬
‫ثالثا‪ :‬البٌانات المنطقٌة‪:‬‬
‫نوع البٌانات‬ ‫السعة التخزٌنٌة‬
‫وصف البٌانات‬
‫‪Data Type‬‬
‫‪bit‬‬ ‫‪Yea/No, T/F, 0/1‬‬ ‫‪1byte‬‬

‫رابعا ً‪ :‬البٌانات الخاصة بالتارٌخ والوقت‪:‬‬


‫نوع البٌانات‬ ‫السعة التخزٌنٌة‬
‫‪Data Type‬‬
‫‪Date‬‬ ‫‪3 bytes‬‬
‫‪Datatime‬‬ ‫‪8 bytes‬‬
‫‪Datatimes2‬‬ ‫‪8 bytes‬‬
‫‪Datatimeoffset‬‬ ‫‪10 bytes‬‬
‫‪Smalldatatime‬‬ ‫‪4 bytes‬‬
‫‪Time‬‬ ‫‪5 bytes‬‬

‫مخطط قاعدة البيانات (مخطط العالقات)‬

‫المفتاح األجنبً‬ ‫ٌتم فً مخطط العالقات ربط الجداول مع بعضها البعض من خالل‬
‫(‪ ،)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‬‬
‫‪….‬‬
‫;)‬

‫ٌحتوي ‪ SQL server‬على مجموع من القٌود هً‪:‬‬


‫‪ٌ :Not Null‬شٌر إلى أن العمود ال ٌمكن تخزٌن قٌمة فارغة ‪.NULL‬‬ ‫‪‬‬
‫‪ٌ :UNIQUE‬ضمن أن كل صف لعمود ٌجب أن تكون قٌمة فرٌدة من نوعها‪.‬‬ ‫‪‬‬
‫‪ :PRIMARY KEY‬وهو خاصٌة وحٌدة وفرٌدة من نوعها‪ ،‬وال تحتوي على قٌم‬ ‫‪‬‬
‫فارغة‪ ،‬وتسرع فً استرجاع السجالت‪.‬‬
‫‪ :FOREIGN KEY‬لضمان التكامل المرجعً للبٌانات فً جدول واحد لمطابقة القٌم فً‬ ‫‪‬‬
‫جدول آخر‪.‬‬
‫‪ :CHECK‬لٌضمن قٌمة فً العمود تحقق شرط محددة‪.‬‬ ‫‪‬‬
‫‪ :DEFAULT‬إلدراج قٌمة افتراضٌة للعمود‬ ‫‪‬‬

‫القيذ علً جذول ‪:Table Constraint‬‬


‫نتبع الطرق التالٌة‪:‬‬ ‫‪Table Constraint‬‬ ‫لعمل قٌد على جدول‬
‫نقوم بتوسٌع الجدول المنشاء داخل قاعدة البٌانات فتظهر القابمة كما فً الشكل التالً‪:‬‬

‫ٌظهر لنا‬
‫بالضغط بالزر األٌمن للفارة على ‪ Constraints‬تم اختٌار ‪ New Constraint‬ف‬
‫الشكل التالً‪:‬‬

‫‪19‬‬
‫من خالل الشكل السابق ٌمكن أن ننشا قٌد على أي حقل فً الجدول‪ ،‬ولكً ٌتم انشاء قٌد ٌجب‬
‫اتباع الخطوات التالٌة‪:‬‬
‫‪ .1‬اضغط على الزر ‪ Delete‬فً أسفل الشكل‪.‬‬
‫‪ .2‬اضغط على زر ‪ Add‬لعمل قٌد‪.‬‬
‫‪ .3‬تم نذهب إلى ‪ Expression‬من ‪ General‬كما فً الشكل التالً‪:‬‬

‫تغٌر اسم القٌد‬

‫فٌظهر الشكل التالً لكتابة القٌد بداخلة‪:‬‬

‫ٌمكن كتابة القٌد هنا مثل‪Mark>0 and Mark <100:‬‬

‫‪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 Types‬‬

‫تتكون القوادح ‪ Trigger‬من نوعان هما‪:‬‬


‫‪ After Trigger ‬وٌنفذ على عملٌة االدخال (‪ )Insert‬أو التحدٌث (‪ )Update‬أو‬
‫الحذف (‪ ،)Delete‬وٌطبق فقط على الجدول‪.‬‬
‫‪ Instead of Trigger ‬هو نفس السابق والفرق هو ينفذ قبل عملٌة الحذف أو اإلضافة‬
‫أو التحدٌث‪ ،‬أٌضا ٌمكن تطبٌقه على الجدول والـ‪.View‬‬

‫إنشاء قادح ‪:Trigger‬‬


‫عزٌزي الطالب‪ٌ ،‬مكن إنشاء قادح ‪ Trigger‬جدٌد على جدول ما‪ ،‬بتطبٌق الخطوات التالٌة‪:‬‬
‫نضغط بالزر األٌمن على ‪ Trigger‬التابع للجدول ونختار ‪ New Trigger‬كما فً الشكل‬
‫التالً‪:‬‬

‫فٌظهر لنا استعالم جدٌد‪ ،‬نحذف ما بداخلة و نكتب الـقادح ‪ 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

‫ واالمر‬،‫ لإلعالن عن المتغٌر‬DECLARE ‫ نستخدم أمر‬،@ ‫ ٌسبق اسم المتغٌر إشارة‬:‫مالحظة‬


.‫ لتعٌٌن قٌمة واحدة للمتغٌر فقط‬SET
:‫مثال‬
:ً‫ لوقف عملٌة اإلدخال على جدول ما نكتب الكود التال‬Trigger ‫إذا أردنا انشاء قادح‬
CREATE TRIGGER Name_Trigger
ON Name_Table
INSTEAD OF INSERT
AS
BEGIN
PRINT "‫"انتهت فترة التسجٌل‬
END

24
‫"انتهت عملٌة‬ ‫بعد تنفٌذ هذا الكود لن ٌتم إضافة أي سجل على الجدول ولن تظهر الرسالة‬
‫التسجٌل " اال باستخدام جملة ‪ INSERT‬فقط‪.‬‬

‫‪:Stored‬‬ ‫اإلجراءات المخزنة ‪Procedures‬‬


‫اإلجشاء ػجبسح ػٓ ِجّ‪ٛ‬ػخ ِٓ اٌزؼٍ‪ّ١‬بد اٌجشِج‪١‬خ اٌز‪ ٟ‬رم‪ َٛ‬ثزٕف‪١‬ز ثؼط اٌؼٍّ‪١‬بد ِٓ خبدَ‬
‫ل‪ٛ‬اػذ اٌج‪١‬بٔبد ‪.SQL Server‬‬
‫أسباب استخذام اإلجزاء‪:‬‬
‫‪ - 1‬عشػخ األداء ٌزٕفز٘ب ِٓ لجً ٔفظ اٌج‪ٙ‬بص اٌز‪٠ ٞ‬ذ‪ ٞٛ‬اٌج‪١‬بٔبد ِّب ‪٠‬غبػذ ػٍ‪ ٝ‬اخزصبس‬
‫اٌضِٓ اٌّغزٕفز‪.‬‬
‫اٌخبدَ ‪.Server‬‬ ‫ِٓ داخً‬ ‫الْ اٌزٕف‪١‬ز ‪٠‬زُ‬ ‫‪ - 2‬رمٍ‪ ً١‬اٌىٍفخ ػٍ‪ ٝ‬اٌخبدَ –‬

‫إلنشاء اإلجراءات المخزنة‪ ،‬نستخدم االستعالم لتنفٌذ األمر ‪ Create Procedure‬أو‬


‫‪ Create proc‬مع تمرٌر اسم اإلجراء الم خزن ومحتواه‪ ،‬واإلجراءات الم خزنة هً أوامر‬
‫تحفظ فً قاعدة البٌانات باسم كابن تنفٌذي التً ٌمكن طلبها الحقا لتنفذ من جهة الخادم‬
‫‪ Server‬الختصار وقت التنفٌذ‪.‬‬

‫إنشاء اإلجزاءاث الوخزنت‪:‬‬


‫لعمل إجراء مخزن نقوم بتوسيع مجلد ‪ Programmability‬من متصفح الكائنات‪ ،‬تم نضغط‬
‫بالزر األيمن على ‪ ،Stored Procedures‬تم نختار ‪Stored Procedure‬كما في‬
‫الشكل التالي‪:‬‬

‫فيظهر استعالم جديد‪ ،‬نقوم بحذف محتواه ونكتب االجراء الخاص بنا‪ ،‬و الصيغة العامة ألمر‬
‫أنشاء اإلجراء المخزن هي ‪:‬‬
‫‪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‬شش‪٠‬ػ األد‪ٚ‬اد‪.‬‬

‫‪ Employee‬اٌّ‪ٛ‬ج‪ٛ‬د ف‪ ٟ‬لبػذح اٌج‪١‬بٔبد‬ ‫ػض‪٠‬ض‪ ٞ‬اٌطبٌت‪ٔ ،‬فشض أْ ٌذ‪ٕ٠‬ب جذ‪ٚ‬ي اٌّ‪ٛ‬ظف‪ٓ١‬‬


‫‪Test1‬‬
‫)‪Employee(E_no, E_name, E_address, E_superNo‬‬
‫‪ٔٚ‬ش‪٠‬ذ أْ ٔع‪١‬ف ث‪١‬بٔبد أ‪ٔ ٚ‬غزؼشض ث‪١‬بٔبد ٌٍجذ‪ٚ‬ي اٌغبثك‪ ،‬فىً ِشح ٔش‪٠‬ذ أْ ٔغزؼشض ْوزت‬
‫جٍّخ االعزؼالَ العزؼشاض اٌج‪١‬بٔبد‪ّ٠ٚ ،‬ىٓ أْ ‪٠‬ذث خطب ف‪ ٟ‬ػٍّ‪١‬خ اٌىزبثخ‪ ،‬خص‪ٛ‬صب ػٕذِب‬
‫ب‬
‫‪٠‬ى‪ ْٛ‬ػذد اٌذم‪ٛ‬ي وج‪١‬شح أ‪ ٚ‬أعّبء اٌذم‪ٛ‬ي غ‪ٍ٠ٛ‬خ‪ ،‬يرا ‪٠‬جت اعزخذاَ اإلجشاء اٌّخضْ ‪ٚ‬اعزذػب ٖ‬
‫ِشح ‪ٚ‬ادذح ػٕذ اٌذبجخ‪.‬‬
‫جملة استعالم الستعراض البيانات المخزنة في جدول ‪ Employee‬كما يلي‪:‬‬

‫ثؼذ رٕف‪١‬ز ٘زا االجشاء ِٓ خالي ‪ ِٓ 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‬والفهارس تزٌد من‬
‫حجم قاعدة البٌانات وتبطء فً إضاعة سجل جدٌد للبٌانات‪.‬‬

‫أنواع البٌانات التً ال تقبل أن تكون فهرس هً‪:‬‬


‫‪Text, ntext,varchar(max), nvarchar(max), varbinary(max),image.‬‬

‫أنىاع الفهارس ‪:Types of Indexes‬‬


‫‪ Clustered Index,‬‬
‫‪ Non – Clustered Index.‬‬
‫‪Non – Clustered Index‬‬ ‫‪Clustered Index‬‬
‫ٌمكن انشاء فهارس تصل إلى ‪.249‬‬ ‫ال ٌمكن انشاء أكثر من فهرس على‬
‫الجدول‪.‬‬
‫صفحات البٌانات ‪ Data Pages‬تكون‬ ‫صفحات البٌانات ‪ Data Pages‬تكون‬
‫غٌر مرتبة‪.‬‬ ‫مرتبة‪.‬‬
‫صفحات الفهرس ‪ Index Pages‬تكون‬ ‫صفحات الفهرس ‪ Index Pages‬تكون‬
‫مرتبة‪.‬‬ ‫مرتبة‪.‬‬

‫إنشاء الفهزس ‪:Create Index‬‬


‫عزٌزي الطالب‪ٌ ،‬تم انشاء الفهارس بثالثة طرق‪ ،‬هً‪:‬‬
‫الطرٌقة األولى‪:‬‬

‫‪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‬بالضغط‬
‫بالزر األٌمن على العمود المراد عمل فهرس له كما فً الشكل التالً‪:‬‬

‫نختار ‪ Indexed/Keys‬فٌظهر مربع الحوار التالً‪:‬‬

‫‪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‬فٌظهر الشكل التالً‪:‬‬
‫ف‬

‫نضغط على ‪ Search‬الختٌار اسم المستخدم لٌظهر الشكل التالً‪:‬‬

‫‪39‬‬
‫نضغط من الشكل السابق ‪ Browse‬لعرض جمٌع المستخدمٌن‪ ،‬كما فً الشالشة التالً‪:‬‬

‫نختار اسم المستخدم بوضع إشارة صح أمام أسم المستخدم تم نضغط ‪ ،ok‬فٌظهر اسم المستخدم‬
‫والصالحٌات التً ٌمكن أن تعطى للمستخدم كما فً الشكل التالً‪:‬‬

‫‪40‬‬
‫فٌتم تحدٌد الصالحٌات التً ٌمكن أن ٌمنحها مدٌر قاعدة البٌانات للمستخدم على جدول معٌن‪ ،‬تم‬
‫نضغط ‪ ، ok‬وبذلك نكون قد اعطٌنا صالحٌة للمستخدم‪ ،‬او من خالل االستعالم نكتب التالً‪:‬‬
‫اسم المستخدم ‪ TO‬اسم الجدول ‪DENY insert,select ,….. ON‬‬
‫أو إعطاء صالحٌة‬
‫اسم المستخدم ‪ TO‬اسم الجدول ‪GRANT insert,select ,….. ON‬‬

‫ونالحظ النتابج‪.‬‬ ‫تم ننفذ االمر من خالل‬

‫‪41‬‬
‫المخططات ‪:Schemas‬‬

‫‪ Schemas‬هً إلعطاء صالحٌات‬ ‫عزٌزي الطالب‪ ،‬إن فكرة انشاء مخططات‬


‫(‪ )Security‬على المخططات وترتٌب البٌانات‪ ،‬وتساعد فً صٌانة قاعدة البٌانات‪ ،‬وٌمكن‬
‫انشاء ‪ schema‬من خالل قاعدة البٌانات التً تم انشابها سابقا ‪ٌ ،‬وجد بداخلها مجلد اسمه‬
‫‪ ،Security‬وبداخلة مجلد ‪ Schemas‬كما فً الشكل التالً‪ ،‬وبالضغط على المجلد بالزر‬
‫‪Schema‬‬ ‫األٌمن واختٌار ‪ New schema‬فٌظهر لنا شكل جدٌد ٌطلب اسم المخطط‬
‫‪ name‬واسم المالك ‪ ،Owner name‬فندخل جمٌع البٌانات حسب المطلوب‪ٌ ،‬تم انشاء‬
‫مخطط داخل المجلد‪.‬‬

‫ِالدظخ‪ :‬اعُ اٌّبٌه ‪٠ Owner name‬جت أْ ‪٠‬ى‪ ِٓ ْٛ‬اٌّغزخذِ‪ Users ٓ١‬اٌزبثؼخ ٌمبػذح‬
‫اٌج‪١‬بٔبد وّب ف‪ِ ٟ‬جٍذ ‪ Users‬ف‪ ٟ‬اٌشىً اٌغبثك‪.‬‬
‫عزٌزي الطالب‪ ،‬بعد انشاء مخطط ‪ Schema‬وإعطاء صالحٌة للمستخدم على المخطط‪ٌ ،‬جب‬
‫أن نقوم بما ٌلً‪:‬‬
‫‪ .1‬نذهب إلى الجدول فً قابمة ‪ ،Tables‬ونضغط علٌة بالزر األٌمن للفارة ونضغط على‬
‫‪ Design‬للتعدٌل على الجدول‪.‬‬
‫‪ .2‬نذهب إلى قابمة الخصابص ‪ Properties‬ومنها نفتح القابمة المنسدلة أمام ‪، schema‬‬
‫ونختار اسم المخطط التً تم انشاءه كما فً الشكل التالً‪:‬‬

‫‪42‬‬
‫تم تظهر الرسالة تفٌد بأن جمٌع الصالحٌات السابقة التً اخذها الجدول من المخطط ات السابقة‬
‫سٌتم حذفها كما فً الشكل التالً‪:‬‬

‫فنضغط على ‪ ،yes‬تم نحفظ البٌانات‪ ،‬ونع مل ‪ Refresh‬للجداول‪ ،‬سنشاهد أن تم إعطاء‬


‫صالحٌة على الجدول كما فً الشكل التالً‪:‬‬

‫ونكتب التالً‪:‬‬ ‫أٌضا عزٌزي الطالب ٌمكن إنشاء ‪ Schema‬من خالل‬


‫)‪ ، Create Schema (name of Schema‬فٌتم انشاء مخطط‪.‬‬

‫‪43‬‬
‫تغييز اسن قاعذة البياناث‪:‬‬
‫ػض‪٠‬ض‪ ٞ‬اٌطبٌت ‪ٌ :‬زغ‪١‬ش اعُ لبػذح اٌج‪١‬بٔبد اٌز‪ ٟ‬رُ ئٔشبئ‪ٙ‬ب عبثمبًا‪ٕ٘ ،‬بن خ‪١‬بساْ‪ ،‬األ‪ٚ‬ي ثبٌعغػ‬
‫ثبٌضس األ‪ ّٓ٠‬ػٍ‪ ٝ‬اٌج‪١‬بٔبد اٌز‪ ٟ‬رُ ئٔشبئ‪ٙ‬ب ‪ٚ‬اخز‪١‬بس أِش ‪ٚ Rename‬اعزجذاٌٗ ثبالعُ اٌز‪ ٟ‬رش‪٠‬ذٖ أ‪ٚ‬‬
‫‪ٔٚ‬ىزت اٌزبٌ‪:ٟ‬‬ ‫ِٓ خالي االعزؼالَ‬
‫‪Alter Database test1 modify name=test‬‬

‫اٌّ‪ٛ‬ج‪ٛ‬دح ف‪ ٟ‬شش‪٠‬ػ األد‪ٚ‬اد‪ٚ ،‬ث‪ٙ‬زٖ اٌطش‪٠‬مخ ٔى‪ ْٛ‬لذ غ‪١‬ش ٔب‬ ‫ثُ ٔعغػ ػٍ‪ ٝ‬ا‪٠‬م‪ٔٛ‬خ‬
‫أعُ لبػذح اٌج‪١‬بٔبد ِٓ ‪ Test1‬ئٌ‪.test ٟ‬‬

‫اسقاط أو حذف قاعذة البياناث (‪:)Deleting or Dropping a database‬‬


‫ػض‪٠‬ض‪ ٞ‬اٌطبٌت‪ٌ :‬ذزف لبػذح ث‪١‬بٔبد رُ ئٔشبئ‪ٙ‬ب‪ّ٠ ،‬ىٓ رٌه ِٓ خالي اٌعغػ ثبٌضس األ‪ٌٍ ّٓ٠‬فبسح‬
‫‪ٚ‬اخ‪١‬بس ِٓ اٌمبئّخ إٌّغذٌخ ‪ ،Delete‬ف‪ ُ١‬دزف لبػذح اٌج‪١‬بٔبد وبٍِخًا ثجّ‪١‬غ اٌٍّفبد اٌز‪ ٟ‬رُ‬
‫ئٔشبء٘ب عبثمب ُ ئْ ٌُ ‪٠‬ىٓ ‪٠‬غزخذَ لبػذح اٌج‪١‬بٔبد ف‪ٔ ٟ‬فظ اٌٍذظخ أوثش ِٓ ِغزخذَ‪ ،‬أ‪ ٚ‬اي ِغزخذَ‬
‫‪ Close existing Connections‬رُ‬ ‫ٔفغٗ‪ٚ ،‬ػٕذِب ‪٠‬ى‪ٕ٘ ْٛ‬بن ِغزخذِ‪ ٓ١‬ف‪ّ١‬ىٓ اخز‪١‬بس‬
‫رعغػ ػٍ‪ ok ٝ‬ف‪١‬زُ دزف لبػذح اٌج‪١‬بٔبد وّب ف‪ ٟ‬اٌشىً اٌزبٌ‪:ٟ‬‬

‫أ‪٠‬عب ‪ّ٠‬ىٓ دزف لبػذح اٌج‪١‬بٔبد ِٓ خالي االعزؼالَ ِثً ػٍّ‪١‬خ االٔشبء‪ٌٚ ،‬ىٓ ٔغزخذَ االِش‬
‫‪ِ ،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‬ف‬

‫‪٠‬ظ‪ٙ‬ش اٌشىً اٌزبٌ‪:ٟ‬‬


‫اٌخ‪١‬بس األ‪ٚ‬ي ٘‪ ٛ‬رؼٍ‪ّ١‬بد فمػ ‪ّ٠ٚ‬ىٓ رجبٍ٘‪ٙ‬ب ثبٌعغػ ػٍ‪ Next ٝ‬ف‬

‫‪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‬‬

You might also like