如何使用 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
.
我需要 运行 一个存储过程,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
.