このクエリを実行しようとしています
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ファイルに取得することです。これが私が抱えている問題です。
より良いアイデアを得るために、これは私が達成しようとしていることです: