web-dev-qa-db-ja.com

SQL Serverは、システムデータベースが失われたり、失われたりした場合、システムデータベースを再作成しますか?

サードパーティのサーバーバックアップツールが24時間ごとに実行され、すべてをバックアップします(ベアメタルリストアの準備としてファイルとデータベース)。多くの調査の結果、ツールがcopy_onlyバックアップ。これにより、システムデータベースと私たちの両方のログチェーンが破壊されます。

(システムデータベースをバックアップする必要があるかどうかを調査していますが、SQL Serverに関する一般的なデータ(ユーザー、エージェントジョブなど)が保持しているため、コンセンサスは一般に「はい」です。これについては、内容ですが、私が説明する状況により、復元後にこれらが見つからなかった場合はどうなりますか)。

この犯罪を阻止するために、データベースバックアップを実行するツールを無効にしたので、ファイルバックアップのみを実行します(MDF/LDFファイルを除く)。その後、1時間ごとにバックアップを実行するようにSQLエージェントをスケジュールし、それをプライベートクラウドに送信しました。

完全なサーバー障害が発生し、ベアメタルバックアップが必要な場合、SQLがバックアップを開始したとき、データベースはツールによってバックアップ/復元されなかったため、そこにはないはずです(ただし、データベースは安全ですが)バックアップ済み)。

この時点で実際に何が起こりますか? SQL Serverはシステムデータベースを再作成しますか?または、起動を拒否して問題が発生しますか?

4
EvilDr

最初の質問に答える

番号。

ソリューションの提供

システムデータベースを復元する手順は、次のMicrosoftの記事で説明されています。

参照:システムデータベースの再構築 ( SQL Server 2012)

前提条件

  1. 古いシステムの明確なドキュメントがあることを確認してください:
    • SQL Serverインスタンスの構成
    • サービスパックとホットフィックス
    • データベースファイルの現在の場所

手順を復元する

  1. システムデータベースを再構築します。

    • SQL Server 2012インストールメディアを挿入する
    • 次のコマンドを使用して再構築を実行します。
      セットアップ/ QUIET/ACTION = REBUILDDATABASE/INSTANCENAME = InstanceName/SQLSYSADMINACCOUNTS = accounts [/ SAPWD = StrongPassword] [/ SQLCOLLATION = Collat​​ionName]
      関連情報をインスタンスの値に置き換えます。
  2. セットアップサマリファイルを参照して、インストールが成功したことを確認します。

    C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\Logs
    
  3. システムデータベースの最新のバックアップを復元します:mastermsdb、(model):

    • masterデータベースを復元する場合、SQL ServerインスタンスをDOSプロンプトから-mパラメータ。
      参照:復元マスターデータベース(Transact-SQL) 詳細
    • msdbデータベースを復元するときに、SQL Serverインスタンスをトレースフラグ3608で起動します。

      SQL Serverが自動的に起動してマスターデータベース以外のデータベースを回復するのを防ぎます。データベースは、アクセスされると開始およびリカバリーされます。スナップショットの分離やコミットされたスナップショットの読み取りなど、一部の機能が動作しない場合があります。システムデータベースの移動とユーザーデータベースの移動に使用します。通常の運用では使用しないでください。

      参照:トレースフラグ(Transact-SQL)

  4. ressourceデータベースを再構築します。

    • インストールメディアからSQL Server 2012セットアッププログラムを起動する
    • Maintenanceをクリックし、次にRepairをクリックします
    • インスタンスを選択してください
    • 修復の準備完了概要ページで、修復をクリックします
  5. Userデータベースを復元する

読んでください

重要なお知らせ
復元を実行したことがない場合、バックアップ(手順)が機能するかどうかはわかりません。テストしてもう一度テストします。

6

コミュニティwikiの回答

はい、常にシステムデータベースをバックアップする必要があります。これは、すべての本番サーバーが文書化され、テストされている必要がある災害復旧手順の重要な部分です。

とはいえ、システムデータベースから復元するのではなく、システムデータベースから必要なオブジェクトをスクリプトで削除し、目的の場所でスクリプトを実行する方が、少し苦痛を感じる人もいます。

2
user126897

最後に答えが見つかりました ここ 、より良いものがあるかもしれませんが、これは私が調査を続けている間に行われます...

SQLはデータベースを自動的に再作成しません。以下は、それらを再作成するための1つのプロセスです。

マスターデータベースが使用できない場合は、次の手順を使用してマスターデータベースを再構築します。

SQL Serverがインストールされているディレクトリに移動します。通常はC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL

注:2012年のインストールでは、このディレクトリは実際にはC:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\Templates\master.mdf

テンプレートデータフォルダーを開き、元のインストール中に自動的に作成されたシステムデータベースのコピーがあることを確認します。不足しているファイルをコピーして、Dataディレクトリ(C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data)。

注:私のインストールでは、これはC:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\master.mdf

注:SQLのデフォルトフィルターが追加されていないことを確認してください。これらのフィルターにより、必要なファイルが除外される可能性があります。デフォルトのSQLフィルターの詳細については、Microsoft SQL Server、コンテンツ、フィルター、および正規表現-ベストプラクティスを参照してください。

コマンドプロンプトから、Services.mscを実行します。[サービス]ウィンドウで、SQL Serverインスタンスを選択し、Startを選択します。

2
EvilDr