Как сохранить результат sql без создания таблицы для хранения результата хранимой процедуры

Мы бежим exec xp_fixeddrives чтобы получить свободное место для каждого физического диска, связанного с SQL Server.

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

В настоящее время я создаю таблицу в tempdb и вставив результаты exec xp_fixeddrives в эту таблицу. Но проблема, с которой я сталкиваюсь, заключается в том, что при перезапуске сервера я сталкиваюсь с проблемой доступа, когда таблица включена Tempdb,

Мне не очень нравится идея создания таблицы в Master БД или Model DB. Проблема, с которой я сталкиваюсь, заключается в том, что мы выполняем разные экземпляры версий SQL Server в период с 2000 по 2014 год. Поэтому, очевидно, есть проблемы, которые я должен учитывать.

Любое предложение по этому вопросу высоко ценится.

1 ответ

Решение

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

Если вы запускаете код из служб SSIS и хотите отправлять почту сразу после проверки, вам даже не нужно создавать таблицы. Просто заполните переменную объекта в SSIS из задачи "Выполнить SQL", которая будет выполняться под запросом

DECLARE @t TABLE 
(Drive VARCHAR(1),Size INT)

INSERT INTO @t 
EXEC MASTER..xp_fixeddrives

SELECT * FROM @t

Прочтите эту переменную объекта в задаче скрипта для отправки почты.

Другие вопросы по тегам