加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Powershell Invoke-Sqlcmd的错误检测并不总是有效?

发布时间:2021-01-13 13:12:28 所属栏目:编程 来源:网络整理
导读:通过执行位于文件夹中的查询列表来更新数据库. 我必要可以或许检测到任何错误,这些错误也会导致SQL Server Management Studio中的“Query completed with errors”. 以下事变检测“无效工具”错误: PS SQLSERVER: $ErrorActionPreferenceStopPS SQLSERVER: $Er

通过执行位于文件夹中的查询列表来更新数据库.

我必要可以或许检测到任何错误,这些错误也会导致SQL Server Management Studio中的“Query completed with errors”.

以下事变检测“无效工具”错误:

PS SQLSERVER:&; $ErrorActionPreference
Stop
PS SQLSERVER:&; $Error.Clear()
PS SQLSERVER:&; $Error
PS SQLSERVER:&; Invoke-Sqlcmd -ServerInstance .SQLEXPRESS -Database Test -Query "select * from doesnotexist" -ErrorAction SilentlyContinue
PS SQLSERVER:&; $Error.Exception
Invalid object name 'doesnotexist'.
PS SQLSERVER:&;

对select 1/0执行沟通操纵不起浸染:

PS SQLSERVER:&; $ErrorActionPreference
Stop
PS SQLSERVER:&; $Error.Clear()
PS SQLSERVER:&; $Error
PS SQLSERVER:&; Invoke-Sqlcmd -ServerInstance .SQLEXPRESS -Database Test -Query "select 1/0" -ErrorAction SilentlyContinue
PS SQLSERVER:&; $Error.Exception
PS SQLSERVER:&;

我但愿这会导致像SSMS一样呈现“碰着零除错误”错误.

没有检测到这个特定的错误让我想知道其他错误是否也会被检测不到.

知道为什么会产生这种环境以及怎样确保检测到全部错误?

UPDATE

究竟证明我在我安装的处事器上没有可用的Invoke-Sqlcmd,以是第二个想到我必需行使sqlcmd.exe.

我以为这对我有效:

$tempfile = [io.path]::GetTempFileName()
$cmd = [string]::Format("sqlcmd -S {0} -U {1} -P {2} -d {3} -i {4} -b > $tempfile",$g_connectionstring."Data Source",$g_connectionstring."User ID",$g_connectionstring."Password",$g_connectionstring."Initial Catalog",$path)
Invoke-Expression -Command $cmd
if ($LASTEXITCODE)
{
    $err = Get-Content $tempfile | Out-String
    Corax-Message "SQL" "Error" $err
    exit
}
Remove-Item $tempfile

办理要领

无论ErrorAction配置怎样,invoke-sqlcmd cmdlet在SQL Server 2008,2008和2012版本的cmdlet中都存在一个错误,个中除以0之类的T-SQL错误不会导致错误.我在此处记录了一个毗连项,您可以在此处查察具体信息:

https://connect.microsoft.com/SQLServer/feedback/details/779320/invoke-sqlcmd-does-not-return-t-sql-errors

留意:该题目已在SQL 2014中修复,但好像未呈现或将要为早年的版本提供修复.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读