如何存储sql结果而不创建存储过程结果的表

时间:2016-02-29 05:13:56

标签: sql-server tsql stored-procedures ssis database-administration

我们正在运行exec xp_fixeddrives以获取与SQL Server关联的每个物理驱动器的可用空间。

我正在运行此代码作为SSIS包的一部分,该包获取所有SQL服务器可用空间。

目前我正在tempdb创建一个表格,并将exec xp_fixeddrives的结果插入此表格中。但我面临的问题是,当服务器重新启动时,我面临访问问题,因为该表在Tempdb上。

我真的不喜欢在Master DB或Model DB中创建表格的想法。我面临的一个挑战是我们执行从2000年到2014年的SQL Server版本的不同实例。所以很明显我必须记住这些问题。

对此有任何建议都非常感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

INSERT INTO @t 
EXEC MASTER..xp_fixeddrives

SELECT * FROM @t

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