Выполнить sql в файле через sqlcmd

У меня есть несколько операторов вставки в файл .sql.

Я хочу выполнить операторы вставки через sqlcmd и попытался сделать это так:

sqlcmd -S (localdb)\MSSQLLocalDB -i C:\BacklogItems\15298\dbo.ak_funktion_typ.Table.sql

К сожалению, я получаю следующую ошибку:

Сообщение 102, уровень 15, состояние 1, строка 4
Неверный синтаксис рядом с буквой "S".

В чем может быть проблема с -S?

Согласно https://www.mssqltips.com/sqlservertip/4924/execute-sql-server-script-files-with-the-sqlcmd-utility/ я могу указать имя сервера с помощью этого параметра...

Я убедился, что запрос находится в файле SQLCMD Mode.

Заранее спасибо за любые советы


person xeraphim    schedule 10.10.2017    source источник
comment
Вы уверены, что речь не идет о синтаксической ошибке в файле .sql? Это сообщение об ошибке SQL. Если бы это была проблема с самой командой, вы бы получили сообщение об ошибке DOS/Windows.   -  person ADyson    schedule 10.10.2017
comment
операторы вставки в файле .sql генерируются мастером создания сценариев из студии управления сервером sql.   -  person xeraphim    schedule 10.10.2017
comment
все же стоит проверить, что с ними все в порядке, и что в файле нет ничего шаткого. Попробуйте выполнить операторы непосредственно в графическом интерфейсе SQL. Я на 99,9% уверен, что командная строка Windows не генерирует отчеты об ошибках синтаксиса.   -  person ADyson    schedule 10.10.2017
comment
Я просто попытался выполнить операторы в файле .sql вручную, и это сработало без проблем.   -  person xeraphim    schedule 10.10.2017
comment
Я выполняю оператор sqlcmd -S ... непосредственно из студии управления сервером sql.   -  person xeraphim    schedule 10.10.2017
comment
ну тогда это твоя ошибка. sqlcmd — это файл Windows .exe, предназначенный для запуска из командной строки. Если вы используете SSMS, вам нужен sqlcmd, поскольку вы уже находитесь в среде SQL через графический интерфейс. В SSMS вы просто открываете файл .sql, используя меню «Файл» -> «Открыть», и выполняете его. Вы совершенно упустили смысл использования утилиты sqlcmd.   -  person ADyson    schedule 10.10.2017
comment
Но я хочу выполнить содержимое 100 файлов .sql (и, возможно, несколько раз), поэтому я не хочу открывать их отдельно вручную, а хочу создать скрипт, который это делает. И я могу выполнить их из ssms, используя режим SQLCMD, или для чего это, если нет? :С   -  person xeraphim    schedule 10.10.2017
comment
Повторюсь: sqlcmd — это файл Windows .exe, предназначенный для запуска из командной строки. Так что да, вы можете создать сценарий и использовать его с sqlcmd, но вы запускаете его из командной строки Windows, а не из SSMS. sqlcmd — это отдельный клиент для доступа к базе данных, точно так же, как SSMS — это клиент для доступа к базе данных. Они оба являются файлами .exe внизу, они оба работают в Windows. sqlcmd не запускается в SSMS. Если вы хотите запустить 100 таких файлов, вы можете создать для этого пакетный файл Windows, который будет проходить через папку с файлами .sql и повторно запускать sqlcmd для каждого файла.   -  person ADyson    schedule 10.10.2017
comment
Я также думаю, что ваш оператор sqlcmd должен будет включать учетные данные или метод подключения к базе данных (либо доверенное соединение на основе идентификатора Windows, либо имя пользователя/пароль, в зависимости от того, как вы настроили свой сервер)   -  person ADyson    schedule 10.10.2017
comment
Режим SQLCMD — это режим, в котором вы можете запускать редактор запросов. Он эмулирует такое же поведение, как если бы вы выполняли те же запросы с помощью утилиты sqlcmd. Нигде в этой статье не говорится, что нужно писать sqlcmd ...etc в окно редактора запросов.   -  person ADyson    schedule 10.10.2017
comment
ах хорошо, теперь я понимаю, что вы имеете в виду, извините за путаницу. Чтобы выполнить его через sqlcmd-режим, мне нужно написать :r вместо sqlcmd. Спасибо за вашу помощь, если вы добавите это как ответ, я приму это   -  person xeraphim    schedule 10.10.2017


Ответы (1)


Причина, по которой вы получаете эту ошибку, заключается в том, что вам нужно выполнить sqlcmd в среде командной строки Windows, а не в среде редактора SQL, такой как SSMS. sqlcmd — это отдельная исполняемая (.exe) утилита, имеющая некоторую эквивалентность графическому интерфейсу пользователя, такому как SSMS, в том смысле, что это другой тип клиентской программы для связи с сервером базы данных. Это не инструмент, который используется в самой SSMS (или в любом другом SQL-клиенте).

person ADyson    schedule 10.10.2017