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 / TSQLAnda 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 / TSQLCara 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