お問い合わせ

メールでのお問合せ

メール

admin@foliates.biz

電話でのお問合せ

電話050-1741-0103
2024.09.13

SQL Server 2022 システム データベースの移動方法について ITコンサルタント 馮 壮

サムネイル

システムデータベースの移動は次の状況で役立つことがあります。
A:障害復旧時。例で言いますと、データベースがサスペクトモードになっている、もしくはハードウェア障害のためにシャットダウンされたなどです。
B:計画的な移転。
C:スケジュールされたディスク保守のための再配置。

SQL Server 2016と比較すると、以下のファイルが追加で生成されます。
model_msdbdata.mdf
model_msdblog.ldf
model_replicatedmaster.ldf
model_replicatedmaster.mdf

SQL Server 2022でシステム データベースを移動する方法を以下のステップで説明します。

1.masterデータベースを移動する手順
2.model、msdbデータベースを移動する手順
3.model_msdbdata、model_replicatedmasterデータベースを移動する手順

 

1.masterデータベースを移動する手順

-----------------------------
master.mdf
mastlog.ldf
-----------------------------

Step:

1-1.SQL Server データベース エンジンのサービス アカウントに、ファイルの新しい場所に対する完全な権限があることを確認します。
1-2.[スタート] メニューから、SQL Server 構成マネージャーを見つけて起動します。
1-3.[SQL Server サービス] ノードで、SQL Server のインスタンス (SQL Server (MSSQLSERVER) ) を右クリックし、[プロパティ] を選択します。
1-4.[SQL Server (instance_name) のプロパティ] ダイアログ ボックスで、[スタートアップ パラメーター] タブを選択します。
1-5.[既存のパラメーター] ボックスで、パラメーター -d を選択し、masterの新しいパスに変更し、[更新] を選択して変更を保存します。
1-6.[既存のパラメーター] ボックスで、パラメーター -l を選択し、masterログ ファイルの新しいパスに変更、[更新] を選択して変更を保存します。

例:
-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

別のドライブに変更する場合の例:
-dE:\SQLData\master.mdf
-lE:\SQLData\mastlog.ldf

1-7.[OK] を 選択して変更を保存し、[SQL Server (instance_name) のプロパティ] ダイアログ ボックスを閉じます。
1-8.SQL Server のインスタンスを停止するには、インスタンス名を右クリックし、[停止] を選択します。
1-9.master.mdfとmastlog.ldfファイルを新しい場所にコピーします。

 注意:robocopy コマンド等で、ファイル権限を保ったままの状態でコピーする

1-10.SQL Server のインスタンスを再起動します。
1-11.次のクエリを実行して、masterデータベースのファイル変更を確認します。

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

1-12.この時点で、SQL Server は正常に動作するはずです。ただし、Microsoft では、レジストリ エントリで調整します。
データベースファイルの新しいパスに値を変更します。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup\SQLDataRoot

1-13.コピー先の使用しないファイルを削除します。

 

2.model、msdbデータベースを移動する手順

-----------------------------
model.mdf
modellog.ldf
MSDBData.mdf
MSDBLog.ldf
-----------------------------

Step:

2-1.modelの場合以下のクエリを実行します。
 ALTER DATABASE model MODIFY FILE ( NAME = modeldev , FILENAME = 'new_path\model.mdf' );
 ALTER DATABASE model MODIFY FILE ( NAME = modellog , FILENAME = 'new_path\modellog.ldf' );

2-2.msdbの場合以下のクエリを実行します。
 ALTER DATABASE msdb MODIFY FILE ( NAME = MSDBData , FILENAME = 'new_path\MSDBData.mdf' );
 ALTER DATABASE msdb MODIFY FILE ( NAME = MSDBlog , FILENAME = 'new_path\MSDBlog.ldf' );

2-3.SQL Server のインスタンスを停止します。

2-4.robocopy コマンド等で、ファイル権限を保ったままの状態でコピーする

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

2-6.次のクエリを実行して、modelデータベースのファイル変更を確認します。
 SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files
 WHERE database_id = DB_ID(N'model');

2-7.次のクエリを実行して、msdbデータベースのファイル変更を確認します。
 SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files
 WHERE database_id = DB_ID(N'msdb');

2-8.コピー先の使用しないファイルを削除します。

 

3.model_msdbdata、model_replicatedmasterデータベースを移動する手順

-----------------------------
model_msdbdata.mdf
model_msdblog.ldf
mode_replicatedmaster.ldf
model_replicatedmaster.mdf
-----------------------------

Step:

3-1.model_msdbdataの場合以下のクエリを実行を実行します。
 ALTER DATABASE model_msdb MODIFY FILE ( NAME = MSDBData , FILENAME = 'new_path\model_msdbdata.mdf' );
 ALTER DATABASE model_msdb MODIFY FILE ( NAME = MSDBLog, FILENAME = 'new_path\model_msdblog.ldf' );

3-2.model_replicatedmasterの場合以下のクエリを実行を実行します。
 ALTER DATABASE model_replicatedmaster MODIFY FILE ( NAME = replicatedmaster, FILENAME = 'new_path\model_replicatedmaster.mdf');
 ALTER DATABASE model_replicatedmaster MODIFY FILE ( NAME =  replicatedmasterlog, FILENAME = 'new_path\model_replicatedmaster.ldf');

3-3.SQL Server のインスタンスを停止します。

3-4.robocopy コマンド等で、ファイル権限を保ったままの状態でコピーする

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

3-6.次のクエリを実行して、model_msdbデータベースのファイル変更を確認します。
 use master
 select * from model_msdb.sys.database_files

3-7.次のクエリを実行して、masterデータベースのファイル変更を確認します。
 use master
 select * from model_replicatedmaster.sys.database_files

3-8.コピー先の使用しないファイルを削除します。


注意点:移動先のフォルダに対して、[MSSQLSERVER]がフルコントロール権限を設定します。
該当フォルダの[プロパティ]>[セキュリティ]タブより、"NT SERVICE\MSSQLSERVER"を追加し、フルコントロール権限を付与します。