SSIS丢失了存储过程元数据

时间:2010-12-27 19:39:42

标签: sql-server-2008 ssis

我们有一个SSIS pkg,它在OLEDB源中运行存储过程并将输出写入文件。存储过程的条件是,如果它是一周中的某一天,它将不会执行任何操作。当它确实生成数据时,它会逐步执行几个临时表来生成最终数据(完全来自临时表);存储过程在启动时启用了SET FMTONLY OFF,因此它可以向SSIS发送元数据。 (涉及的两个服务器是Windows 2008 Server上的SQL Server 2008。)

昨晚(它不应该生成数据的日子是星期日/星期一,这是星期天晚上计划运行的时间(它是一个较大的工作的一部分,所以它会在父运行的任何时候运行)), pkg开始抱怨它无法找到存储过程的元数据。在SQL Mgmt Studio中直接在服务器上运行proc时,它不返回任何行,也不返回列标题。但是,我们的开发环境中完全相同的代码和数据不会这样做;它没有返回任何数据(正确),但确实显示了列标题(也正确),因此pkg的开发版本不会抱怨元数据。

我还尝试了在一个永不执行的代码片段中在proc顶部添加'dummy'元数据的技巧(如果1 = 0开始select cast(null作为varchar(10))作为column1 end),但那并没有做得很好。

我认为生产与开发之间必须存在某种设置差异,这些设置不会将元数据保留在生产环境中,但会将其保持在开发阶段。任何人都知道从哪里开始寻找?

1 个答案:

答案 0 :(得分:0)

我认为这不是SSIS问题,也不是元数据问题。您说当在Management Studio中运行时,proc会在开发中返回一个空数据集(仅限列标题),并且在生产中返回根本没有。这是你的问题,事实上proc可以返回任何内容而不是空数据集,这就是SSIS抱怨元数据的原因。

仔细检查您的proc和数据在生产和开发中是否完全相同。每个代码路径都会返回一些东西(也就是说某些东西会导致生产点击一个根本不返回任何内容的代码路径)?