0

我需要运行一个使用 PowerShell 返回 2 个结果集的存储过程。我使用 dbatools 来做到这一点,但我可以使用 .NET 来实现。我只是不知道怎么做。

对于此示例,我使用exec sp_spaceused它将返回实际数据库中使用的空间。这是 SSMS 中的结果:

结果来自 SSMS 中使用的 sp_space

正如您在此处看到的,有 2 个结果集。现在,当我在 PowerShell 中运行相同的命令时,我不知道如何获得下一个结果集。

这是我想出的代码:

$conn = Connect-DbaInstance -SqlInstance . -MultipleActiveResultSets
$query = 'exec sp_spaceused'
Invoke-DbaQuery -SqlInstance $conn -Query $query

我什至不确定我是否MultipleActiveResultSets以正确的方式使用。我在任何地方都找不到任何好的例子。

4

1 回答 1

0

哇,我刚刚通过测试所有不同的-As选项找到了答案。这是代码:

$conn = Connect-DbaInstance -SqlInstance . -Database 'StackOverFlow'
$query = 'exec sp_spaceused'
$ds = Invoke-DbaQuery -SqlInstance $conn -Query $query -As DataSet
foreach ($table in $ds.Tables) {
    $table | Out-String
}

Out-String用来避免加入对象,但你可以使用Out-GridView. 我也意识到我不需要使用-MultipleActiveResultSets.

于 2021-01-17T04:18:15.653 回答