Scenario:
We worden vaak geconfronteerd met de situatie waarin we de database moeten hernoemen. Denk aan de situatie, u werkt als SQL Server-ontwikkelaar voor een financieel bedrijf en zij hebben de databasenaam TechBrothersIT en willen de naam wijzigen in Techbrothers. U moet de scripts aanleveren die kunnen worden uitgevoerd in de QA-, UAT- en productieomgeving.Oplossing:
Naam wijzigen via GUI:De naam van de database wijzigen is heel eenvoudig, u kunt gewoon met de rechtermuisknop op de database klikken en vervolgens Naam wijzigen kiezen.
De naam van een database wijzigen in SQL Server - SQL Server / TSQL-zelfstudieU zult zie dat de naam van de database u om wijziging zal vragen. Ga je gang en verander het en druk op Enter.
De naam van een database wijzigen in SQL Server - SQL Server / TSQL-zelfstudieDe naam van de database wijzigen met TSQL: U kunt TSQL gebruiken om de database in SQL Server te hernoemen.
1) Door Sp_Rename System Stored Procedure te gebruiken We kunnen sp_rename system Stored Procedure gebruiken om de database in de SQL-server te hernoemen. Laten we zeggen dat we TechBrtohersIT willen hernoemen naar TechBrother. We kunnen onderstaand script gebruiken.
sp_renamedb 'OldDatabaseName','NewDatabaseName' EXEC sp_renamedb 'TechBrothersIT','TechBrothers'
2) Gebruik Alter Database met Modify We kunnen het onderstaande script gebruiken om te hernoemen. In dit voorbeeld hernoem ik TechBrothersIT naar TechBrothers.
USE master; GO ALTER DATABASE TechBrothersIT Modify Name = TechBrothers ; GO
Veelvoorkomende fout: Laten we zeggen dat de database door verschillende applicaties wordt gebruikt. u krijgt mogelijk onderstaande foutmelding.
Msg 5030, Level 16, State 2, Line 4
De database kan niet exclusief worden vergrendeld om de bewerking uit te voeren.
In dit geval kunt u kan alle verbindingen beëindigen voordat u het hernoemen-script uitvoert. Het onderstaande script kan worden gebruikt om alle verbindingen in een database te beëindigen. Zorg ervoor dat u samen met uw team en andere teams alle verbindingen op de database verbreekt voor het hernoemen.
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