تغییر نام دیتابیس در SQLServer: راهنمای جامع و گام به گام
تغییر نام یک دیتابیس (پایگاه داده) در SQLServer ممکن است به دلایل مختلفی ضروری باشد، از جمله استانداردسازی نامگذاری، انتقال دیتابیس از محیط توسعه به تست یا تولید، یا صرفاً اصلاح یک اشتباه تایپی. این فرآیند اگرچه ساده به نظر میرسد، اما نیازمند دقت و رعایت ملاحظاتی است تا از بروز مشکلات پس از تغییر نام جلوگیری شود. در این راهنما، به بررسی روشهای مختلف تغییر نام دیتابیس و نکات مهم پس از آن میپردازیم.
روشهای تغییر نام دیتابیس در SQL Server
دو روش اصلی برای تغییر نام یک دیتابیس در SQL Server وجود دارد: استفاده از محیط گرافیکی SQL Server Management Studio (SSMS) و استفاده از دستورات T-SQL (Transact-SQL).
۱. استفاده از SQL Server Management Studio (SSMS)
سادهترین راه برای تغییر نام دیتابیس، استفاده از رابط کاربری گرافیکی SSMS است. این روش برای دیتابیسهایی که در حال استفاده نیستند یا تعداد کمی کاربر به آنها متصل هستند، بسیار مناسب است.
مراحل:
- در Object Explorer نرمافزار SSMS، به قسمت Databases بروید.
- روی دیتابیس مورد نظر کلیک راست کرده و گزینه Rename را انتخاب کنید.
- نام جدید را وارد کرده و کلید Enter را فشار دهید.
روش جایگزین از طریق SSMS:
- روی دیتابیس کلیک راست کرده و Properties را انتخاب کنید.
- در پنجره Database Properties، به صفحه Options بروید.
- نام دیتابیس را در قسمت Database name تغییر دهید و OK را کلیک کنید.
توجه داشته باشید که برای هر دو روش، دیتابیس نباید در حال استفاده فعال باشد. در صورت وجود اتصالات فعال، ممکن است خطا دریافت کنید.
۲. استفاده از T-SQL (Transact-SQL)
برای اتوماسیون فرآیند، اسکریپتنویسی یا زمانی که دسترسی به SSMS ندارید، استفاده از دستورات T-SQL بهترین گزینه است. دو دستور اصلی برای این کار وجود دارد:
الف. دستور ALTER DATABASE … MODIFY NAME = …
این روش، که از SQL Server 2005 به بعد معرفی شد، گزینه ترجیحی و مدرن برای تغییر نام دیتابیس است. این دستور تغییر نام را به صورت یک عملیات اتمی و بدون نیاز به خاموش و روشن کردن سرور انجام میدهد.
مثال ساختار کلی استفاده از این دستور:
ALTER DATABASE OldDBName
MODIFY NAME = NewDBName;
برای اجرای این دستور، شما باید دارای مجوز ALTER روی دیتابیس باشید و تنها کاربری باشید که به دیتابیس متصل است. برای اطمینان از این مورد و جلوگیری از خطا، میتوانید دیتابیس را به حالت SINGLE_USER (تککاربره) درآورید و سپس نام آن را تغییر دهید.
برای اطمینان از عدم وجود اتصال به دیتابیس و تغییر نام آن، مراحل زیر را دنبال کنید:
-
- ابتدا دیتابیس را به حالت تککاربره درآورید و اتصالات فعال را قطع کنید. دستور WITH ROLLBACK IMMEDIATE باعث میشود که تمام تراکنشهای باز به سرعت بازگردانده شوند و اتصالات فعال قطع گردند.
ALTER DATABASE OldDBName
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
-
- سپس نام دیتابیس را با استفاده از دستور ALTER DATABASE تغییر دهید:
ALTER DATABASE OldDBName
MODIFY NAME = NewDBName;
-
- در نهایت، دیتابیس را به حالت چندکاربره (MULTI_USER) بازگردانید تا سایر کاربران بتوانند به آن متصل شوند:
ALTER DATABASE NewDBName
SET MULTI_USER;
دقت کنید که پس از تغییر نام، در مرحله آخر از نام جدید دیتابیس (NewDBName) برای بازگرداندن به حالت چندکاربره استفاده کنید.
ب. رویه سیستمی sp_rename
sp_rename یک رویه سیستمی (System Stored Procedure) قدیمیتر است که برای تغییر نام آبجکتهای مختلف در SQL Server از جمله دیتابیسها استفاده میشود. اگرچه هنوز کار میکند، اما ALTER DATABASE … MODIFY NAME روش ارجح است.
مثال ساختار کلی استفاده از این رویه:
EXEC sp_rename 'OldDBName', 'NewDBName';
همانند روش ALTER DATABASE، برای اجرای موفقیتآمیز sp_rename نیز نیاز به دسترسی انحصاری به دیتابیس دارید.
مثال کامل با حالت تککاربره برای استفاده از sp_rename:
USE master;
GO
ALTER DATABASE OldDBName
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
EXEC sp_rename N'OldDBName', N'NewDBName';
GO
ALTER DATABASE NewDBName
SET MULTI_USER;
GO
استفاده از N قبل از نام دیتابیسها (مثلاً N’OldDBName’) برای مشخص کردن رشتههای یونیکد توصیه میشود.
ملاحظات پس از تغییر نام دیتابیس
تغییر نام دیتابیس تنها نیمی از کار است. پس از تغییر نام، باید اطمینان حاصل کنید که تمام سیستمها و برنامههای وابسته به نام قدیمی دیتابیس، به درستی بهروزرسانی شدهاند:
-
رشتههای اتصال (Connection Strings): هر برنامه، اسکریپت یا سرویسی که به دیتابیس متصل میشود، از یک رشته اتصال استفاده میکند. باید تمامی رشتههای اتصال را در فایلهای پیکربندی برنامه، کدهای منبع، و سایر مکانها بهروزرسانی کنید تا به نام دیتابیس جدید اشاره کنند. این شامل برنامههای وب، اپلیکیشنهای دسکتاپ، سرویسهای ویندوز و غیره میشود.
-
SQL Server Agent Jobs: اگر Jobهای SQL Server Agent دارید که به دیتابیس تغییر نام یافته متصل میشوند یا از دستوراتی استفاده میکنند که نام دیتابیس را شامل میشود (مانند دستورات USE OldDBName)، باید این Jobها را ویرایش کرده و نام جدید را جایگزین کنید.
-
Database Mail: اگر از Database Mail استفاده میکنید و پروفایلهای آن به دیتابیس خاصی ارجاع میدهند، باید تنظیمات مربوطه را بررسی و بهروزرسانی کنید.
-
Linked Servers و Reporting Services: اگر Linked Server (سرورهای لینک شده) یا گزارشهایی در SQL Server Reporting Services (SSRS) دارید که به دیتابیس تغییر نام یافته ارجاع میدهند، باید پیکربندی آنها را بهروز کنید.
به طور کلی، تغییر نام دیتابیس روی کاربران دیتابیس یا نقشههای SID آنها به Logins سرور تأثیری نمیگذارد. مشکل یوزرهای یتیم (Orphaned Users) معمولاً در زمان انتقال یا بازگرداندن دیتابیس به سرور دیگری رخ میدهد، نه صرفاً با تغییر نام آن در همان سرور.
نتیجهگیری
تغییر نام یک دیتابیس در SQL Server فرآیندی نسبتاً ساده است که میتواند از طریق SSMS یا T-SQL انجام شود. با این حال، رعایت ملاحظات قبل از اجرا (مانند حالت تککاربره) و انجام بررسیهای کامل پس از اتمام کار (بهروزرسانی رشتههای اتصال و سایر وابستگیها) برای اطمینان از عملکرد صحیح و بدون وقفه سیستمها و برنامهها، حیاتی است. برنامهریزی دقیق و اجرای صحیح میتواند از بروز مشکلات غیرمنتظره جلوگیری کند.