1. ホーム
  2. データベース
  3. mssql2005

SQL Server モバイルシステムデータベース

2022-01-23 06:47:34

この問題になると、基本的に3つの疑問が誰かの頭に浮かびます。

1, システムデータとは何ですか?

2, なぜシステムデータベースを移動するのか?

3、アタッチとデタッチで済むのに、なぜモバイルシステムのデータベースを分離する必要があるのか?

この3つの疑問について、1つずつ、自分でメモを取りながら、なんとなく話してみます。

1. システムデータとは何ですか?

システムデータベースとは、SQL Serverをインストールした後、システムに付属しているデータベースのことです(アホな回答じゃないですか^_^)。

SQLインスタンスを開いてからSQL Server 2005や2008をインストールすると、図のようにdatabase---> System Databaseフォルダがあり、その中にシステムに付属しているデータベースがあります。

それぞれのシステム・データベースについて、ここでは簡単な言葉から説明します。

1)、マスタ。

このデータベースは、いくつかのシステムテーブル、特権割り当て、ユーザーアカウント設定、現在のデータベース構成情報、およびディスクスペース、ファイル割り当てなどの情報を含むグローバルなデータベースです。したがって、ユーザー・アカウントの設定、特権の割り当て、システム構成情報の変更などを行った後は、このデータをバックアップすることが重要です。ですから、自分のデータベースのバックアップほど頻繁ではありませんが、自分のデータベースだけでなく、このデータベースもバックアップすることを強くお勧めします。少なくとも、月に1回、あるいは半月に1回程度は。
また、ここには特別なデータベースのブルもあり、このデータベースをバックアップすべきかどうかを議論しています。SQL SERVER - マスターデータベースのバックアップ 間隔 - マスターデータベースのベストプラクティス

2)、mod。

このデータベースは単なるテンプレートデータベースで、何かデータベースを作るときには、このデータベースをコピーして新しいデータベースのベースとします。もし、新しいデータベースそれぞれに何らかのオブジェクトやパーミッションを持たせたい場合は、そのオブジェクトやパーミッションをこのデータベースに入れれば、新しく作られた新しいデータベースはこのデータから新しいオブジェクトやパーミッションを引き継ぎ、それらのオブジェクトやパーミッションを持つようになります。

3)、msdb。

このデータベースは、バックアップやレプリケーションタスクなどのスケジュールされたアクティビティを実行するSQL Serverプロキシサーバーと、SQL Severのキューイングと信頼性の高いメッセージングを提供するService Borkerによって使用されています。このデータベースは、バックアップやメンテナンスのタスクを実行していないときは、通常無視することができます。SQL Server 2005以前は、実はこのデータベースを削除することができたのですが、それ以降もSQL Serverは利用できますが、バックアップの履歴を保持することはできず、タスク、警告、ジョブの定義やレプリカの作成もできなくなりましたが、デフォルトのmsdbデータベースは非常に小さいので、使用しない場合でも削除しないことが推奨されます。

4)、tempdb。

このデータベースは、率直に言って、ユーザー表示で作成される一時的なテーブル、クエリー処理やソート時に内部で生成される中間結果のワークシート、メンテナンス用のスナップショットなどのためのステージング・エリアまたはデータ保管場所である。他のデータベースとは異なり、SQL Serverインスタンス再起動のたびにリストアではなく再構築されます。そのため、その中に作成したオブジェクトや権限は、次回SQL Serverを再起動したときにすべて失われてしまいます。
しかし、このデータベースも無視することはできません。なぜなら、tempdbのサイズと構成は、SQL Serverの機能と性能を最適化するために重要だからです。
tempdbデータベースについて、もう少しだけ説明します。tempdbは再構築のたびにデータベースオプションのほとんどをモデルデータベースから継承しますが、tempdbは常に単純な回復スキーマを使用するため、modeldbデータベースから回復スキーマを複製するわけではありません。また、tempdbは削除することができず、バックアップの必要もありません。

2, なぜシステムデータベースを移動するのですか?

We default these system databases after installing SQL Server will be placed in C:♪Program FilesMicrosoft SQL Server ♪MSSQL10.MSSQLSERVER ♪MSSQL ♪DATA this folder, general are not very large, why do we still have to move them?
サーバー管理を実践する前はこの発想はなかったのですが、サーバーのCドライブがどんどん増えていったり、システムを再インストールした場合、設定したデータベースオプションや、ユーザーアカウントの設定をリセットしなければならないことがわかり、思いついたのです。

もう一点は、配置換え計画や定期保守運用の一環として、システムのデータベースを移動する必要が出てくるかもしれないことです。

3、attachとdetachを使えばいいのに、なぜ別個に話をする必要があるのでしょうか?

この質問に答える前に、グラフを見てみましょう。

マスターのシステムデータベースを右クリックしてタスクを選択しても、"Separate"のオプションが表示されないことに注意してください。つまり、これらのシステム・データベースの移動は、ユーザー定義データベースとは異なるということです。

tempdb、model、msdbを移動する手順は、マスターデータベースを移動する手順と若干異なります。

1)、tempdb、model、msdbデータベースの移動

i), 破損していないシステムデータベースを移動する。
まず、SQL Serverがデフォルトでこれらのシステムデータベースを保存するパスを、queryコマンドで見てみましょう。

SELECT name,physical_name AS CurrentLocation,state_desc
FROM sys.master_files

F5が実行され、以下のように画像が表示されます。

この後、移動を開始しましょう

a) では、データベース内の移動する各ファイルに対して、ALTER DATABASE コマンドで MODIFY FILE オプションを使用し、新しいフォルダー・オプションを指定します。たとえば、以下のようになります。               

--Move tempdb
ALTER DATABASE tempdb MODIFY FILE(NAME='tempdev',FILENAME='D:\Database\tempdb.mdf');
ALTER DATABASE tempdb MODIFY FILE(NAME = 'templog',FILENAME='D:\Database\templog.ldf');
--Move model
ALTER DATABASE model MODIFY FILE(NAME='modeldev',FILENAME='D:\Database\model.mdf');
ALTER DATABASE model MODIFY FILE(NAME='modellog',FILENAME='D:\Database\modellog.ldf');
--Move msdb
ALTER DATABASE msdb MODIFY FILE(NAME='MSDBData',FILENAME='D:\Database\msdbdata.mdf');
ALTER DATABASE msdb MODIFY FILE(NAME='MSDBLog',FILENAME='D:\Database\msdb_log.ldf');

b) 、コマンドプロンプトラインでNET STOP MSSQLSERVERコマンドを使用して、SQL Serverインスタンスを停止します。

c), ファイルを先ほどのD:Databaseフォルダーなど、定義したフォルダーに物理的に移動します。

d), SQL Serverインスタンスを再起動します。

素晴らしい!では、上記のクエリで変更を確認した後、F5を実行すると以下のような画像が表示されます。


ii)、ハードウェアの故障によりシステム・データベースを移動する必要がある場合。

ハードウェア障害によりシステムデータベースを移動する必要がある場合、ALTER DATABASEコマンドを実行するためのサーバーへのアクセス権がないため、上記の方法はうまくいきません。その場合は、別の解決策があります。

a) SQL Serverインスタンスがすでに起動している場合は、それを停止します。

b), コマンドプロンプトで次のコマンドを入力し、SQL Server インスタンスをマスターのみのリカバリーモードで起動します。
NET START MSSQLSERVER /f /T3608

c) の後、サーバーにリンクすることができ、次のステップは上記の "Move an uncorrupted system database" と同じです。

注:NET START MSSSQL SERVERコマンドでSQL Serverインスタンスを直接起動すると、1814のエラーメッセージが表示されます。コントロールパネル - 管理ツール - イベントビューアで、特定のエラーログを見ることができます。

2)、マスターデータベースを移動する

マスターデータベースの場所を移動することは、他のシステムデータベースと異なり、SQL Server 構成マネージャを使用してのみマスターの場所を変更することができます。

まず、SQL Server Configuration Managerを開き、対象のSQL Serverインスタンスを右クリックして、プロパティを選択し、以下のように詳細タブをクリックします。


起動パラメータの各パラメータの値が、新しいマスターデータベースのデータファイルとログファイルのディレクトリの場所を指すように、以下のように編集してください。

d), D:\Databasemaster.mdf;
e), C:♪Program FilesMicrosoft SQL Server ♪MSSQL10.MSSQLSERVER ♪MSSQL ♪Log ♪ERRORLOG;
f),D:\Databasemastlog.ldf

SQL Serverインスタンスを停止し、物理ファイルを新しいフォルダーに移動します。

最後にSQL Serverインスタンスを起動すれば、完了です。もし確認したい場合は、このように上記のチェックステートメント、F5を使用します。

結論から言うと、システムを再インストールして、元のデータベース設定の情報を失いたくないのであれば、システムデータベースの移動は勉強になりますが、移動する場合もしない場合も、マスターテーブルのバックアップは必要だとスクリプトハウスの編集者は考えています。