システム データベースの移動

このトピックでは、SQL Server のシステム データベースを移動する方法について説明します。 システム データベースの移動は、次の状況で便利な場合があります。

  • 障害復旧。 たとえば、ハードウェア障害により、データベースが問題のあるモードになっている場合や、シャットダウンされた場合など。

  • 計画に従った再配置。

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

次の手順は、SQL Server の同じインスタンス内でデータベース ファイルを移動する場合に適用されます。 SQL Server の別のインスタンスにデータベースを移動する場合や、別のサーバーに移動する場合は、バックアップと復元操作かデタッチとアタッチ操作を使用します。

このトピックの手順では、データベース ファイルの論理名が必要です。 論理名を取得するには、sys.master_files カタログ ビューで name 列に対するクエリを実行します。

重要な注意事項重要

システム データベースを移動した後に master データベースを再構築すると、すべてのシステム データベースがそれぞれ既定の場所にインストールされるため、システム データベースを再度移動する必要があります。

このトピックの内容

  • 計画に従った再配置とスケジュールされたディスク メンテナンスの手順

  • 障害復旧の手順

  • master データベースの移動

  • Resource データベースの移動

  • 補足情報: すべてのシステム データベースを移動した後

  • 使用例

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

計画に従った再配置やスケジュールされたメンテナンス操作の中でシステム データベースのデータ ファイルやログ ファイルを移動するには、次の手順を実行します。 この手順は、master データベースと Resource データベース以外のすべてのシステム データベースに適用されます。

  1. 移動対象のそれぞれのファイルに対して、次のステートメントを実行します。

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
    
  2. メンテナンスを行うため、SQL Server のインスタンスを停止するか、システムをシャットダウンします。 詳細については、「データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動」を参照してください。

  3. ファイルを新しい場所に移動します。

  4. SQL Server のインスタンスまたはサーバーを再起動します。 詳細については、「データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動」を参照してください。

  5. 次のクエリを実行して、ファイルが変更されたことを確認します。

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

msdb データベースが移動され、SQL Server のインスタンスで データベース メール が構成されている場合は、次の追加の手順を実行します。

  1. 次のクエリを実行して、msdb データベースで Service Broker が有効になっていることを確認します。

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

    Service Broker を有効にする方法の詳細については、「ALTER DATABASE (Transact-SQL)」を参照してください。

  2. テスト メールを送信して、データベース メールが動作していることを確認します。

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

障害復旧の手順

ハードウェア障害が原因でファイルを移動する必要がある場合、次の手順に従って別の場所にファイルを再配置します。 この手順は、master データベースと Resource データベース以外のすべてのシステム データベースに適用されます。

重要な注意事項重要

データベースを起動できないとき、つまり、データベースが問題のあるモードか復旧できない状態にある場合、ファイルを移動できるのは、sysadmin 固定ロールのメンバーだけです。

  1. SQL Server のインスタンスが起動していたら停止します。

  2. コマンド プロンプトで次のいずれかのコマンドを入力し、SQL Server のインスタンスを master のみを復旧するモードで開始します。 これらのコマンドで指定されるパラメーターでは、大文字と小文字が区別されます。 パラメーターが次のように指定されていない場合、コマンドは失敗します。

    • 既定 (MSSQLSERVER) のインスタンスの場合は、次のコマンドを実行します。

      NET START MSSQLSERVER /f /T3608
      
    • 名前付きインスタンスの場合は、次のコマンドを実行します。

      NET START MSSQL$instancename /f /T3608
      

    詳細については、「データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動」を参照してください。

  3. 移動対象の各ファイルに対し、sqlcmd コマンドか SQL Server Management Studio を使用して、次のステートメントを実行します。

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

    sqlcmd ユーティリティの使用方法の詳細については、「sqlcmd ユーティリティの使用」を参照してください。

  4. sqlcmd ユーティリティまたは SQL Server Management Studio を終了します。

  5. SQL Server のインスタンスを停止します。 たとえば、NET STOP MSSQLSERVER を実行します。

  6. ファイルを新しい場所に移動します。

  7. SQL Server のインスタンスを再起動します。 たとえば、NET START MSSQLSERVER を実行します。

  8. 次のクエリを実行して、ファイルが変更されたことを確認します。

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

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

master データベースの移動

master データベースを移動するには、次の手順を実行します。

  1. [スタート] ボタンをクリックし、[すべてのプログラム][Microsoft SQL Server][構成ツール] の順にポイントし、[SQL Server 構成マネージャー] をクリックします。

  2. [SQL Server のサービス] ノードで、SQL Server のインスタンス (たとえば、[SQL Server (MSSQLSERVER)]) を右クリックし、[プロパティ] をクリックします。

  3. [SQL Server (instance_name) のプロパティ] ダイアログ ボックスで、[起動時のパラメーター] タブをクリックします。

  4. [既存のパラメーター] ボックスで、–d パラメーターを選択して master データ ファイルを移動します。 [更新] をクリックして変更を保存します。

    [起動時のパラメーターの指定] ボックスで、パラメーターを master データベースの新しいパスに変更します。

  5. [既存のパラメーター] ボックスで、–l パラメーターを選択して master ログ ファイルを移動します。 [更新] をクリックして変更を保存します。

    [起動時のパラメーターの指定] ボックスで、パラメーターを master データベースの新しいパスに変更します。

    -d パラメーターの後にデータ ファイルのパラメーター値を指定し、-l パラメーターの後にログ ファイルのパラメーター値を指定します。 次の例は、master データ ファイルの既定の場所のパラメーター値を示します。

    -dC:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\master.mdf

    -lC:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

    master データ ファイルの計画に従った再配置場所が E:\SQLData の場合、パラメーター値を次のように変更します。

    -dE:\SQLData\master.mdf

    -lE:\SQLData\mastlog.ldf

  6. インスタンス名を右クリックして [停止] をクリックし、SQL Server のインスタンスを停止します。

  7. master.mdf ファイルおよび mastlog.ldf ファイルを新しい場所に移動します。

  8. SQL Server のインスタンスを再起動します。

  9. master データベースのファイルが変更されたことを確認するため、次のクエリを実行します。

    SELECT name, physical_name AS CurrentLocation, state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID('master');
    GO
    

Resource データベースの移動

Resource データベースの場所は、<drive>:\Program Files\Microsoft SQL Server\MSSQL11.<instance_name>\MSSQL\Binn\ です。 データベースを移動することはできません。

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

補足情報: すべてのシステム データベースを移動した後

すべてのシステム データベースを、新しいドライブやボリューム、または別のドライブ文字を使用した別のサーバーに移動した場合は、次の更新を行います。

  • SQL Server エージェントのログ パスを変更します。 このパスを更新しないと、SQL Server エージェントは起動しません。

  • データベースの既定の場所を変更します。 既定の場所として指定したドライブ文字やパスが存在しない場合、新しいデータベースが作成されない可能性があります。

SQL Server エージェントのログ パスの変更

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

  2. [エラー ログ] を右クリックし、[構成] をクリックします。

  3. [SQL Server エージェント エラー ログの構成] ダイアログ ボックスで、SQLAGENT.OUT ファイルの新しい場所を指定します。 既定の場所は C:\Program Files\Microsoft SQL Server\MSSQL11.<インスタンス名>\MSSQL\Log\ です。

データベースの既定の場所の変更

  1. SQL Server Management Studio のオブジェクト エクスプローラーで、SQL Server のサーバーを右クリックし、[プロパティ] をクリックします。

  2. [サーバーのプロパティ] ダイアログ ボックスで、[データベースの設定] を選択します。

  3. [データベースの既定の場所] で、データ ファイルとログ ファイルの両方の新しい場所を参照します。

  4. 変更を完了するため、SQL Server サービスをいったん停止してから開始します。

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

使用例

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

次の例では、計画に従った再配置の一環として、tempdb データ ファイルとログ ファイルを新しい場所に移動します。

注意

tempdb は SQL Server のインスタンスが開始されるたびに再作成されるので、データ ファイルとログ ファイルを物理的に移動する必要はありません。 手順 3. でサービスを再起動すると、新しい場所にファイルが作成されます。 サービスを再起動するまでは、tempdb は既存の場所のデータ ファイルとログ ファイルを使用し続けます。

  1. tempdb データベースの論理ファイル名と、ディスク上での現在の場所を確認します。

    SELECT name, physical_name AS CurrentLocation
    FROM sys.master_files
    WHERE database_id = DB_ID(N'tempdb');
    GO
    
  2. 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 Server のインスタンスをいったん停止してから再起動します。

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

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

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

関連項目

参照

ALTER DATABASE (Transact-SQL)

概念

Resource データベース

tempdb データベース

master データベース

msdb データベース

model データベース

ユーザー データベースの移動

データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動

システム データベースの再構築

その他の技術情報

データベース ファイルの移動