首页 > 解决方案 > 在powershell中使用Invoke-Sqlcmd时区分sql错误和空结果

问题描述

我正在使用 ps 脚本调用 db 并执行 select 语句。问题在于存在一些 sql 错误(例如权限问题)或空结果的两种情况下,我无法判断是失败还是只是空响应。

$Result = Invoke-Sqlcmd -ServerInstanc $sqlServer -Database $database -Query $query

因此,即使 db user 存在权限问题,结果变量也为空,并且在空表的情况下,结果变量也为空。

我如何区分两者?

标签: powershell

解决方案


要检查一个值是否为空值,在 powershell 实例的上下文中,或者在失败的查询和空结果的上下文中,由用户错误或其他一些问题:

if ($item -eq $null){
    Write-Host "Item is null"
}

要检查一个值是否是一个特殊的 DBNull 值,也就是说从一个空的数据库结果中提取的值,比如你的空表示例:

if ($item -eq [System.DBNull]::Value)
    Write-Host "Item is a null db value"
}

推荐阅读