疑问:
1, sqlserver里面执行 xp_cmdshell
exec @error=xp_cmdshell 'cmdstr......'
返回值是什么值?dos命令的错误?什么样的错误可以扑捉到?
比如:
DECLARE @error int
EXEC @error=master.dbo.xp_cmdshell 'bcp CM_DWHSend.dbo.WK_CM_DWHSend_Master in "D:/Sales/DWH_Onl/2010042_SENDMEMM.csv" -n -t, -S(local) -Usa -P '
SELECT @error
当发生文件内容错误出现【Error = [Microsoft][ODBC SQL Server Driver]BCP データファイル中で予期しない EOF が検出されました。】时,@error不能取得错误,但是文件不存在等【Error = [Microsoft][ODBC SQL Server Driver]一括コピー ホストのデータファイルが開けません。】错误时,@error能取得错误1。
2, 存储过程中,什么样的错误会导致程序终止,不再执行后面的语句,什么样的错误会报错后继续执行?
观察:
有的错误只跳过错误的语句继续执行,比如字符串过长截断;
有的错误会终止当前所在存储过程,但是会继续执行存储过程外的语句,比如select 一个不存在的表;
有的错误会终止整个进程,比如trucate一个不存在的表。