sql-server - Powershell Invoke-Sqlcmd to DataTable rowcount 在其 1 条记录时不正确

标签 sql-server powershell

$sql=("select top 1 * FROM CollectionProfile")

$CollectionProfile = New-Object System.Data.DataTable

$CollectionProfile = Invoke-Sqlcmd -ServerInstance $Instance -Database $db -Query $sql -ErrorAction Stop  

$CollectionProfile.Rows.Count

返回:0

但如果我将 TOP 计数更改为 2 -

$sql=("select top 2 * FROM CollectionProfile")

返回:2

让我发疯,是的,我在“内部网络”上找不到一个引用。我一定是做错了什么,但是什么?

最佳答案

当您将查询与 TOP 1 一起使用时,Invoke-SqlCmd 返回一个 DataRow。 当您将查询与 TOP 2 一起使用时,Invoke-SqlCmd 返回一个 DataRows 数组。 Invoke-SqlCmd 不返回 DataTable。您可以更改代码以强制返回一个数组(参见此处:force array),然后检查其上的计数:

$sql = ("select top 1 * FROM CollectionProfile")

$CollectionProfile = @(Invoke-Sqlcmd -ServerInstance $Instance -Database $db -Query $sql -ErrorAction Stop)

$CollectionProfile.Count #Returns 0 with Null, 1 with TOP 1, and 2 with TOP 2

关于sql-server - Powershell Invoke-Sqlcmd to DataTable rowcount 在其 1 条记录时不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37030834/

相关文章:

powershell - 将 .ps1 的默认 "Edit"操作从 ISE 更改为 VS Code

c# - 如何匹配 UDT T-SQL 和 C# CLR 类型?

sql - 使用 SQL 2008 空间函数,如何构造表示两个(或多个)POINT 实例之间的线的 LINESTRING?

sql-server - xp_instance_RegRead和xp_RegRead之间的区别

sql - 如果选择 NULL,则保留单元格的原始值 MS SQL Server 2008

sql-server - SQL——清除执行缓存

c# - 使用某些字符串时关闭 TextWriter 异常

powershell - 通过Visual Studio使用CMake运行Powershell脚本,而无需更改系统范围的权限

node.js - 如果相同目录中存在同名文件,则省略 “.cmd”时,调用运算符(operator)(&)在新窗口中运行命令

powershell - 如何为符号对象添加颜色?