Как передать аргумент командного файла с символом точки в нем? - PullRequest
1 голос
/ 26 августа 2011

У меня есть пакетный файл, который принимает часть имени базы данных в качестве аргумента и создает базу данных.Часть пакетного файла выглядит следующим образом:

например.

sqlcmd -S %1 -i "createDB.sql" -v dbname = DB%2

второй параметр должен быть версией, в которой может быть точка, например, 15.3 или 14.0.60, но когда я передаю этот номер версии, он не создает БД и не вызывает ошибку, но если я передаю просто простое число, например, 23, 10. это работает.

Не могли бы вы помочь мне, в чем проблема?

Большое спасибо.

Ответы [ 3 ]

0 голосов
/ 26 августа 2011

Я должен добавить кавычки к значению переменной. Это будет работать

sqlcmd -S %1 -i "createDB.sql" -v dbname = "DB%2"
0 голосов
/ 27 августа 2011

Оказывается, вопрос не в том, как передать символ точки как часть аргумента пакетного файла, а скорее в том, как правильно процитировать идентификатор, который содержит символ точки в SQL , и точнее, кажется, в Transact-SQL.

Я думаю, вам следует попробовать дополнительно заключить имя базы данных в квадратные скобки, например:

sqlcmd -S %1 -i "createDB.sql" -v dbname = "[DB%2]"

В качестве альтернативы вам может потребоваться включить скобки вокруг $dbname в сценарии SQL (т. Е. вместо для помещения их в командную строку), но не видя этого сценария, я не могу сказать наверняка.

0 голосов
/ 26 августа 2011

Вы пытались заключить его в кавычки?Я думаю, что это правильная спецификация для sqlcmd -v.

, т. Е.

sqlcmd -S %1 -i "createDB.sql" -v dbname = "DB%2"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...