我想通过SQLCMD发出以下命令:
IF DB_ID('My_DB') IS NOT NULL DROP DATABASE My_DB
虽然有一些警告......
所以,我不能使用:
-Q"IF DB_ID('${db_name}') IS NOT NULL DROP DATABASE ${db_name}
因为它将在单引号中使用文字$ {db_name}。我也不能用:
-Q"IF DB_ID("${db_name}") IS NOT NULL DROP DATABASE ${db_name}
因为SQLCMD在双引号的开头和结尾都被绊倒了。
我知道我可以创建一个脚本并传入一个数据库名称的参数,但有没有办法在没有脚本的单个命令行中执行此操作?有什么方法可以逃避双引号等?是否有一个BuildForge语法可以让我正确构建字符串?
谢谢!
答案 0 :(得分:2)
我通常使用-q和脚本来做这个但是有些想法......
你能这样做吗?
-Q"IF DB_ID(RTRIM(LTRIM(' ${db_name} '))) IS NOT NULL DROP DATABASE ${db_name}"
还是这个?
-Q"BEGIN TRY DROP DATABASE ${db_name} END TRY BEGIN CATCH IF ERROR_NUMBER() <> 3701 RAISERROR('some error not related to db not there', 16, 1) END CATCH"