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-zelfstudie
U 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-zelfstudie
De 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