シナリオ:
データベースの名前を変更する必要がある状況に直面することがよくあります。状況を考えてみてください。あなたは金融会社のSQLServer開発者として働いており、データベース名はTechBrothersITであり、名前をTechbrothersに変更したいと考えています。 QA、UAT、本番環境で実行できるスクリプトを提供する必要があります。解決策:
GUIによる名前の変更:データベースの名前変更は非常に簡単です。データベースを右クリックして、[名前の変更]を選択するだけです。
SQLServerでデータベースの名前を変更する方法-SQLServer/TSQLチュートリアル
データベースの名前で変更を求めるプロンプトが表示されることを確認してください。先に進んで変更し、Enterキーを押します。 SQLServerでデータベースの名前を変更する方法-SQLServer/TSQLチュートリアル
TSQLを使用してデータベースの名前を変更する方法: TSQLを使用して、SQLServerのデータベースの名前を変更できます。
1)Sp_Renameシステムストアドプロシージャを使用することにより、sp_renameシステムストアドプロシージャを使用して、SQLサーバーのデータベースの名前を変更できます。 TechBrtohersITの名前をTechBrotherに変更したいとします。以下のスクリプトを使用できます。
sp_renamedb 'OldDatabaseName','NewDatabaseName' EXEC sp_renamedb 'TechBrothersIT','TechBrothers'
2)データベースの変更と変更の使用 以下のスクリプトを使用して名前を変更できます。この例では、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