Как сохранить результат 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
Прочтите эту переменную объекта в задаче скрипта для отправки почты.