#sql-server #docker
Вопрос:
Я использую docker-compose.yml
для загрузки образа SQL Server в контейнер. После того, как он запущен и запущен, я создаю command.sh
оболочку и пытаюсь запустить ее для создания базы данных.
# command.sh
echo 'creating database from ->' $ModuleName
export query="'create database $ModuleName'"
echo $query
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P my_strong_password -Q $query
И это дает мне эту ошибку:
Sqlcmd: «база данных»: Неизвестный Параметр. Введите «-?» для получения помощи.
Пожалуйста, обратите внимание, что я не могу использовать -i
переключатель для использования входного .sql
файла, потому что я программно создаю свои запросы в оболочке на основе переменных среды.
Комментарии:
1. Указывает ли вывод
sqlcmd -?
(в linux), что вы должны использовать двойные кавычки? Если это так, попробуйте заменить одинарные кавычки ('
) на экранированные двойные кавычки ("
).query=""create database $ModuleName""
2. вторым вариантом может быть создание временного sql-файла (т. Е.
/tmp/piepeloi.sql
) с содержащимися в нем командами, которые вам необходимо выполнить.3. @Luuk, оба ваших комментария помогли мне. Можете ли вы опубликовать их в качестве ответа, чтобы я мог их принять?
Ответ №1:
Вывод sqlcmd -?
показывает, как использовать -Q
опцию then. На окнах это написано [-Q "cmdline query" and exit]
.
Но Windows и Linux отличаются (или не согласованы) в использовании одинарных или двойных кавычек.
Первый вариант — попробовать: sqlcmd -Q ""create database $ModuleName""
Второй вариант-это:
- Создайте временный файл (т. Е.
/tmp/tmp.sql
) и поместите инструкцию SQL в этот сценарий. - Используйте
-i /tmp/tmp.sql
для выполнения этого сценария.