Я пару раз работал со сценариями после развертывания и всегда интуитивно использовал действие сборки «PostDeploy», потому что это то, что он есть. Теперь я впервые пытаюсь следовать встроенной инструкции из шаблона скрипта, чтобы использовать ":r somescript.sql"
синтаксис.
Сразу эта строка помечается как неправильная:
"SQL80001 неверный синтаксис рядом с ':'"
Я нашел предложения, чтобы установить PDS для Build Action "none". Это не помогает, ошибка остается. Что мне здесь не хватает?
Ответы:
Предполагая, что ошибка происходит во время процесса сборки, и что у вас нет никаких фактических синтаксических ошибок, и это просто
затем ошибка также возникает, когда импортируемый файл не существует. Пожалуйста, проверьте расположение файла. Если вы не указали абсолютный путь, то путь будет относительно папки решения (по крайней мере, для меня это так).
Если во время разработки вы хотите увидеть ошибку, о которой сообщает процесс сборки, обязательно включите «режим SQLCMD» в редакторе T-SQL в Visual Studio. Справа в панели кнопок есть кнопка с "!" в этом, что должно позволить это. Или вы можете перейти в меню SQL , выбрать Transact-SQL Editor -> , выбрать « Настройки выполнения» -> , а затем, наконец, выбрать режим SQLCMD . Теперь, когда вы выполняете скрипт, он будет правильно интерпретировать
:r
, как это делает процесс сборки / публикации.Кроме того, для вашего сценария Post Deploy (PDS) должно быть установлено действие сборки для PostDeploy . Если для этого параметра установлено значение None, процесс сборки SSDT будет полностью пропущен.
источник
Допустимая ошибка
Это потому, что
:r somescript.sql
не является действительным sql. Вы видите синтаксическую ошибку, которая точно соответствует сообщению об ошибке.Режим SQLCMD
Сценарий после развертывания выполняется в режиме SQLCMD.
разрешение
Помните, что вы можете подключиться к БД и выполнить sql из Visual Studio. Вы увидите ту же синтаксическую ошибку, если откроете тот же скрипт в SSMS. Однако как в SSMS, так и в Visual Studio вы можете «включить» режим SQLCMD.
VS 2017
SSMS 17, SSMS 18
Смотрите также
источник