データベースの名前変更

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

注意

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]

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

次のステップ