كيفية إعادة تسمية قاعدة بيانات SQL Server؟

نحتاج في بعض الأحيان إلى تغيير اسم قاعدة البيانات لأن الاسم الأصلي كان يعتمد على المشروع الذي أصبح غير ذي صلة بالبيانات المخزنة في قاعدة البيانات أو أنك قد أعطيت اسمًا مؤقتًا من قبل والآن تريد تعديله. بغض النظر عن الأسباب الكامنة وراء إعادة تسمية قاعدة البيانات ، في هذه المقالة ، سوف نتوصل إلى طرق حول كيفية إعادة تسمية قاعدة البيانات ، وما الخطأ الذي قد يظهر أثناء القيام بذلك وكيفية إصلاحه.

لذا لإعادة تسمية قاعدة البيانات ، عليك اتباع إحدى الطرق الموضحة أدناه. بادئ ذي بدء ، يتعين علينا إنشاء قاعدة بيانات تحتاج إلى إعادة تسميتها.

إنشاء قاعدة البيانات:

حدد أي قاعدة بيانات في نظام إدارة خادم SQL (SSMS) . إذا لم يكن لديك أي منها ، يمكنك إنشاء واحدة باتباع هذا الإجراء.

  1. انقر بزر الماوس الأيمن فوق " قاعدة بيانات " في "مستكشف الكائنات" وحدد الخيار "قاعدة بيانات جديدة"
  2. ستظهر نافذة في الجزء الأيمن
  3. حدد "عام" اكتب اسم قاعدة البيانات في المقلاة اليمنى واضغط على "موافق" . سيتم إنشاء قاعدة البيانات

هناك طرق متعددة لإعادة تسمية قاعدة بيانات في SQL Server ، والتي تمت مناقشتها أدناه بالتفصيل مع الإصدارات التي تدعمها أي طريقة محددة. لاحقًا ، سنناقش أيضًا الأخطاء التي تظهر أثناء إعادة تسمية قاعدة البيانات ، والإجراءات اللازمة لإصلاحها.

الطريقة الأولى: استخدام خيار إعادة تسمية SSMS لإعادة تسمية قاعدة بيانات SQL Server

هذه هي أبسط طريقة لإعادة تسمية قاعدة البيانات. عليك المضي قدما على هذا النحو للقيام بذلك.

  1. انقر بزر الماوس الأيمن على اسم قاعدة البيانات من مستكشف الكائنات
  2. حدد "إعادة تسمية" ، واكتب اسم قاعدة البيانات ، واضغط على "دخول"

الطريقة 2: استخدام SSMS لإعادة تسمية قاعدة بيانات SQL Server

أبسط طريقة أخرى لإعادة تسمية قاعدة بيانات مثل إعادة تسمية أي مجلد في النوافذ. عليك أن تستمر هكذا للقيام بذلك. انقر فوق قاعدة البيانات لإعادة تسميتها تمامًا مثل إعادة تسمية مجلدات Windows.

الطريقة الثالثة: استخدام T-SQL لإعادة تسمية قاعدة بيانات SQL Server

بالنسبة لـ SQL Server 2005 و 2008 و 2008R2 و 2012 و 2014 و 2016 و 2017 ، يعمل هذا الأمر. نفذ البيان التالي.

ALTER DATABASE [test] MODIFY NAME = [test_cases]

سيكون الناتج "تم تعيين اسم قاعدة البيانات" test_cases ". كما هو موضح في الشكل أدناه.

يمكنك استخدام الأمر T-SQL أدناه لتغيير اسم قاعدة البيانات إذا كنت تستخدم SQL Server 2000. مع SQL 2005 و 2008 و 2008R2 و 2012 و 2014 و 2016 و 2017 ، لا يزال هذا يعمل ، ولكن في مرحلة ما ، Microsoft يدعي أنه سيتم التخلص التدريجي.

الطريقة الرابعة: استخدام فصل وإرفاق إعادة تسمية SQL Server

يمكن استخدام ميزة فصل وإرفاق SQL Server لإزالة قاعدة البيانات أولاً وتعيين اسم مختلف لقاعدة البيانات عند إعادة إرفاق قاعدة البيانات. يمكن استخدام أوامر T-SQL التالية للقيام بذلك

فصل قاعدة البيانات عن طريق تنفيذ الكود التالي:

EXEC sp_detach_db 'test'، 'true'

سيكون الإخراج مثل هذا

إرفاق قاعدة البيانات.

EXEC sp_attach_dbdbname = N'test '، @ filename1 = N'C: \ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test.mdf'، @ filename2 = N'C: \ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test_log.ldf '؛

سيكون الإخراج:

استخدام SSMS لفصل قواعد البيانات وإعادة إرفاقها

يمكن تحقيق ذلك أيضًا باستخدام SSMS باتباع هذه الخطوات.

  1. انقر بزر الماوس الأيمن فوق قاعدة البيانات ، وحدد "مهمة" ثم انقر على "فصل"
  2. انقر الآن على "موافق"
  3. الآن لإرفاق قاعدة البيانات ، انقر بزر الماوس الأيمن على "قواعد البيانات" في "مستكشف الكائنات" وانقر على "إرفاق" . ستظهر شاشة ، انقر فوق إضافة. ستظهر نافذة أخرى بها أسماء قاعدة البيانات كما هو موضح أدناه ، حدد "اختبار".
  4. لكننا نريد إضافته كاسم قاعدة بيانات معدّل "test_cases" لذا اكتب "test_case" في مربع "إرفاق كـ" الآن مثل هذا. سيؤدي هذا إلى إعادة تسمية قاعدة البيانات الخاصة بك.

علاوة على ذلك ، سنناقش الأخطاء التي قد تظهر أثناء إعادة تسمية قاعدة البيانات. ستحتاج إلى وصول خاص إلى قاعدة البيانات لإعادة تسمية قاعدة البيانات ، مما يضمن أن قاعدة البيانات لا تحتوي على أي اتصالات أخرى بقاعدة البيانات. ولكن إذا لم يكن الأمر كذلك ، فقد يؤدي ذلك إلى حدوث أخطاء كما هو موضح أدناه. يمكن أن يظهر الخطأ حتى عندما نفتح نافذة أخرى عن طريق الخطأ بنفس اسم قاعدة البيانات التي يجب إعادة تسميتها.

الأخطاء التي تظهر أثناء إعادة تسمية قاعدة البيانات عبر SSMS وعن طريق تنفيذ الاستعلام:

هذين الخطأين المذكورين أدناه لهما طريقان مختلفان لأنهما يظهران أثناء إعادة تسمية قاعدة البيانات باستخدام طريقتين مختلفتين. يظهر الخطأ 1 أثناء إعادة تسمية قاعدة البيانات باستخدام SSMS ويظهر الخطأ الثاني أثناء إعادة تسمية قاعدة البيانات باستخدام الاستعلام. يُظهر كلا الخطأين نفس الرسالة  "لا يمكن تأمين قاعدة البيانات حصريًا لتنفيذ العملية" ، وهذا يعني أن الخطأ ينشأ نظرًا لعدم منح المستخدم حق الوصول الحصري إلى قاعدة البيانات لإعادة تسمية قاعدة البيانات. لذا لإعادة تسمية قاعدة البيانات ، نحتاج إلى تعيين قاعدة البيانات في " وضع المستخدم الفردي ".

الخطأ 1: يظهر خطأ أثناء إعادة تسمية قاعدة البيانات عبر SSMS

"تعذر إعادة تسمية الاختبار. (ObjectExplorer)

معلومة اضافية:

فشلت إعادة التسمية لاختبار قاعدة البيانات (Microsoft.SqlServer.Smo)

حدث استثناء أثناء تنفيذ جملة Transact-SQL أو دفعة.

(Microsoft.SqlServer.ConnectionInfo)

The database could not be exclusively locked to perform the operation. (Microsoft SQL Server, Error: 5030)”

Error 2: Error arises while renaming the database using query

 “Msg 5030, Level 16, State 2, Line 2. The database could not be exclusively locked to perform the operation.”

First of all, we will reproduce the above-mentioned error messages for understanding that in which scenario they arise and how to fix them.

  1. Right-click database name from “Object Explorer”
  2. Select rename and type database name and press “enter” if it works its fine but if it does not work and results in an error like this “Unable to rename (ObjectExplorer). The database could not be exclusively locked to perform the operation. (Microsoft SQL Server, Error: 5030)” as seen in the figure below, then you don’t have exclusive access to the database to rename a database.
  3. This error means that the SQL Server will not allow the database to be renamed until unless it is in “single-user mode”.
  4. So you will need exclusive access to the database to rename a database, to understand this open another query window and select database “test”
  5. Now in the first window try to execute the following code.
  6. ALTER DATABASE [test] MODIFY NAME = [test_cases]
  7. But this will prone to an error message like this: “Msg 5030, Level 16, State 2, Line 2. The database could not be exclusively locked to perform the operation.”

Solution:

This will configure the database to roll back any pending transactions and set it in “single user mode” and then back into “multi-user mode”.

  1. To fix this we need to close all other windows in which the same database name is being used or to set the database in “single user mode” by using the following commands.
  2. Alter database test set single_user with rollback immediate go EXEC sp_renamedb 'test', 'test_cases' go alter database test_cases set multi_user go
  3. The output will be like this: “Nonqualified transactions are being rolled back. Estimated rollback completion: 0%. Nonqualified transactions are being rolled back. Estimated rollback completion: 100%. The database name ‘test_cases’ has been set.”

Conclusion:

These are multiple ways to rename the database. If one way is not working for you. You can go to another one. One thing that should be kept in mind that changing database names using these ways just rename the database. The “physical files” still have the same names. As we can see in the figure below we have changed the database name from “test” to “test_cases” but in the physical location, it remained the same.

لذا فإن أبسط طريقة هي استخدام الحل 4 إذا كنت تريد تغيير اسم الملف أيضًا. يجب عليك أولاً تغيير اسم الملفات الفعلية قبل إعادة إرفاق الملفات ثم تحديد الملفات المعاد تسميتها عند قيامك بإعادة التوصيل.

علاوة على ذلك ، بالإضافة إلى تغيير أسماء قواعد البيانات ، تحتاج أيضًا إلى التحقق مما إذا كانت هناك أي إشارات في كود التطبيق الخاص بك إلى اسم قاعدة البيانات. يمكن أن يكون هذا إما داخل SQL Server أو خارج SQL Server.