« 2010.3.13 - SYNCHRONICITY@Shibuya O-EAST | メイン | 試奏したギター 2010.4.14 »


全てのDBをFailoverするT-SQL

SQL Server 2008 上で Mirroring されている複数の DB を一度に Failover する T-SQL です。

PRINCIPAL になっているサーバー上で実行すると全ての DB が Mirror になります。

DECLARE @DBNAME nvarchar(256)
DECLARE @SQLstring nvarchar(1256)

DECLARE Mirrord_Database CURSOR FOR
SELECT db_name(database_id) FROM sys.database_mirroring WHERE mirroring_role_desc = 'PRINCIPAL';
OPEN Mirrord_Database;
FETCH NEXT FROM Mirrord_Database INTO @DBNAME;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQLstring = 'ALTER DATABASE ' + @DBNAME + ' SET PARTNER FAILOVER'
exec sp_executesql @SQLstring
FETCH NEXT FROM Mirrord_Database INTO @DBNAME;
END;
CLOSE Mirrord_Database;
DEALLOCATE Mirrord_Database;
GO

Mirroringされている複数のDBがある時には便利じゃないかと思います。
SQLジョブに登録しておくと便利かも。

2008上で作ったので、他のバージョンで動くのかは不明ですが、2005くらいなら動くかな?
分かりません。。。

もっとスマートなやり方があるかもですが、久しぶりなので勘弁してください。
変数定義の部分とかは完全にやっつけです。。。

何年も使ってないと T-SQL なんて完全に忘れますね。
疲れました。



よろしければ投票をお願いします!
人気blogランキング 人気ブログランキング・ブログ検索:ランブロ

Amazon の関連商品

トラックバック

このエントリーのトラックバックURL:
http://www.grimonet.com/sys/mt/mt-tb.cgi/484

スパム対策のためトラックバックが正常反映されない場合があります
トラックバックが反映されない等の問題が発生した場合には、下記のフォームからコメントをお願いします。

コメントする


画像の中に見える文字を入力してください。

関連ページなど

アーカイブ

フィードを取得

 RSSリーダーで購読する

お使いのリーダーに追加してください!!
最新の情報をお届けします!!

フィードメーター - INOLOG Ver.2

最近のコメント