【发布时间】:2010-12-27 19:39:42
【问题描述】:
我们有一个 SSIS pkg,它在 OLEDB 源中运行存储过程并将输出写入文件。存储过程有一个条件,如果它是一周中的某一天,它不会做任何事情。当它确实产生数据时,它会通过几个临时表来生成最终数据(完全来自临时表);存储过程在开始时启用了 SET FMTONLY OFF,因此它可以将元数据发送到 SSIS。 (涉及的两台服务器是 Windows 2008 Server 上的 SQL Server 2008。)
昨晚(它不应该生成数据的日子是周日/周一,这是计划运行的周日晚上(它是更大作业的一部分,因此它会在父运行的任何时候运行)), pkg 开始抱怨它找不到存储过程的元数据。在 SQL Mgmt Studio 中直接在服务器上运行 proc 时,它不会返回任何行,也不会返回列标题。但是,我们的开发环境中完全相同的代码和数据不会这样做。它不返回任何数据(正确),但确实显示列标题(也正确),因此 pkg 的开发版本不会抱怨元数据。
我还尝试了在 proc 顶部的一段从未执行的代码中添加“虚拟”元数据的技巧(如果 1 = 0 begin select cast(null as varchar(10)) as column1 end),但这并没有做到。
我认为在生产与开发中必须存在某种设置差异,这不会将元数据缓存在生产中,但会使其保持在开发中。有人知道从哪里开始寻找吗?
【问题讨论】:
标签: sql-server-2008 ssis