У меня есть две среды, которые я использую для разработки, и я хочу иметь возможность запускать другие сценарии из другого сценария. В настоящее время, когда нужно переключаться между двумя средами, которые я должен вручную закомментировать путь, который мне не нужен:Назначение переменной TSQL для переменной SQLCMD
--:SETVAR scriptPath "D:\Scripts\Mark\Documents\Data Integrations\"
:SETVAR scriptPath "C:\Users\Mark\Documents\Data Integrations\"
:r $(scriptPath)"General Scripts"\"Functions and Setup".sql
Этот код прекрасно работает, но то, что я хотел бы сделать, это добавить разветвление заявление автоматически выберите правильный путь.
:SETVAR ServerName "(CAST(SERVERPROPERTY('MachineName') AS NVARCHAR(100)))"
DECLARE @Path NVARCHAR(MAX)
IF $(ServerName) = 'Computer1'
SELECT @Path = 'C:\Users\Mark\Documents\Data Integrations\'
ELSE
SELECT @Path = 'D:\Scripts\Mark\Documents\Data Integrations\'
:SETVAR scriptPath @Path
:r $(scriptPath)"General Scripts"\"Functions and Setup".sql
, но с этим кодом я получаю «. Произошла неустранимая ошибка сценариев Не удается найти каталог по указанному пути для„:. Г“Ошибка команды
Что я делаю неправильно
.?
Попробуйте использовать имена каталогов без зра тузы для испытания. Я думаю, что некоторое имя каталога с символом пробела внутри не двойным кавычками. Поэтому внимательно просмотрите свой скрипт, чтобы убедиться, что пространство не сломает какой-либо путь. – Serg