SQL 2008 データベース ミラーリングを管理するためのツールはありますか?

SQL 2008 データベース ミラーリングを管理するためのツールはありますか?

SQL 2000 の単一インスタンス上に存在する約 20 個のデータベースを、データベース ミラーリングを備えた SQL 2008 R2 環境に移行する予定です。

私が探しているのは、これらの 20db をこの新しいミラーリングされた環境に簡単に変換して管理するのに役立つツールまたはスクリプトです。各 DB の設定には多くの手順があり、できるだけ自動化したいと考えています。

編集: これまで手動で実行してきた手順は次のとおりです。

  1. 古い SQL 2000 サーバーから新しい SQL 2008 サーバーに同じユーザー名/パスワードを作成します。次に、それらのユーザー名/パスワードを同じ SSID を持つ他の SQL 2008 サーバーに同期して、データベースのバックアップと復元を行うときに一致するようにします。
  2. 各 SQL 2000 DB のバックアップを作成します。
  3. それをサーバーAにコピーします。
  4. バックアップをサーバー A に復元します。
  5. サーバー A からバックアップし、サーバー B にコピーして、そこで復元します。
  6. ミラーの「セキュリティの構成」ウィザードを実行します。
  7. ミラーリングを開始します。

これをスクリプト化したり、代わりに実行してくれるツールがあれば嬉しいです。ありがとう! ポール

答え1

以下の手順を実行するために、一連のバッチ ファイルと SQL スクリプトを作成しました。ミラーリング用のスクリプトのみを含めましたが、参照されている他の SQL スクリプトは、非常に基本的な SQL コマンドです (データベース復元スクリプトは例外で、これは実装方法により少し扱いに​​くいです)。これらを作成すると、SQLCMD モード変数を変更できるようになります。Twitter (@jcumberland) でメール アドレスをダイレクト メッセージで送信していただければ、スクリプトの完全なセットをお送りできます。ファイル名のフル パスも削除しました。

  • データベースのリカバリモードを設定します
  • ミラーリングを削除します
  • ミラーデータベースを削除する
  • バックアップデータベース
  • バックアップログ
  • bakファイルをコピーする
  • trnファイルをコピーする
  • データベースのバックアップを復元する
  • ログバックアップを復元する
  • bakファイルを削除します
  • trnファイルを削除します
  • プリンシパルとミラー間のミラーリングを設定する
/*------------------------------------------------------*/
-- これらの値を置き換えます
/*------------------------------------------------------*/











/*------------------------------------------------------*/
-- バッチファイル 1、ユーティリティ バッチファイルの呼び出し
/*------------------------------------------------------*/
@エコーオフ

PRIMARYHOST=を設定する
MIRRORHOST= を設定します
INST=を設定する
DRIVE=を設定する
DRTARGETDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" を設定します
LOGDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" を設定します
ポートを設定する=
PRIMARYINST=%PRIMARYHOST%\%INST% を設定します。
MIRRORINST=%MIRRORHOST%\%INST% を設定します。

@エコーオン


drdbsetup.bat を呼び出します %PRIMARYHOST% %MIRRORHOST% %PRIMARYINST% %MIRRORINST% %DRIVE% %DRTARGETDIR% %PORT% %LOGDIR%

一時停止







/*------------------------------------------------------*/
-- バッチファイル 2 - SQL スクリプトを呼び出す
/*------------------------------------------------------*/
rem -- リカバリモードを完全に設定する
sqlcmd /E /S%3 -i SetRecoveryMode.sql -v データベース="%8"

rem -- ミラーリングを削除
sqlcmd /E /S%3 -i MirroringRemove.sql -v データベース="%8"

sqlcmd /E /S%4 -i MirroringRemoveMirror.sql -v データベース="%8"

rem -- 完全バックアップ
sqlcmd /E /S%3 -i BackupDatabaseFull.sql -v BACKUPPATH="%5:\" -v DATABASE=%8

rem -- ログバックアップ
sqlcmd /E /S%3 -i BackupDatabaseLog.sql -v BACKUPPATH="%5:\" -v DATABASE=%8

rem -- バックアップファイルをミラーにコピーする
\\%1\%5$\*.bak %6 /y をコピー
\\%1\%5$\*.trn %6 /y をコピー

rem -- プライマリからバックアップファイルを削除する
\\%1\%5$\*.bak を削除します
\\%1\%5$\*.trn を削除します

rem -- バックアップディレクトリからデータベースを復元する
sqlcmd /E /S%4 -i RestoreDatabase.sql -v BKDIR=%6 -v DATADIR=%6 -v LOGDIR=%9

rem -- データベース ログを復元する
sqlcmd /E /S%4 -i RestoreLog.sql -v バックアップパス=%6 -v データベース=%8

rem -- ミラーからバックアップファイルを削除する
%6\*.bak を削除します
%6\*.trnを削除します

rem -- ミラーリングを設定する
sqlcmd /E /S%4 -i MirroringSetup.sql -v プリンシパル="%3" -v ミラー="%4" -v プリンシパル_DNS="%1." -v ミラー_DNS="%2.yourdomain.local" -v データベース名="%8" -v ポート=%7







/*------------------------------------------------------*/
-- ミラーリングセットアップ.sql
/*------------------------------------------------------*/


/*-----------------------------------------------------*/
-- 原則として運営する
/*-----------------------------------------------------*/
:接続$(プリンシパル)
行く

-- エンドポイントを作成する
存在しない場合 (name = 'Mirroring' の sys.endpoints から * を選択)
始める
    エンドポイントミラーリングの作成
    認可 []
    状態 = TCPとして開始 (
        リスナーポート = $(ポート)
        ,LISTENER_IP = すべて
    データミラーリングの場合(
        役割 = パートナー
        認証 = Windows ネゴシエート
        暗号化 = 必要なアルゴリズム RC4
終わり
行く

/*-----------------------------------------------------*/
-- ミラー上で実行
/*-----------------------------------------------------*/
:connect $(ミラー)
行く

-- エンドポイントを作成する
存在しない場合 (name = 'Mirroring' の sys.endpoints から * を選択)
始める
    エンドポイントミラーリングの作成
    認可 []
    状態 = TCPとして開始 (
        リスナーポート = $(ポート)
        ,LISTENER_IP = すべて
    データミラーリングの場合(
        役割 = パートナー
        認証 = Windows ネゴシエート
        暗号化 = 必要なアルゴリズム RC4
終わり
行く

-- ミラーパートナーシップを設立
ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(PRINCIPAL_DNS):$(PORT)'
行く

-- ミラー監視を削除します
存在する場合 ([name] ='データベース ミラーリング モニター ジョブ' の場合、msdb..sysjobs から * を選択)
始める
    EXEC sp_dbmmonitordropmonitoring
終わり
行く

-- ミラー監視を設定します
EXEC sys.sp_dbmmonitoraddmonitoring -- デフォルトは 1 分です
行く


/*-----------------------------------------------------*/
-- 原則として運営する
/*-----------------------------------------------------*/
:接続$(プリンシパル)
行く

-- ミラーパートナーシップを設立
ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(MIRROR_DNS):$(PORT)'
行く

-- ミラー監視を削除します
存在する場合 ([name] ='データベース ミラーリング モニター ジョブ' の場合、msdb..sysjobs から * を選択)
始める
    EXEC sp_dbmmonitordropmonitoring
終わり
行く

-- ミラー監視を設定します
EXEC sys.sp_dbmmonitoraddmonitoring -- デフォルトは 1 分です
行く






/*------------------------------------------------------*/
-- DRミラーリング削除.sql
/*------------------------------------------------------*/
存在する場合 ( select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' かつ mirroring_guid が null ではない場合)
始める
    ALTER DATABASE [$(DATABASE)] SET PARTNER OFF
終わり
行く

遅延待ち '00:00:10'
行く







/*------------------------------------------------------*/
-- DRミラーリング削除ミラー.sql
/*------------------------------------------------------*/
存在する場合 ( select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' かつ mirroring_guid が null ではない場合)
始める
    ALTER DATABASE [$(DATABASE)] SET PARTNER OFF
終わり
行く

遅延待ち '00:00:10'
行く

データベースを削除 [$(DATABASE)]
行く

答え2

関連情報