MyS*_*DBA 7 sql-server stored-procedures bcp error-handling
使用 BCP 命令,我正在生成 SQL Server DB 表的文件。当 BCP 命令无法将数据转储到文件中时,它会为每个表创建一个空文件。这可能是由写入的查询错误或传递给 BCP 命令的空变量引起的。
有什么方法可以将这些事件捕获为错误并使其返回一些错误代码?
我正在从存储过程执行此操作。有什么办法可以在 SP 中处理这个问题吗?
Powershell 是您的朋友。在 Powershell 中使用 cmd 命令时,您可以使用该$LASTEXITCODE
变量来读取您执行的命令的结果。
下面的代码将BCP
命令传递到 Invoke-Expression cmdlet 并捕获它的输出。
$OutputPath = "C:\temp\Numbers-20151230.dat"
try
{
$Command = "bcp dbo.Numbers out $OutputPath -T -n -S Localhost\JamesA_Test -d UtilityDB"
$Output = Invoke-Expression -command $Command
if ($LASTEXITCODE)
{
throw $Output
}
}
catch
{
Write-Host "BCP command failed: $Output"
}
Run Code Online (Sandbox Code Playgroud)
我不确定你想如何处理错误,所以我只是用来Write-Host
显示这个例子的错误。您可以将错误记录到事件日志、文件、SQL 表等中。
归档时间: |
|
查看次数: |
10554 次 |
最近记录: |