データベースの名前変更

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

この記事では、SQL Server Management Studio (SSMS) または Transact-SQL (T-SQL) を使用して、SQL Server、Azure SQL データベース、または Azure SQL Managed Instance のユーザー定義データベースの名前を変更する方法について説明します。 識別子の規則に従っていれば、データベースの名前にはいずれの文字も使用できます。

Note

Azure Synapse Analytics または Parallel Data Warehouse でデータベースの名前を変更するには、RENAME (Transact-SQL) ステートメントを使用します。

制限事項と制約事項

  • システム データベースの名前は変更できません。
  • 他のユーザーがデータベースにアクセスしている間は、データベースの名前を変更することはできません。
    • SQL Server Management Studio 利用状況モニターを使用して、データベースへの他の接続を検索し、それらを閉じます。 詳細については、「SQL Server Management Studio (SSMS) で利用状況モニターを開く」を参照してください。
    • SQL Server では、データベースをシングル ユーザー モードに設定することで、開いているすべての接続を閉じることができます。 詳細については、「 データベースをシングル ユーザー モードに設定する」を参照してください。
    • Azure SQL Database では、名前を変更するデータベースに対して他のユーザーが接続を開いていないことを確認する必要があります。
  • データベースの名前を変更しても、ディスク上のデータベース ファイルの物理名やファイルの論理名は変更されません。 詳細については、「 Database Files and Filegroups」を参照してください。
  • アクティブ geo レプリケーション リレーションシップで構成された Azure SQL データベースの名前を変更することはできません。

アクセス許可

データベースに対する ALTER 権限が必要です。

SQL Server Management Studio を使用します。

SQL Server Management Studio を使用して SQL Server または Azure SQL データベースの名前を変更するには、次の手順を使用します。

  1. SQL Server Management Studio で [オブジェクト エクスプローラー] を選択します。 オブジェクト エクスプローラーを開くには、F8 キーを押します。 または、上部メニューで [表示][オブジェクト エクスプローラー] の順に選択します。

  2. [オブジェクト エクスプローラー]で、SQL Server のインスタンスに接続して、そのインスタンスを展開します。

  3. データベースに対して開いている接続がないことを確認します。 SQL Server を使用している場合は、データベースをシングル ユーザー モードに設定することで、開いているすべての接続を閉じ、データベース名の変更中は他のユーザーが接続できないようにすることができます。

  4. オブジェクト エクスプローラーで [データベース] を展開し、名前を変更するデータベースを右クリックし、[名前の変更] を選択します。

  5. 新しいデータベース名を入力し、[OK] を選択します。

  6. データベースがご利用の既定のデータベースであった場合は、「名称変更後、既定のデータベースを再設定する」を参照してください。

  7. オブジェクト エクスプローラーのデータベース一覧を最新の情報に更新します。

Transact-SQL の使用

SQL Server データベースをシングル ユーザー モードにすることで名前を変更するには

SQL Server Management Studio で T-SQL を使用して SQL Server データベースの名前を変更するには、データベースをシングル ユーザー モードにして名前を変更した後、マルチモード ユーザーに戻す手順を含む次の手順を使用します。

  1. インスタンスの master データベースに接続します。
  2. クエリ ウィンドウを開きます。
  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、 MyTestDatabase データベースの名前を MyTestDatabaseCopyに変更します。

警告

排他的なアクセスを迅速に取得するために、このコード サンプルでは終了オプション WITH ROLLBACK IMMEDIATE を使用します。 これですべての未完了のトランザクションがロールバックされ、 MyTestDatabase データベースへの他のすべての接続は直ちに解除されます。

USE master;  
GO  
ALTER DATABASE MyTestDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE MyTestDatabase MODIFY NAME = MyTestDatabaseCopy;
GO  
ALTER DATABASE MyTestDatabaseCopy SET MULTI_USER;
GO
  1. 任意で、データベースがご利用の既定のデータベースであった場合、「名称変更後、既定のデータベースを再設定する」を参照してください。

Azure SQL Database データベースの名前を変更するには

SQL Server Management Studio で T-SQL を使用して Azure SQL データベースの名前を変更するには、次の手順を使用します。

  1. インスタンスの master データベースに接続します。

  2. クエリ ウィンドウを開きます。

  3. データベースが使用されていないことを確認します。

  4. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、 MyTestDatabase データベースの名前を MyTestDatabaseCopyに変更します。

    ALTER DATABASE MyTestDatabase MODIFY NAME = MyTestDatabaseCopy;
    

データベースの名前を変更した後のバックアップ

SQL Server 内のデータベースの名前を変更した後、master データベースをバックアップします。 Azure SQL データベースでは、バックアップは自動的に発生するため、この操作は必要ありません。

名称変更後、既定のデータベースを再設定する

名前を変更するデータベースが、SQL Server ログインの既定のデータベースとして設定されている場合、エラー 4064、Cannot open user default database が発生する可能性があります。 次のコマンドを使用して、既定値を名前を変更したデータベースに変更します。

USE [master]
GO
ALTER LOGIN [login] WITH DEFAULT_DATABASE=[new-database-name];
GO

次のステップ