2015-02-20 6 views
0

У меня есть две среды, которые я использую для разработки, и я хочу иметь возможность запускать другие сценарии из другого сценария. В настоящее время, когда нужно переключаться между двумя средами, которые я должен вручную закомментировать путь, который мне не нужен:Назначение переменной 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 

, но с этим кодом я получаю «. Произошла неустранимая ошибка сценариев Не удается найти каталог по указанному пути для„:. Г“Ошибка команды

Что я делаю неправильно

.?
+0

Попробуйте использовать имена каталогов без зра тузы для испытания. Я думаю, что некоторое имя каталога с символом пробела внутри не двойным кавычками. Поэтому внимательно просмотрите свой скрипт, чтобы убедиться, что пространство не сломает какой-либо путь. – Serg

ответ

1

вы не можете назначить использование переменных T-SQL в SQLCMD команды напрямую. единственный способ добиться того, что вы хотите через внешний файл.

:Setvar DataPhysicalFile "" 
:Out $(TEMP)\Rename-DB.temp 
PRINT ':Setvar DataPhysicalFile "' + @DataPhysicalFile + '"'; 
GO 
:Out stdout 
:r $(TEMP)\Rename-DB.temp 
PRINT "$(DataPhysicalFile)" 
GO 
+0

Спасибо. Это работало для меня, хотя мне пришлось немного изменить. : Setvar DataPhysicalFile «MyFile» : Out $ (TEMP) \ Rename-DB.txt PRINT ': Setvar DataPhysicalFile "' + '$ (DataPhysicalFile)' + '"'; GO : Out stdout : r $ (TEMP) \ Rename-DB.txt PRINT '$ (DataPhysicalFile)' GO – ScubaManDan

+0

Игнорируйте это. Это было прекрасно. Это конец пятницы. – ScubaManDan

Смежные вопросы