Чому команда r SQLCMD в сценарії після розгортання позначена як неправильна?


18

Я декілька разів працював із сценаріями розгортання публікацій і завжди інтуїтивно використовував дію збірки "PostDeploy", тому що це є. Зараз я вперше намагаюся слідувати вбудованій інструкції з шаблону сценарію для використання ":r somescript.sql"синтаксису.

Одразу цей рядок позначається як неправильний:

"Неправильний синтаксис SQL80001 поруч із параметром ':'"

Я знайшов пропозиції встановити PDS таким чином, щоб побудувати дію "немає". Це не допомагає, помилка залишається. Що я тут пропускаю?


Вибачте, я вважаю, що ясніше "для якої дії встановлений сценарій, у якому": r "всередині нього?" :)
Ед Елліотт

Відповіді:


17

Якщо припустити, що помилка трапляється в процесі збирання, і що у вас немає фактичних синтаксичних помилок, і це просто

:r path\to\file.sql

то помилка також виникає, коли імпортований файл не існує. Перевірте розташування файлу. Якщо ви не вказали абсолютний шлях, то шлях буде відносно папки рішення (принаймні для мене це є).

Якщо під час розробки ви хочете побачити помилку, про яку повідомляє процес збирання, тоді переконайтеся, що ввімкнено "Режим SQLCMD" в редакторі T-SQL у Visual Studio. На крайній правій панелі кнопок є кнопка із символом "!" в ньому, що має це дозволити. Або ви можете перейти до меню SQL , вибрати редактор Transact-SQL -> , виберіть Налаштування виконання -> , а потім нарешті виберіть Режим SQLCMD . Тепер, коли Ви виконуєте сценарій, він буде правильно інтерпретувати :r, як і процес збирання / публікації.

Крім того, у вашому сценарії після розгортання повідомлення (PDS) має бути встановлена дія Post Build . Якщо для нього встановлено значення None, процес його складання повністю буде пропущений.


4

Дійсна помилка

Це тому :r somescript.sql, що недійсний sql. Ви бачите синтаксичну помилку, яка саме полягає у повідомленні про помилку.

SQL80001: Неправильний синтаксис поблизу ':'.

Режим SQLCMD

Сценарій розгортання публікації виконується в режимі SQLCMD.

Утиліта sqlcmd дозволяє вводити оператори Transact-SQL, системні процедури та файли сценаріїв у командному рядку, в редакторі запитів у режимі SQLCMD, у файлі сценарію Windows або в операційній системі (Cmd.exe), крок завдання SQL Server Агентська робота. Ця утиліта використовує ODBC для виконання пакетів Transact-SQL.

Дозвіл

Пам'ятайте, що ви можете підключитися до БД і виконати sql з Visual Studio. Ви побачили б цю саму синтаксичну помилку, якби ви відкрили той самий скрипт у SSMS. Однак і в SSMS, і в Visual Studio ви можете "включити" режим SQLCMD.

VS 2017

  • клацніть правою кнопкою миші на редакторі, що містить скрипт sql
  • натисніть Налаштування виконання
  • натисніть Режим SQLCMD
  • Зауважте, що ви можете зробити те ж саме в меню SQL

SSMS 17, SSMS 18

  • Запит (пункт меню)
  • Режим SQLCMD

Дивись також

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.