Powershell Invoke-Sqlcmd的错误检测并不总是有效?
发布时间:2021-01-15 02:15:35 所属栏目:MsSql教程 来源:网络整理
导读:通过执行位于文件夹中的查询列表来更新数据库. 我需要能够检测到任何错误,这些错误也会导致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中修复,但似乎未出现或将要为以前的版本提供修复. (编辑:襄阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 为安全(SSL)连接配置的MS SQL Server允许从J
- sql – 用于传递闭包的递归查询
- 主键的SQL Server BIGINT或DECIMAL(18,0)
- 借得微软大树 罗技即时视频通信软件“合法化
- 阿里云李津谈布局专有云的深层用意
- 如何在LINQ to Entity Framework中使用SQL通配符
- 网友热评RIAA杀绝P2P 下载音乐真的有罪?
- sql-server – SQL Server 2014 Express中的SQLCMD.EXE在哪
- AWS RDS(SQL Server):SSL连接 – 目标主体名称不正确
- sql-server – 什么时候创建STATISTICS而不是创建索引更好?
站长推荐
热点阅读


