Как сохранить результаты процедуры в новом (индивидуальном) текстовом файле в SQL Server для каждого выполнения - PullRequest
0 голосов
/ 19 июня 2019

Ниже мой код, который печатает мой результат sql в текстовый файл. Моя проблема: как создать новый текстовый файл для каждого выполнения, вместо добавления результата в тот же текстовый файл, который уже создан?

Я пытаюсь добавить >>, но он добавляет результат только в том же тексте.

нужна помощь, пожалуйста, это не повторяющийся вопрос, потому что старый вопрос показывает, как записать результат в тот же текстовый файл, но для моей проблемы мне нужно создать новый, и я не хочу перезаписывать старый текстовый файл.

Declare @fn varchar(8000) = 'C:\Tmp\log\out.txt';
Declare @cmd varchar(8000);

DECLARE @viewObjectIds TABLE (object_id INT);
INSERT INTO @viewObjectIds
  SELECT o.object_id
    FROM sys.objects AS o
      WHERE o.type = 'V';

DECLARE view_cursor CURSOR FAST_FORWARD FOR
   SELECT object_id FROM @viewObjectIds;

OPEN view_cursor;
FETCH NEXT FROM view_cursor INTO @object_id;

WHILE @@FETCH_STATUS = 0
BEGIN
 SELECT @command =
   'EXECUTE sp_refreshview '''
   + QUOTENAME(OBJECT_SCHEMA_NAME(@object_id)) + '.' + QUOTENAME(OBJECT_NAME(@object_id))
   + ''';';

 PRINT @command;
 SELECT @cmd  = 'echo '+ @command + ' >> '+ @fn + '' ;         
 exec xp_cmdshell @cmd
  FETCH NEXT FROM view_cursor INTO @object_id;
END

1 Ответ

0 голосов
/ 15 июля 2019

Вы можете объединить CURRENT_TIMESTAMP с именем файла out.txt.Простое решение, которое создаст новый файл для каждого выполнения.

РЕДАКТИРОВАТЬ:

Declare @fn varchar(8000) = 'C:\Tmp\log\' + convert(varchar(25), current_timestamp, 120) + 'out.txt';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...