システム データベースの移動Move System Databases

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

このトピックでは、 SQL ServerSQL Serverのシステム データベースを移動する方法について説明します。This topic describes how to move system databases in SQL ServerSQL Server. システム データベースの移動は、次の状況で便利な場合があります。Moving system databases may be useful in the following situations:

  • 障害復旧。Failure recovery. たとえば、ハードウェア障害により、データベースが問題のあるモードになっている場合や、シャットダウンされた場合など。For example, the database is in suspect mode or has shut down because of a hardware failure.

  • 計画に従った再配置。Planned relocation.

  • スケジュールされたディスク メンテナンスとしての再配置。Relocation for scheduled disk maintenance.

次の手順は、 SQL ServerSQL Serverの同じインスタンス内でデータベース ファイルを移動する場合に適用されます。The following procedures apply to moving database files within the same instance of SQL ServerSQL Server. SQL ServerSQL Server の別のインスタンスにデータベースを移動する場合や、別のサーバーに移動する場合は、 バックアップと復元 操作を使用します。To move a database to another instance of SQL ServerSQL Server or to another server, use the backup and restore operation.

このトピックの手順では、データベース ファイルの論理名が必要です。The procedures in this topic require the logical name of the database files. 論理名を取得するには、 sys.master_files カタログ ビューで name 列に対するクエリを実行します。To obtain the name, query the name column in the sys.master_files catalog view.

重要

システム データベースを移動した後に master データベースを再構築すると、すべてのシステム データベースがそれぞれ既定の場所にインストールされるため、システム データベースを再度移動する必要があります。If you move a system database and later rebuild the master database, you must move the system database again because the rebuild operation installs all system databases to their default location.

重要

ファイルを移動すると、 SQL ServerSQL Server サービス アカウントに、新しいファイル フォルダーの場所にあるファイルへのアクセス権が必要になります。After moving files, the SQL ServerSQL Server service account must have permission to access the files in new file folder location.

計画に従った再配置とスケジュールされたディスク メンテナンスの手順Planned Relocation and Scheduled Disk Maintenance Procedure

計画に従った再配置やスケジュールされたメンテナンス操作の中でシステム データベースのデータ ファイルやログ ファイルを移動するには、次の手順を実行します。To move a system database data or log file as part of a planned relocation or scheduled maintenance operation, follow these steps. この手順は、master データベースと Resource データベース以外のすべてのシステム データベースに適用されます。This procedure applies to all system databases except the master and Resource databases.

  1. 移動対象のそれぞれのファイルに対して、次のステートメントを実行します。For each file to be moved, run the following statement.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )  
    
  2. メンテナンスを行うため、 SQL ServerSQL Server のインスタンスを停止するか、システムをシャットダウンします。Stop the instance of SQL ServerSQL Server or shut down the system to perform maintenance. 詳しくは、「 データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動」をご覧ください。For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  3. ファイルを新しい場所に移動します。Move the file or files to the new location.

  4. SQL ServerSQL Server のインスタンスまたはサーバーを再起動します。Restart the instance of SQL ServerSQL Server or the server. 詳細については、「 データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動 」を参照してください。For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  5. 次のクエリを実行して、ファイルが変更されたことを確認します。Verify the file change by running the following query.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

msdb データベースが移動され、 SQL ServerSQL Server のインスタンスで データベース メールが構成されている場合は、次の追加の手順を実行します。If the msdb database is moved and the instance of SQL ServerSQL Server is configured for Database Mail, complete these additional steps.

  1. 次のクエリを実行して、msdb データベースで Service BrokerService Broker が有効になっていることを確認します。Verify that Service BrokerService Broker is enabled for the msdb database by running the following query.

    SELECT is_broker_enabled   
    FROM sys.databases  
    WHERE name = N'msdb';  
    

    Service BrokerService Broker を有効にする方法の詳細については、「ALTER DATABASE (Transact-SQL)」を参照してください。For more information about enabling Service BrokerService Broker, see ALTER DATABASE (Transact-SQL).

  2. テスト メールを送信して、データベース メールが動作していることを確認します。Verify that Database Mail is working by sending a test mail.

障害復旧の手順Failure Recovery Procedure

ハードウェア障害が原因でファイルを移動する必要がある場合、次の手順に従って別の場所にファイルを再配置します。If a file must be moved because of a hardware failure, follow these steps to relocate the file to a new location. この手順は、master データベースと Resource データベース以外のすべてのシステム データベースに適用されます。This procedure applies to all system databases except the master and Resource databases.

重要

データベースを起動できないとき、つまり、データベースが問題のあるモードか復旧できない状態にある場合、ファイルを移動できるのは、sysadmin 固定ロールのメンバーだけです。If the database cannot be started, that is it is in suspect mode or in an unrecovered state, only members of the sysadmin fixed role can move the file.

  1. SQL ServerSQL Server のインスタンスが起動していたら停止します。Stop the instance of SQL ServerSQL Server if it is started.

  2. コマンド プロンプトで次のいずれかのコマンドを入力し、 SQL ServerSQL Server のインスタンスを master のみを復旧するモードで開始します。Start the instance of SQL ServerSQL Server in master-only recovery mode by entering one of the following commands at the command prompt. これらのコマンドで指定されるパラメーターでは、大文字と小文字が区別されます。The parameters specified in these commands are case sensitive. パラメーターが次のように指定されていない場合、コマンドは失敗します。The commands fail when the parameters are not specified as shown.

    • 既定 (MSSQLSERVER) のインスタンスの場合は、次のコマンドを実行します。For the default (MSSQLSERVER) instance, run the following command:

      NET START MSSQLSERVER /f /T3608
      
    • 名前付きインスタンスの場合は、次のコマンドを実行します。For a named instance, run the following command:

      NET START MSSQL$instancename /f /T3608
      

    詳しくは、「 データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動」をご覧ください。For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  3. 移動対象の各ファイルに対して、 sqlcmd コマンドか [SQL Server Management Studio]SQL Server Management Studio を使用して、次のステートメントを実行します。For each file to be moved, use sqlcmd commands or [SQL Server Management Studio]SQL Server Management Studio to run the following statement.

    ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )  
    

    sqlcmd ユーティリティの使用方法については、「 sqlcmd ユーティリティの使用」を参照してください。For more information about using the sqlcmd utility, see Use the sqlcmd Utility.

  4. sqlcmd ユーティリティまたは [SQL Server Management Studio]SQL Server Management Studioを終了します。Exit the sqlcmd utility or [SQL Server Management Studio]SQL Server Management Studio.

  5. SQL ServerSQL Serverのインスタンスを停止します。Stop the instance of SQL ServerSQL Server. たとえば、 NET STOP MSSQLSERVERを実行します。For example, run NET STOP MSSQLSERVER.

  6. ファイルを新しい場所に移動します。Move the file or files to the new location.

  7. SQL ServerSQL Serverのインスタンスを再起動します。Restart the instance of SQL ServerSQL Server. たとえば、 NET START MSSQLSERVERを実行します。For example, run NET START MSSQLSERVER.

  8. 次のクエリを実行して、ファイルが変更されたことを確認します。Verify the file change by running the following query.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

master データベースの移動Moving the master Database

master データベースを移動するには、次の手順を実行します。To move the master database, follow these steps.

  1. [スタート] ボタンをクリックし、 [すべてのプログラム][Microsoft SQL Server][構成ツール] の順にポイントし、 [SQL Server 構成マネージャー] をクリックします。From the Start menu, point to All Programs, point to Microsoft SQL Server, point to Configuration Tools, and then click SQL Server Configuration Manager.

  2. [SQL Server のサービス] ノードで、 SQL ServerSQL Server のインスタンス (たとえば、 [SQL Server (MSSQLSERVER)]) を右クリックし、 [プロパティ] をクリックします。In the SQL Server Services node, right-click the instance of SQL ServerSQL Server (for example, SQL Server (MSSQLSERVER)) and choose Properties.

  3. [SQL Server (instance_name) のプロパティ] ダイアログ ボックスで、 [起動時のパラメーター] タブをクリックします。In the SQL Server (instance_name) Properties dialog box, click the Startup Parameters tab.

  4. [既存のパラメーター] ボックスで -d パラメーターを選択して、マスター データ ファイルを移動します。In the Existing parameters box, select the -d parameter to move the master data file. [更新] をクリックして変更を保存します。Click Update to save the change.

    [起動時のパラメーターの指定] ボックスで、パラメーターを master データベースの新しいパスに変更します。In the Specify a startup parameter box, change the parameter to the new path of the master database.

  5. [既存のパラメーター] ボックスで -l パラメーターを選択して、マスター ログ ファイルを移動します。In the Existing parameters box, select the -l parameter to move the master log file. [更新] をクリックして変更を保存します。Click Update to save the change.

    [起動時のパラメーターの指定] ボックスで、パラメーターを master データベースの新しいパスに変更します。In the Specify a startup parameter box, change the parameter to the new path of the master database.

    -d パラメーターの後にデータ ファイルのパラメーター値を指定し、 -l パラメーターの後にログ ファイルのパラメーター値を指定します。The parameter value for the data file must follow the -d parameter and the value for the log file must follow the -l parameter. 次の例は、マスター データ ファイルの既定の場所のパラメーター値を示します。The following example shows the parameter values for the default location of the master data file.

    -dC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\master.mdf

    -lC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

    マスター データ ファイルの計画に従った再配置場所が E:\SQLDataの場合、パラメーター値を次のように変更します。If the planned relocation for the master data file is E:\SQLData, the parameter values would be changed as follows:

    -dE:\SQLData\master.mdf

    -lE:\SQLData\mastlog.ldf

  6. インスタンス名を右クリックして SQL ServerSQL Server [停止] をクリックし、 のインスタンスを停止します。Stop the instance of SQL ServerSQL Server by right-clicking the instance name and choosing Stop.

  7. master.mdf ファイルおよび mastlog.ldf ファイルを新しい場所に移動します。Move the master.mdf and mastlog.ldf files to the new location.

  8. SQL ServerSQL Serverのインスタンスを再起動します。Restart the instance of SQL ServerSQL Server.

  9. master データベースのファイルが変更されたことを確認するため、次のクエリを実行します。Verify the file change for the master database by running the following query.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID('master');  
    GO  
    
  10. この時点で、SQL Server は通常どおり実行されるはずです。At this point SQL Server should run normally. ただし、Microsoft では、 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup( instance_IDMSSQL13.MSSQLSERVERのようになります) のレジストリ エントリを調整することもお勧めします。However Microsoft recommends also adjusting the registry entry at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup, where instance_ID is like MSSQL13.MSSQLSERVER. そのハイブで、 SQLDataRoot 値を新しいパスに変更します。In that hive, change the SQLDataRoot value to the new path. レジストリの更新に失敗すると、修正プログラムの適用やアップグレードが失敗する可能性があります。Failure to update the registry can cause patching and upgrading to fail.

Resource データベースの移動Moving the Resource Database

Resource データベースの既定の場所は、<drive>:\Program Files\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Binn\ です。The location of the Resource database is <drive>:\Program Files\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Binn\. データベースを移動することはできません。The database cannot be moved.

補足情報:すべてのシステム データベースを移動した後Follow-up: After Moving All System Databases

すべてのシステム データベースを、新しいドライブやボリューム、または別のドライブ文字を使用した別のサーバーに移動した場合は、次の更新を行います。If you have moved all of the system databases to a new drive or volume or to another server with a different drive letter, make the following updates.

  • SQL Server エージェントのログ パスを変更します。Change the SQL Server Agent log path. このパスを更新しないと、SQL Server エージェントは起動しません。If you do not update this path, SQL Server Agent will fail to start.

  • データベースの既定の場所を変更します。Change the database default location. 既定の場所として指定したドライブ文字やパスが存在しない場合、新しいデータベースが作成されない可能性があります。Creating a new database may fail if the drive letter and path specified as the default location do not exist.

SQL Server エージェントのログ パスの変更Change the SQL Server Agent Log Path

  1. SQL Server Management Studio のオブジェクト エクスプローラーで、 [SQL Server エージェント] を展開します。From SQL Server Management Studio, in Object Explorer, expand SQL Server Agent.

  2. [エラー ログ] を右クリックし、 [構成] をクリックします。Right-click Error Logs and click Configure.

  3. SQL Server エージェント エラー ログの構成] ダイアログ ボックスで、SQLAGENT.OUT ファイルの新しい場所を指定します。In the Configure SQL Server Agent Error Logs dialog box, specify the new location of the SQLAGENT.OUT file. 既定の場所は、C:\Program Files\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Log\ です。The default location is C:\Program Files\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Log\.

データベースの既定の場所の変更Change the database default location

  1. SQL Server Management Studio のオブジェクト エクスプローラーで、SQL Server のサーバーを右クリックし、 [プロパティ] をクリックします。From SQL Server Management Studio, in Object Explorer, right-click the SQL Server server and click Properties.

  2. [サーバーのプロパティ] ダイアログ ボックスで、 [データベースの設定] を選択します。In the Server Properties dialog box, select Database Settings.

  3. [データベースの既定の場所] で、データ ファイルとログ ファイルの両方の新しい場所を参照します。Under Database Default Locations, browse to the new location for both the data and log files.

  4. 変更を完了するため、SQL Server サービスをいったん停止してから開始します。Stop and start the SQL Server service to complete the change.

使用例Examples

A.A. tempdb データベースを移動するMoving the tempdb database

次の例では、計画に従った再配置の一環として、 tempdb データ ファイルとログ ファイルを新しい場所に移動します。The following example moves the tempdb data and log files to a new location as part of a planned relocation.

注意

tempdb は SQL ServerSQL Server のインスタンスが開始されるたびに再作成されるので、データ ファイルとログ ファイルを物理的に移動する必要はありません。Because tempdb is re-created each time the instance of SQL ServerSQL Server is started, you do not have to physically move the data and log files. 手順 3. でサービスを再起動すると、新しい場所にファイルが作成されます。The files are created in the new location when the service is restarted in step 3. サービスを再起動するまでは、tempdb は既存の場所のデータ ファイルとログ ファイルを使用し続けます。Until the service is restarted, tempdb continues to use the data and log files in existing location.

  1. tempdb データベースの論理ファイル名と、ディスク上での現在の場所を確認します。Determine the logical file names of the tempdb database and their current location on the disk.

    SELECT name, physical_name AS CurrentLocation  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'tempdb');  
    GO  
    
  2. ALTER DATABASEを使用して、各ファイルの場所を変更します。Change the location of each file by using ALTER DATABASE.

    USE master;  
    GO  
    ALTER DATABASE tempdb   
    MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');  
    GO  
    ALTER DATABASE tempdb   
    MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');  
    GO  
    
  3. SQL ServerSQL Serverのインスタンスをいったん停止してから再起動します。Stop and restart the instance of SQL ServerSQL Server.

  4. ファイルの変更を確認します。Verify the file change.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'tempdb');  
    
  5. tempdb.mdf ファイルおよび templog.ldf ファイルを元の場所から削除します。Delete the tempdb.mdf and templog.ldf files from the original location.

参照See Also

Resource データベース Resource Database
tempdb データベース tempdb Database
master データベース master Database
msdb データベース msdb Database
model データベース model Database
ユーザー データベースの移動 Move User Databases
データベース ファイルの移動 Move Database Files
データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動 Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service
ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
システム データベースの再構築Rebuild System Databases