システム データベースの移動
このトピックでは、SQL Server のシステム データベースを移動する方法について説明します。 システム データベースの移動は、次の状況で便利な場合があります。
障害復旧。 たとえば、ハードウェア障害により、データベースが問題のあるモードになっている場合や、シャットダウンされた場合など。
計画に従った再配置。
スケジュールされたディスク メンテナンスとしての再配置。
次の手順は、SQL Server の同じインスタンス内でデータベース ファイルを移動する場合に適用されます。 SQL Server の別のインスタンスにデータベースを移動する場合や、別のサーバーに移動する場合は、バックアップと復元操作かデタッチとアタッチ操作を使用します。
このトピックの手順では、データベース ファイルの論理名が必要です。 論理名を取得するには、sys.master_files カタログ ビューで name 列に対するクエリを実行します。
重要 |
---|
システム データベースを移動した後に master データベースを再構築すると、すべてのシステム データベースがそれぞれ既定の場所にインストールされるため、システム データベースを再度移動する必要があります。 |
このトピックの内容
計画に従った再配置とスケジュールされたディスク メンテナンスの手順
障害復旧の手順
master データベースの移動
Resource データベースの移動
補足情報: すべてのシステム データベースを移動した後
使用例
計画に従った再配置とスケジュールされたディスク メンテナンスの手順
計画に従った再配置やスケジュールされたメンテナンス操作の中でシステム データベースのデータ ファイルやログ ファイルを移動するには、次の手順を実行します。 この手順は、master データベースと Resource データベース以外のすべてのシステム データベースに適用されます。
移動対象のそれぞれのファイルに対して、次のステートメントを実行します。
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
メンテナンスを行うため、SQL Server のインスタンスを停止するか、システムをシャットダウンします。 詳細については、「データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動」を参照してください。
ファイルを新しい場所に移動します。
SQL Server のインスタンスまたはサーバーを再起動します。 詳細については、「データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動」を参照してください。
次のクエリを実行して、ファイルが変更されたことを確認します。
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
msdb データベースが移動され、SQL Server のインスタンスで データベース メール が構成されている場合は、次の追加の手順を実行します。
次のクエリを実行して、msdb データベースで Service Broker が有効になっていることを確認します。
SELECT is_broker_enabled FROM sys.databases WHERE name = N'msdb';
Service Broker を有効にする方法の詳細については、「ALTER DATABASE (Transact-SQL)」を参照してください。
テスト メールを送信して、データベース メールが動作していることを確認します。
[先頭に戻る]
障害復旧の手順
ハードウェア障害が原因でファイルを移動する必要がある場合、次の手順に従って別の場所にファイルを再配置します。 この手順は、master データベースと Resource データベース以外のすべてのシステム データベースに適用されます。
重要 |
---|
データベースを起動できないとき、つまり、データベースが問題のあるモードか復旧できない状態にある場合、ファイルを移動できるのは、sysadmin 固定ロールのメンバーだけです。 |
SQL Server のインスタンスが起動していたら停止します。
コマンド プロンプトで次のいずれかのコマンドを入力し、SQL Server のインスタンスを master のみを復旧するモードで開始します。 これらのコマンドで指定されるパラメーターでは、大文字と小文字が区別されます。 パラメーターが次のように指定されていない場合、コマンドは失敗します。
既定 (MSSQLSERVER) のインスタンスの場合は、次のコマンドを実行します。
NET START MSSQLSERVER /f /T3608
名前付きインスタンスの場合は、次のコマンドを実行します。
NET START MSSQL$instancename /f /T3608
詳細については、「データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動」を参照してください。
移動対象の各ファイルに対し、sqlcmd コマンドか SQL Server Management Studio を使用して、次のステートメントを実行します。
ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
sqlcmd ユーティリティの使用方法の詳細については、「sqlcmd ユーティリティの使用」を参照してください。
sqlcmd ユーティリティまたは SQL Server Management Studio を終了します。
SQL Server のインスタンスを停止します。 たとえば、NET STOP MSSQLSERVER を実行します。
ファイルを新しい場所に移動します。
SQL Server のインスタンスを再起動します。 たとえば、NET START MSSQLSERVER を実行します。
次のクエリを実行して、ファイルが変更されたことを確認します。
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
[先頭に戻る]
master データベースの移動
master データベースを移動するには、次の手順を実行します。
[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft SQL Server]、[構成ツール] の順にポイントし、[SQL Server 構成マネージャー] をクリックします。
[SQL Server のサービス] ノードで、SQL Server のインスタンス (たとえば、[SQL Server (MSSQLSERVER)]) を右クリックし、[プロパティ] をクリックします。
[SQL Server (instance_name) のプロパティ] ダイアログ ボックスで、[起動時のパラメーター] タブをクリックします。
[既存のパラメーター] ボックスで、–d パラメーターを選択して master データ ファイルを移動します。 [更新] をクリックして変更を保存します。
[起動時のパラメーターの指定] ボックスで、パラメーターを master データベースの新しいパスに変更します。
[既存のパラメーター] ボックスで、–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
インスタンス名を右クリックして [停止] をクリックし、SQL Server のインスタンスを停止します。
master.mdf ファイルおよび mastlog.ldf ファイルを新しい場所に移動します。
SQL Server のインスタンスを再起動します。
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 エージェントのログ パスの変更
SQL Server Management Studio のオブジェクト エクスプローラーで、[SQL Server エージェント] を展開します。
[エラー ログ] を右クリックし、[構成] をクリックします。
[SQL Server エージェント エラー ログの構成] ダイアログ ボックスで、SQLAGENT.OUT ファイルの新しい場所を指定します。 既定の場所は C:\Program Files\Microsoft SQL Server\MSSQL11.<インスタンス名>\MSSQL\Log\ です。
データベースの既定の場所の変更
SQL Server Management Studio のオブジェクト エクスプローラーで、SQL Server のサーバーを右クリックし、[プロパティ] をクリックします。
[サーバーのプロパティ] ダイアログ ボックスで、[データベースの設定] を選択します。
[データベースの既定の場所] で、データ ファイルとログ ファイルの両方の新しい場所を参照します。
変更を完了するため、SQL Server サービスをいったん停止してから開始します。
[先頭に戻る]
使用例
A. tempdb データベースを移動する
次の例では、計画に従った再配置の一環として、tempdb データ ファイルとログ ファイルを新しい場所に移動します。
注 |
---|
tempdb は SQL Server のインスタンスが開始されるたびに再作成されるので、データ ファイルとログ ファイルを物理的に移動する必要はありません。 手順 3. でサービスを再起動すると、新しい場所にファイルが作成されます。 サービスを再起動するまでは、tempdb は既存の場所のデータ ファイルとログ ファイルを使用し続けます。 |
tempdb データベースの論理ファイル名と、ディスク上での現在の場所を確認します。
SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); GO
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
SQL Server のインスタンスをいったん停止してから再起動します。
ファイルの変更を確認します。
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');
tempdb.mdf ファイルおよび templog.ldf ファイルを元の場所から削除します。
[先頭に戻る]
関連項目
参照
概念
データベース エンジン、SQL Server エージェント、SQL Server Browser サービスの開始、停止、一時停止、再開、および再起動