SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2022 の model_replicatedmaster / model_msdb について

leave a comment

SQL Server 2022 では、システムデータベースのディレクトリに、次のデータベース用のファイルが格納されています。

  • model_replicatedmaster
    • model_replicatedmaster.mdf
    • model_replicatedmaster.ldf
  • model_msdb
    • model_msdbdata.mdf
    • model_msdblog.ldf

これらのファイルは、SQL Server 2019 でも存在していたのですが、通常のインスタンスでは使用されていませんでした。

SQL Server 2022 になると、状況が変わり、これらのファイルが使用されているデータベースとして model_replicatedmaster / model_msdb というデータベースが SSMS や DMV では表示されませんが内部的に存在するようになり、基本構成としてファイルが使用されるようになりました。

現状、これらのデータベースの情報が公開されているものはないのですが、2022 で新しく追加されたシステムデータベースとなるため、本投稿で現在調べられていることをまとめておきたいと思います。

model_replicatedmaster / model_msdb とは?

冒頭に記載したようにこれらのデータベース用のファイルは SQL Server 2019 から存在するようになりましたが、実際に使用されているのは特定の構成の場合のみで、それ以外の構成では使用されていなかったかと思います。

実際にシングルインスタンスの SQL Server 2019 では、これらのファイルを使用されたデータベースは存在していません。

SQL Server 2019 でこれらのデータベースが使用されていたのは、Big Data Cluster (BDC) の高可用性環境を使用した場合となります。

SQL Server 2022 では BDC は廃止されましたので、この構成をみることはないと思いますが、BDC では SQL Server 2022 の新機能である「包含可用性グループ」の前身となる機能が含まれており、この機能の中で model_replicatedmaster / model_msdb が使用されていました。

つまり、model_replicatedmaster / model_msdb は SQL Server 2022 では包含データベースで使用されるデータベースとなります。

 

SQL Server 2022 の不可視データベース

SQL Server では不可視のデータベースとして以前から「mssqlsystemresource (Resource データベース)」が存在していました。

このデータベースは、SSMS から確認することはできないのですが、内部的には、DBID 32767 の msssqlsystemresource というデータベースとして存在していました。

SQL Server 2022 ではこの不可視のデータベースとして、本投稿のデータベースが追加されています。SQL Server 2022 では次のデータベースが不可視のデータベースとして内部的に認識している状態となります。

  • DBID 32761: model_msdb
  • DBID 32762: model_replicatedmaster
  • DBID 32767: mssqlsystemresource

SQL Server 2019 の通常のインスタンスでは、データベースとしては認識していないがファイルは存在している状態となっていました。

しかし、SQL Server 2022 では構成にかかわらずデフォルトでシステムデータベースとして認識している状態となり、内部的にはデータベースが存在している状態になっています。(これは、sys.sysdbreg / sys.sysbrickfiles から確認することができます)

 

包含可用性グループ作成時のシステムデータベース作成の流れ

model_replicatedmaster / model_msdb は前述のとおり SQL Server 2022 で包含データベースを作成する際に使用されるデータベースとなります。

包含可用性グループでは、包含システム データベース という可用性グループ向けのシステムデータベースとして

  • 可用性グループ名_master
  • 可用性グループ名_msdb

という二つのデータベースが作成されます。

このデータベースのテンプレートとなるのが model_replicatedmaster / model_msdb となります。

包含可用性グループを作成した際には、可用性グループ用のシステムデータベースが作成され、このデータベースに対して model_replicatedmaster / model_msdb の内容が複製されるような動作となっています。

model_replicatedmaster / model_msdb は不可視のデータベースではあるのですが、mssqlsystemresource とは異なり、USE で接続ができるので、

USE [model_replicatedmaster] 

USE [model_msdb]

 

等で実際に接続することができます。

実際に使用する機会はなさそうですが、これらのシステムデータベースにオブジェクトを作成しておくと、包含可用性グループを作成した際の包含システムデータベースにオブジェクトが作成された状態で可用性グループを構築することができます。

 

バックアップを取得する必要はあるか?

model_replicatedmaster / model_msdb はシステムデータベースの扱いではあるのですが、投稿を書いている時点では、次の情報には記載がされていません。

model_replicatedmaster / model_msdb 用のファイルが存在していなくても SQL Server のインスタンスは起動することができるので、データベースが破損していたとしてもインスタンスは起動することができるようです。

しかし、包含可用性グループを使用する際にはエラーとなるため、一度はバックアップを取得しておいたほうが良いのではないでしょうか。

USE [master]
BACKUP DATABASE [model_replicatedmaster] TO  DISK = N'model_replicatedmaster.bak' WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO
BACKUP DATABASE [model_msdb] TO  DISK = N'model_msdb.bak' WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO


USE [master]
RESTORE DATABASE [model_replicatedmaster] FROM  DISK = N'model_replicatedmaster.bak' WITH  FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 5
GO
USE [master]
RESTORE DATABASE [model_msdb] FROM  DISK = N'model_msdb.bak' WITH  FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 5
GO

 

このようなクエリでバックアップ / リストアを行うことができました。

現時点ではメンテナンスプランのシステムデータベースのバックアップ取得ではバックアップは取得されないので、バックアップを取得する場合は明示的に取得する必要があるようでした。

現時点では CU が提供されていないので、CU 適用ごとにバックアップを取得するかどうかは悩ましいところではありますが、システム環境が変わった際にバックアップを取得しておけば当面は問題ないのではないでしょうか。

 

まとめ

SQL Server 2022 の情報が増えてくれば本投稿で触れたデータベースの運用についても情報が公開されてくると思いますが現状は、model_replicatedmaster / model_msdb については、

  • SQL Server 2022 で追加されたシステムデータベース
  • インスタンスの構成にかかわらずデフォルトで構成されている不可視のデータベース
  • 可用性グループを使用しない場合にはファイルが存在していなくてもインスタンスを起動することは可能
    • ただし、ERRORLOG にエラーが出力されるのでインスタンスとしては正常ではない状態
  • 包含可用性データベースの包含システムデータベースのテンプレート
  • バックアップ / リストアは手動で実施することが可能

ということを意識しておく必要があるのではないでしょうか。

SQL Server 2022 の情報が整備されれば、次のドキュメントの情報も拡充されると思いますので、これらの情報も定期的に確認しておくとよさそうです。

Share

Written by Masayuki.Ozawa

1月 5th, 2023 at 9:54 am

Leave a Reply