Теперь мне удалось распечатать строку.
Я отредактировал оператор, в котором вы извлекаете данные из таблицы "data_v" (к которой у меня нет доступа), чтобы она работала на моем конце. В конце концов он должен работать с оригинальным кодом.
Теперь он также выполнит другие операторы.
Пожалуйста, попробуйте это:
BEGIN
DECLARE @stmt_c varchar(1000);
DECLARE @Current_Database varchar(1000) = (SELECT DB_NAME());
DECLARE @YYYYMMDD varchar(1000) = (SELECT convert(varchar, GETDATE(), 112));
DECLARE @YYYYMMDDhhmmss varchar(1000) = (SELECT format(getdate(),'yyyyMMddHHmmss'));
DECLARE @location varchar(1000) = 'D:\BackUp 2\Data\';
DECLARE @filename varchar(1000) = 'TGF_'+@YYYYMMDDhhmmss+'_'+@YYYYMMDD+'_'+'TT.dat';
DECLARE @absPath varchar(1000) = @location+@filename;
DECLARE @recordCount varchar(1000) = (SELECT '369' as col);
DECLARE @totalBytes varchar(1000) = (SELECT '674' as col);
DECLARE @totalItems varchar(1000) = (SELECT '14' as col);
DECLARE @totalChgd varchar(1000) = '0.00000';
DECLARE @trailer varchar(1000) = 'SELECT ''TRAILER|'+@recordCount+'|'+@totalBytes+'|'+@totalChgd+'|'+@totalItems;
SET @stmt_c=
'BCP '+
'"SELECT ''HEADER|AA|'+@YYYYMMDDhhmmss+'|'+@YYYYMMDD+'|1.0'' UNION ALL SELECT * FROM data_v UNION ALL '+ @trailer+'" '+
'QUERYOUT "'+@absPath+'" '+
'-c -t, -T -d ' + @Current_Database;
print @stmt_c
--EXEC master.sys.xp_cmdshell @stmt_c;
END
Вот результат на моем конце:
BCP "SELECT 'HEADER|AA|20190705154946|20190705|1.0' UNION ALL SELECT * FROM data_v UNION ALL SELECT 'TRAILER|369|674|0.00000|14" QUERYOUT "D:\BackUp 2\Data\TGF_20190705154946_20190705_TT.dat" -c -t, -T -d master
редактирование:
Как вы упомянули, что вы решили проблему, было бы лучше дополнить этот вопрос вашим решением или, если вы не хотите этого, удалите весь вопрос.