
SQL 2000 の単一インスタンス上に存在する約 20 個のデータベースを、データベース ミラーリングを備えた SQL 2008 R2 環境に移行する予定です。
私が探しているのは、これらの 20db をこの新しいミラーリングされた環境に簡単に変換して管理するのに役立つツールまたはスクリプトです。各 DB の設定には多くの手順があり、できるだけ自動化したいと考えています。
編集: これまで手動で実行してきた手順は次のとおりです。
- 古い SQL 2000 サーバーから新しい SQL 2008 サーバーに同じユーザー名/パスワードを作成します。次に、それらのユーザー名/パスワードを同じ SSID を持つ他の SQL 2008 サーバーに同期して、データベースのバックアップと復元を行うときに一致するようにします。
- 各 SQL 2000 DB のバックアップを作成します。
- それをサーバーAにコピーします。
- バックアップをサーバー A に復元します。
- サーバー A からバックアップし、サーバー B にコピーして、そこで復元します。
- ミラーの「セキュリティの構成」ウィザードを実行します。
- ミラーリングを開始します。
これをスクリプト化したり、代わりに実行してくれるツールがあれば嬉しいです。ありがとう! ポール
答え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
内蔵はどうですかデータベースミラーリングモニター?