如何使用 PowerShell return 来自存储过程的多个记录集

How to return multiple recordsets from stored procedure using PowerShell

我需要 运行 一个存储过程,return 2 个结果集与 PowerShell。我使用 dbatools 来这样做,但我可以使用 .NET 来实现。我只是不知道如何。

对于这个例子,我使用 exec sp_spaceused,这将 return 实际数据库中使用的 space。这是 SSMS 中的结果:

如您所见,有 2 个结果集。现在,当我 运行 在 PowerShell 中执行相同的命令时,我不知道如何获取下一个结果集。

这是我想出的代码:

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

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

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

$conn = Connect-DbaInstance -SqlInstance . -Database 'Whosebug'
$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.