Для следующего человека, стучащего головой, пытающегося понять это.Мне нужно было вызвать командный файл из XP_CMDSHELL, который вызвал SQLCMD, который вызвал запрос SQL из файла.Зачем?Поскольку запрос имеет двойные кавычки, окружающие имена столбцов, которые генерируются динамически, чтобы данные запятых в полях не мешали процессу экспорта CSV в SQLCMD.(запятая).Это так же просто, как добавить -I для идентификатора в кавычках.Затем вы можете встроить свой запрос в двойных кавычках в строку или продолжить подачу его из файла.
Простой тест:
пакетфайл:
sqlcmd -E -S PGCDWDEV02 -d ANALYTICS -I -i D:\extractH\sqlquery.sql -o D:\output.txt
sql файл:
SELECT "TABLE_NAME" FROM INFORMATION_SCHEMA.TABLES
Реальная сделка вместе взятая:
DECLARE @SQLCMD VARCHAR(4000);
SET @SQLCMD
= 'sqlcmd -S ' + @@SERVERNAME + ' -d ' + @db_name + ' -E -I -i ' +
@queryFile + ' -o "' + @root_path + ''
+ @object_name + '.csv" -W -w 10000 -s","';