「ip_ent_site」というデータベースがあります。そして、たとえば「ip_ent_site1」に名前を変更したいと思います。
右クリックして名前を変更しましたが、失敗し続けています。これはエラーメッセージです。
誰でも助けることができますか?
これは、開いているトランザクションがあるためです。それらのトランザクションを強制終了できる場合、これはこのSQLで簡単に実行できます。
ALTER DATABASE ip_ent_site
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
sp_rename 'ip_ent_site', 'new_db_name' ,'DATABASE';
GO
ALTER DATABASE new_db_name
SET MULTI_USER
GO
名前を変更する前に、データベースをシングルユーザーモードに設定します [〜#〜] msdn [〜#〜]
USE master;
GO
ALTER DATABASE ip_ent_site
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
その後、名前を変更します
USE master
GO
ALTER DATABASE ip_ent_site
Modify Name = ip_ent_site1
GO
そして、マルチユーザーモードに戻します
ALTER DATABASE ip_ent_site1
SET MULTI_USER;
その理由は、データベースの名前を変更している間、データベースがデータベースへの他の接続/トランザクションを防止する必要があるためです。
Dbをロックする簡単なスクリプト:
ALTER DATABASE [ip_ent_site] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE [ip_ent_site] MODIFY NAME = [ip_ent_site_new]
GO
ALTER DATABASE [ip_ent_site_new] SET MULTI_USER;
GO
次の機能を有効にするには
右クリックして名前を変更
dB:
以下のクエリを実行
使用マスター;
GO
sp_renamedb @dbname = 'old_name'、@ newname = 'new_name'
これは、データベース名を変更する最も簡単な方法です。このコマンドを実行する前に、すべてのクエリウィンドウを閉じたことを確認してください。
EXEC sp_renamedb 'old_Name'、 'new_Name'
これを試してください、それは動作します。
ALTER DATABASE GWPRD_CMCC-古いデータベース名
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO ALTER DATABASE GWPRD_CMCC-古いデータベース名
MODIFY NAME = GWPRD_CMCC_1 --new db name
GO ALTER DATABASE GWPRD_CMCC_1-新しいデータベース名SET MULTI_USER GO
「論理ファイル名」も変更すべきではありませんか?
ALTER DATABASE [testdb] MODIFY FILE (NAME=N'testdbold ', NEWNAME=N'testdb') GO ALTER DATABASE [testdb] MODIFY FILE (NAME=N'testdbold', NEWNAME=N'testdb_log') GO
クエリを使用してSQLDatabase名を変更する
[master] goを使用します
データベースの変更Old_database_name名前の変更= New_database_name
または
sp_renameDB 'old_dbname'、 'new_dbname'
システムプロシージャの実行sp_who2
データベースを使用するセッションを見つけて、アプリケーションを閉じるか、 kill コマンドでセッションを終了します。