Tình huống:
Chúng ta thường gặp phải tình huống cần đổi tên cơ sở dữ liệu. Hãy nghĩ về tình huống, bạn đang làm việc với tư cách là nhà phát triển SQL Server cho công ty Tài chính và họ có tên cơ sở dữ liệu là TechBrothersIT và họ muốn đổi tên thành Techbrothers. Bạn cần cung cấp các tập lệnh có thể chạy trong môi trường QA, UAT và Production.Giải pháp:
Đổi tên bằng GUI: Việc đổi tên cơ sở dữ liệurất dễ dàng, bạn chỉ cần Nhấp chuột phải vào Cơ sở dữ liệu và sau đó chọn Đổi tên.
Cách đổi tên Cơ sở dữ liệu trong SQL Server - Hướng dẫn SQL Server / TSQL
Bạn sẽ thấy rằng tên của cơ sở dữ liệu sẽ nhắc bạn thay đổi. Hãy tiếp tục và thay đổi nó và nhấn Enter. Cách đổi tên cơ sở dữ liệu trong SQL Server - SQL Server / TSQL Hướng dẫn
/>
Cách đổi tên Cơ sở dữ liệu bằng TSQL: Bạn có thể sử dụng TSQL Để đổi tên cơ sở dữ liệu trong SQL Server.
1) Bằng cách sử dụng Thủ tục lưu trữ hệ thống Sp_Rename Chúng ta có thể sử dụng Thủ tục lưu trữ hệ thống sp_rename để đổi tên cơ sở dữ liệu trong máy chủ SQL. Giả sử chúng tôi muốn đổi tên TechBrtohersIT thành TechBrother. Chúng tôi có thể sử dụng tập lệnh bên dưới.
sp_renamedb 'OldDatabaseName','NewDatabaseName' EXEC sp_renamedb 'TechBrothersIT','TechBrothers'
2) Sử dụng Cơ sở dữ liệu Alter với Sửa đổi Chúng tôi có thể sử dụng tập lệnh dưới đây để đổi tên. Trong ví dụ này, tôi đang đổi tên TechBrothersIT thành TechBrothers.
USE master; GO ALTER DATABASE TechBrothersIT Modify Name = TechBrothers ; GO
Lỗi Thường gặp: Giả sử rằng cơ sở dữ liệu đang được sử dụng bởi các ứng dụng khác nhau. bạn có thể gặp lỗi bên dưới.
Msg 5030, Mức 16, Trạng thái 2, Dòng 4
Không thể khóa riêng cơ sở dữ liệu để thực hiện thao tác.
Trong trường hợp này, bạn có thể hủy tất cả các kết nối trước khi bạn chạy tập lệnh đổi tên. Tập lệnh bên dưới có thể được sử dụng để hủy tất cả các kết nối trên cơ sở dữ liệu. Hãy đảm bảo với nhóm của bạn và các nhóm khác trước khi bạn hủy tất cả các kết nối trên cơ sở dữ liệu để đổi tên.
USE MASTER GO DECLARE @DatabaseName AS VARCHAR(500) -->Provide the DataBaseName for which want to Kill all processes. SET @DatabaseName='YourDataBaseName' DECLARE @Spid INT DECLARE KillProcessCur CURSOR FOR SELECT spid FROM sys.sysprocesses WHERE DB_NAME(dbid) = @DatabaseName OPEN KillProcessCur FETCH Next FROM KillProcessCur INTO @Spid WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @SQL VARCHAR(500)=NULL SET @SQL='Kill ' + CAST(@Spid AS VARCHAR(5)) EXEC (@SQL) PRINT 'ProcessID =' + CAST(@Spid AS VARCHAR(5)) + ' killed successfull' FETCH Next FROM KillProcessCur INTO @Spid END CLOSE KillProcessCur DEALLOCATE KillProcessCur