Использование переменной для пути с помощью ": out" в SSMS в режиме SQLCMD - PullRequest
0 голосов
/ 26 мая 2020

Я делаю запрос в SSMS для извлечения данных в файл .CSV. Я использую для этого оператор :out и включил опцию SQLCMD в SSMS.

Этот запрос должен запускаться периодически и должен иметь имя файла в зависимости от даты (и некоторых других условий, но Я опустил их для простоты).

У меня есть этот код для создания @path в качестве переменной, и я хочу использовать эту переменную в операторе :out:

DECLARE @datestring as varchar(8)
DECLARE @path as varchar(100)

select @datestring = convert(varchar(8), getdate(), 112)

set @path = CONCAT('\\share\extracts\', @datestring, '.csv');

print @path

:out @path

--my select statement that needs the result set exported to csv will come here

вывод, который я получаю:

Unable to redirect output to @path.
Access to the path 'C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\@path' is denied.
\\share\extracts\20200526.csv

Итак, он печатает путь, когда я делаю выбор, но переменная принимается буквально как @path в некотором стандартном пути к файлу SSMS.

I Я пробовал кое-что с :setvar и знаком $ перед переменной, но безуспешно.

...