Ban*_*iur 5 sql-server sqlcmd error-handling
我很困惑我应该如何使用 sqlcmd 的 -b 参数。我正在尝试为我的数据库编写简单的自动化脚本,并希望在出现任何错误时停止执行。我正在使用 SQLServer 2008r2。
为了测试,我调用了简单的脚本
sqlcmd -b -i test.sql
Run Code Online (Sandbox Code Playgroud)
test.sql 内容:
PRINT 'test1';
RAISERROR ('Error raised', 15, 15);
PRINT 'test2';
Run Code Online (Sandbox Code Playgroud)
我希望在第一次打印后我会看到错误消息并且脚本会停止。但是每次执行第二次打印时,我都会看到以下输出:
test1
消息 50000,级别 18,状态 15,服务器 TOMEK,第 3 行
错误引发
test2
我做错了什么?
该-b
参数适用于批处理,而不适用于脚本中的语句。如果您使用GO
批处理终止符分隔每个语句,您将获得您期望的行为。
请记住,SQLCMD 一次将整批语句发送到 SQL Server 以供执行。如果需要,您将需要 T-SQL 控制流语句(包括 TRY/CATCH)来处理服务器端的错误。