web-dev-qa-db-ja.com

マルチユーザーモードでデータベースの名前を変更する方法

私はSQLSERVER2008および2008R2に取り組んでいます。マルチユーザーモードでデータベースの名前を変更するにはどうすればよいですか? sp_renameを使用していますが、次のエラーが返されます。

メッセージ15225、レベル11、状態1、プロシージャsp_rename、行338

14
Vikrant More

使用中のデータベースの名前を変更することはできません。メンテナンスウィンドウを待つか、データベースを強制的にシングルユーザーモードにします(これにより全員が追い出されます)。

USE [master];
GO
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
--EXEC sys.sp_renamedb @dbname = N'foo', @newname = N'bar';
ALTER DATABASE foo MODIFY NAME = bar; -- preferred way
GO
ALTER DATABASE bar SET MULTI_USER;
33
Aaron Bertrand

Sp_renameを使用してデータベースの名前を変更することはできません。問題のspはsp_renamedbになります。ただし、これはSQL Serverの将来のバージョンで削除される予定であり、推奨される方法は次のとおりです。

ALTER DATABASE dbname MODIFY NAME = newdbname;

ただし、データベースの排他ロックがないと、とにかくこれを行うことはできません。

6
MartW

SQL Server構成マネージャーを開き、サービスを停止して開始できます。これは、SQL Server2008および2012で問題なく機能します。

次に、SQL Server ManagementStudioでデータベースの名前を変更します。

「私のために働く」

実際には「警告」ではありませんが、まったく同じデータベースを復元したい場合は、オプションに移動して、mdfとldfの名前を変更します。

0
user2038230