Skenario:
Kita sering menghadapi situasi di mana kita perlu mengganti nama database. Pikirkan tentang situasi, Anda bekerja sebagai pengembang SQL Server untuk perusahaan Keuangan dan mereka memiliki nama database TechBrothersIT dan mereka ingin mengganti namanya menjadi Techbrothers. Anda perlu menyediakan skrip yang dapat dijalankan di lingkungan QA, UAT, dan Produksi.Solusi:
Mengganti nama dengan GUI:Mengganti nama database sangat mudah, Anda cukup Klik Kanan pada Database lalu pilih Rename.
Cara mengganti nama Database di SQL Server - Tutorial SQL Server / TSQL
Anda akan lihat bahwa nama database akan meminta Anda untuk mengubahnya. Silakan dan ubah dan tekan Enter. Cara Mengganti Nama Database di SQL Server - Tutorial SQL Server / TSQL
Cara Mengganti Nama Database dengan TSQL: Anda dapat menggunakan TSQL Untuk mengganti nama database di SQL Server.
1) Dengan menggunakan Sp_Rename System Stored ProcedureKita dapat menggunakan sp_rename system Stored Procedure untuk mengganti nama database di SQL server. Katakanlah kita ingin mengganti nama TechBrtohersIT menjadi TechBrother. Kita bisa menggunakan script di bawah ini.
sp_renamedb 'OldDatabaseName','NewDatabaseName' EXEC sp_renamedb 'TechBrothersIT','TechBrothers'
2) Gunakan Alter Database dengan Modify Kita dapat menggunakan skrip di bawah ini untuk mengganti nama. Dalam contoh ini, saya mengganti nama TechBrothersIT Menjadi TechBrothers.
USE master; GO ALTER DATABASE TechBrothersIT Modify Name = TechBrothers ; GO
Kesalahan Umum: Katakanlah database sedang digunakan oleh aplikasi yang berbeda. Anda mungkin mendapatkan kesalahan di bawah ini.
Msg 5030, Level 16, State 2, Line 4
Database tidak dapat dikunci secara eksklusif untuk melakukan operasi.
Dalam hal ini, Anda dapat mematikan semua koneksi sebelum Anda menjalankan skrip rename. Script di bawah ini dapat digunakan untuk mematikan semua koneksi di database. Pastikan dengan tim Anda dan tim lain sebelum Anda mematikan semua koneksi di database untuk mengganti nama.
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