Сценарий:
Често се сблъскваме със ситуацията, в която трябва да преименуваме базата данни. Помислете за ситуацията, вие работите като разработчик на SQL Server за финансова фирма и те имат името на базата данни TechBrothersIT и биха искали да преименуват на Techbrothers. Трябва да предоставите скриптовете, които могат да се изпълняват в QA, UAT и производствена среда.Решение:
Преименуване чрез GUI:Преименуването на база данни е много лесно, можете просто да щракнете с десния бутон върху базата данни и след това да изберете Преименуване.
Как да преименувате база данни в SQL Server - SQL Server / TSQL урок
Ще вижте, че името на базата данни ще ви подкани за промяна. Продължете и го променете и натиснете Enter. Как да преименувате база данни в SQL Server - SQL Server / TSQL урок
Как да преименувате база данни с помощта на TSQL: Можете да използвате TSQL, за да преименувате база данни в SQL Server.
1) Чрез използване на Sp_Rename System Stored ProcedureНие можем да използваме sp_rename System Stored Procedure за преименуване на база данни в SQL сървър. Да кажем, че бихме искали да преименуваме TechBrtohersIT на TechBrother. Можем да използваме скрипта по-долу.
sp_renamedb 'OldDatabaseName','NewDatabaseName' EXEC sp_renamedb 'TechBrothersIT','TechBrothers'
2) Използвайте Alter Database с Modify Можем да използваме скрипта по-долу, за да преименуваме. В този пример преименувам TechBrothersIT на TechBrothers.
USE master; GO ALTER DATABASE TechBrothersIT Modify Name = TechBrothers ; GO
Честа грешка: Да кажем, че базата данни се използва от различни приложения. може да получите грешка по-долу.
Съобщение 5030, ниво 16, състояние 2, ред 4
База данни не може да бъде изключително заключена за извършване на операцията.
В този случай вие може да убие всички връзки, преди да стартирате скрипт за преименуване. Скриптът по-долу може да се използва за унищожаване на всички връзки в база данни. Уверете се, че с вашия екип и други екипи, преди да прекратите всички връзки в базата данни за преименуване.
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