7

I'm confused how should I use -b parameter of sqlcmd. I'm trying to write simple automation script for my DB and wanted to stop execution in case of any errors. I'm using SQLServer 2008r2.

For testing I'm calling simple script

sqlcmd -b -i test.sql

content of test.sql:

PRINT 'test1'; 
RAISERROR ('Error raised', 15, 15);
PRINT 'test2';

I expected that after first print I would see error msg and script would stop. But every time second print is executed and I see following output:

test1
Msg 50000, Level 18, State 15, Server TOMEK, Line 3
Error raised
test2

What I'm doing wrong?

1 Answer 1

11

The -b parameter applies to the batch, not statements within the script. If you separate each statement with a GO batch terminator, you will get the behavior you expect.

Remember that SQLCMD sends the entire batch of statements at once to SQL Server for execution. You'll need T-SQL control flow statements (including TRY/CATCH) to handle errors on the server side, if needed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.