次の方法で共有


データベースの名前変更

適用対象: 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] ステートメントを使用します。

制限事項

  • システム データベースの名前は変更できません。

  • 他のユーザーがデータベースにアクセスしている間は、データベースの名前を変更することはできません。

    • SSMS Activity Monitor を使用して、データベースへのその他の接続を検索し、それらを閉じます。 詳細については、「SQL Server Management Studio (SSMS) で利用状況モニターを開く」を参照してください。

    • SQL Server では、データベースをシングル ユーザー モードに設定することで、開いているすべての接続を閉じることができます。 詳細については、「 データベースをシングル ユーザー モードに設定する」を参照してください。

    • Azure SQL Database では、名前を変更するデータベースに対して他のユーザーが接続を開いていないことを確認する必要があります。

  • データベースの名前を変更しても、ディスク上のデータベース ファイルの物理名やファイルの論理名は変更されません。 詳細については、「 Database Files and Filegroups」を参照してください。

  • アクティブ geo レプリケーションリレーションシップで構成された Azure SQL データベースの名前を変更することはできません。

アクセス許可

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

SQL Server Management Studio (SSMS) の使用

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

  1. SSMS で [オブジェクト エクスプローラー] を選択します。 [オブジェクト エクスプローラー] を開くには、F8 キーを押します。 トップ メニューで、[表示]、[>]、[オブジェクト エクスプローラー]の順に選択します。

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

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

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

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

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

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

Transact-SQL の使用

SQL Server データベースをシングル ユーザー モードにして名前を変更する

SSMS で 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
    
  4. 任意で、データベースがご利用の既定のデータベースであった場合、「名称変更後、既定のデータベースを再設定する」を参照してください。

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

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、Can't open user default database が発生する可能性があります。 次のコマンドを使用して、既定値を名前を変更したデータベースに変更します。

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