我很困惑:
以下代码会产生错误:
try {
invoke-sqlcmd -ServerInstance 'localhost' -Database 'tempdb' -Query 'CREATE TABLE foo (bar TINYINT IDENTITY(1,1) DEFAULT 1);;' -Verbose -ErrorLevel 0 -AbortOnError -ErrorAction Stop -OutputSqlErrors $true -ErrorVariable $err -OutVariable $err -SeverityLevel 0;
"OK";
}
catch {
"ERROR"
$_
}
结果:
错误 Invoke-Sqlcmd:无法在具有 IDENTITY 属性的列上创建默认值。表'foo',列'bar'。
这件作品显然运行顺利:
try {
invoke-sqlcmd -ServerInstance 'localhost' -Database 'tempdb' -Query 'SELECT CAST(111111111111 AS TinyINT) AS Error' -Verbose -ErrorLevel 0 -AbortOnError -ErrorAction Stop -OutputSqlErrors $true -ErrorVariable $err -OutVariable $err -SeverityLevel 0;
"OK"
}
catch {
"ERROR"
$_
}
结果:
OK
在这两种情况下都必须使用 catch-block!