الأحد، 24 ديسمبر 2017

الدرس الخامس : حدف قاعدة البيانات DROP DATABASE

لحذف قاعدة البيانات بأستخدام لغة SQL سوف نستخدم الايعاز DROP وهو من ايعازات Data Definition Language او ما يعرف اختصارا ب DDL
 DROP DATABASE databasename






مثلا لحف قاعدة بيانات اسمها TEST يمكن كتابة وتنفيذ الايعاز التالي في SQL Server Management Studio

 DROP DATABASE TEST



    

ملاحظة لنفيذ هذا الايعاز يجب ام تمتك الصلاحيات الامنية المناسبة يجب ان يكون المستخدم عضو في الدور الامني المسمى db_owner role.

يجب ان نكون حذرين جدا عند تنفيذ هذا الايعاز (DROP DATABASE) سوف يؤدي الى حذف قاعدة البيانات من نظام ادارة قواعد البيانات (SQL Server) وكذلك يؤدي الى حذف ملفات MDF و LDF من System file وبتالي لايمكن استرجاع قاعدة البيانات ما لم نمتلك ملفات النسخ الاحتياطي (Backup Files) لذلك يجب ان لا ننفذ هذا الايعاز مالم نتأكد من وجود ملفات النسخ الاحتياطي وكذلك يجب التأكد من صلاحية ملفات النسخ الاحتياطي عن طريق القيام بعملية (Restore) لهذه الملفات والتأكد من صلاحيتها. 
هناك حالة خاصة وهي اذا كانت قاعدة البيانات ضمن الحالة (offline) فأن تنفيذ  (DROP DATABASE) سوف يؤدي فقط الى حذف قاعدة البيانات من نظام ادارة قواعد البيانات (SQL Server) بينما تبقى ملفات MDF و LDF موجودة في System file لذلك في هذه الحالة يجب ان نقوم يدويا بأزلة هذه الملفات من System File.
اذا اردنا ازالة قاعدة بيانات من SQL Server بشكل مؤقت فهناك طرقة اكثر امانا وهي استخدام عملية (Detaches) اي فصل قاعدة البيانات حيث ان هذه العملية تؤدي فقط الى حذف قاعدة البيانات من نظام ادارة قواعد البيانات (SQL Server) ولكن تبقي ملفات ملفات MDF و LDF موجودة في System file وبتالي يمكن اضافة قاعدة البيانات مرة اخرى وبسهولة الى نظام ادارة قواعد البيانات (SQL Server). هناك بعض المتطلبات الخاصة بعملية (Detach) حيث يجب ان تكون قاعدة البيانات ضمن الحالة (SINGLE_USER) وهذا سوف يضمن عدم اتصال المستخدمين بقاعدة البيانات ويوفر ما يسمى بالوصول الحصري (exclusive access) والذي يمكننا من القيام بعملية الفصل  (Detach)  بشكل امن. ان الوصول الحصري (اي وضع قاعدة البيانات ضمن الحالة (SINGLE_USER)) سوف يؤدي الى قطع كل الاتصالات الموجودة (drop connections) بين المستخدمين الاخرين وقاعدة البيانات وهذا يضمن عدم حدوث اي عمليات تعيق عملية فصل قاعدة البيانات. 
لتحويل قاعدة البيانات الى الحالة (SINGLE_USER) الايعازات التالية:
USE master;
ALTER DATABASE TEST
SET SINGLE_USER;
GO  





بعد تنفيذ الايعازات السابقة يمكن المباشرة بعملية فصل قاعدة البيانات عن طريق تنفيذ الاجراء المخزن (Stored Procedure) التالي :
USE master; 
EXEC sp_detach_db 'TEST', 'true';





كذلك يمكن القيام بعملية فصل قاعدة البيانات عن طريق استخدام SQL Server Management Studio كما موضح في الصور التالية: نضغط بزر الفارة الايمن على اسم قاعدة البيانات ثم نختار Task ومنها نتختار Detach 
فيظهر مربع الحوار Detach Database ونختار الخيار Drop Connections ثم نغط على الزر OK.





ليست هناك تعليقات:

إرسال تعليق