0

このクエリを実行しようとしています

sys.database_mirroringからmirroring_role_descを選択します。ここで、database_id> 4であり、mirroring_stateはNULLではありません。

したがって、クエリは基本的にデータベースの数を出力し、このようにプリンシパル/ミラーを表示します ここに画像の説明を入力してください

このクエリを出力して別の興味深いものをExcelファイルに出力したいのですが、インスタンス内のいずれかのデータベースがprinicial / mirrorである場合、インスタンス全体をprincipal/mirrorと見なすことができます。したがって、Excelファイルで、servername \ hostnameを含む1つの列を作成し、次の列にミラーかプリンシパルか、またはなし(空白のままにする場合)を表示する必要があります。これを行うにはどうすればよいですか。

私はこれを試しました、

$ServerInstance = "server1\instance1a "
$Database = " "
$ConnectionTimeout = 30
$Query = "select mirroring_role_desc from sys.database_mirroring where database_id > 4 and mirroring_state is NOT NULL"
$QueryTimeout = 120

$conn=new-object System.Data.SqlClient.SQLConnection
$ConnectionString = "Server={0};Database={1};Integrated Security=True;Connect Timeout={2}" -f $ServerInstance,$Database,$ConnectionTimeout
$conn.ConnectionString=$ConnectionString
$conn.Open()
$cmd=new-object system.Data.SqlClient.SqlCommand($Query,$conn)
$cmd.CommandTimeout=$QueryTimeout
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
[void]$da.fill($ds)
$conn.Close()
$ds.Tables

率直に言って、上記のコードは正常に機能していますが、問題はインスタンス名と、プリンシパル/ミラーを含む単一の列のみをExcelファイルに取得することです。これが私が抱えている問題です。

より良いアイデアを得るために、これは私が達成しようとしていることです: ここに画像の説明を入力してください

4

1 に答える 1

0

中央管理サーバーのすべてのサーバーでスクリプトを実行するために、しばらく前にブログ投稿を書きました。あなたはそれをかなり簡単に適応させることができるはずです。こちらをご覧ください。

于 2012-12-05T15:35:25.437 に答える