如何在不创建 table 来存储存储过程结果的情况下存储 sql 结果

How to store sql result without creating a table to store the result of a stored procedure

我们 运行 exec xp_fixeddrives 为与 SQL 服务器关联的每个物理驱动器免费获得 space。

我 运行 此代码是 SSIS 包的一部分,它免费获取所有 SQL 服务器 space。

目前我正在 tempdb 中创建一个 table 并将 exec xp_fixeddrives 的结果插入到这个 table 中。但我面临的问题是,每当服务器重新启动时,我都会面临访问问题,因为 table 处于 Tempdb.

我不太喜欢在 Master 数据库或 Model 数据库中创建 table 的想法。我面临的一个挑战是我们在 SQL 服务器版本的不同实例上执行,范围从 2000 到 2014。所以显然有一些问题我必须牢记。

非常感谢对此提出任何建议。

很明显,只要 SQL 服务重新启动,SQL 服务器就会重置 TempDb。在这种情况下,您将面临访问问题,因为 table 将不存在。如果我还想存储历史检查信息,我可能会创建自己的 table 来存储详细信息。

如果您是 运行 来自 SSIS 的代码,并且想在验证后立即发送邮件,那么您甚至不必创建任何 table。只需从执行 SQL 任务中填充 SSIS 中的对象变量,该任务将在查询

下方 运行
DECLARE @t TABLE 
(Drive VARCHAR(1),Size INT)

INSERT INTO @t 
EXEC MASTER..xp_fixeddrives

SELECT * FROM @t

在脚本任务中读取此对象变量发送邮件。