0

我正在尝试运行此查询

从 sys.database_mirroring 中选择 mirroring_role_desc,其中 database_id > 4 且 mirroring_state 不为空

所以查询基本上会输出数据库的数量,并像这样显示主体/镜像 在此处输入图像描述

我希望这个查询输出到 excel 文件另一个有趣的事情,如果实例中的任何一个数据库是主体/镜像,那么我们可以假设整个实例作为主体/镜像。因此,在 excel 文件中,我想要一个带有 servername\hostname 的列,然后下一列显示它是镜像还是主体或没有(如果没有,则留空)如何做到这一点?

我试过这个,

$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 回答