我有一个批处理文件,它接受部分数据库名称作为参数并创建数据库。部分批处理文件如下所示:
例如
sqlcmd -S %1 -i "createDB.sql" -v dbname = DB%2
第二个参数应该是一个可以有一个点的版本,比如15.3或14.0.60但是当我传递这个版本号时它不会创建数据库并引发错误但是如果我通过了一个简单的数字,如23,10,它的工作原理。
你能帮我解决问题吗?
非常感谢。
答案 0 :(得分:0)
你尝试用引号括起来吗?我认为这是sqlcmd -v
的正确规范。
即
sqlcmd -S %1 -i "createDB.sql" -v dbname = "DB%2"
答案 1 :(得分:0)
我应该为变量值添加引号。它将起作用
sqlcmd -S %1 -i "createDB.sql" -v dbname = "DB%2"
答案 2 :(得分:0)
原来问题不是关于如何将点字符作为批处理文件的参数的一部分传递,而是关于如何在SQL 中正确引用包含点字符的标识符,更具体地说,似乎是在Transact-SQL中。
我认为您应该另外尝试将数据库的名称括在方括号中,如下所示:
sqlcmd -S %1 -i "createDB.sql" -v dbname = "[DB%2]"
或者你可能需要在SQL脚本中包含$dbname
左右的括号(即而不是将它们放在命令行中),但是没有看到那个脚本我无法肯定地说