如何修复SSIS:"价值,不在预期范围内"?

Dev*_*ris 9 ssis

当我打开包含同事创建的SSIS包的解决方案时,我得到了这个尴尬的错误,它没有告诉我应该做些什么来修复它.

在打开解决方案之前,他留下了手动从dtsx文件中的连接字符串中取出所有"变量"的指令.我已经这样做了,现在当我尝试在设计器中查看包时,我只得到一个红色x和此消息的图像.

EDDIT:你看不到任何设计元素,顶部没有标签来切换到错误或数据流.屏幕上只有一个带有红色x的灰色中心区域,消息就像VisualStudio在读取dtsx文件的过程中死亡一样.

小智 6

这个问题相当不具体,所以在这里当然很难走上正轨。所有给出的答案都关注不同的问题。我会说 PeterX 有最好的猜测。错误的原因可能与修改数据源一样简单。

在向需要由现有 SSIS 包处理的表中添加新列时,我经常遇到错误“错误输出没有相应的输出”。此错误伴随着一条错误消息,指出“值不在预期范围内”。

新添加的列需要由现有 SSIS 包处理。预期的行为是 SSIS 将识别出有一个新列并在要处理的 OLEDB 源任务 SSIS 的列页面上选择此列。但是,在修改表后第一次打开 OLEDB 源任务时,我收到两次以下错误消息:“值不在预期范围内。” 打开编辑器和打开编辑器的“列”页面时显示错误消息。在 OLEDB 源任务的高级编辑器中,新列出现在 OLEDB 源输出列树中,但未出现在 OLEDB 源错误输出列树中。这是错误消息的实际潜在问题。不幸的是,似乎没有办法手动添加缺失的列。

为了解决这个问题,如Jeff提到的那样,在普通编辑器的列页面上删除并重新添加新添加的列。

值得一提的是OLEDB Source任务的数据源是一个修改后的MDS View。Microsoft CRM Dynamics - 正如相关主题中提到的 - 也在使用视图。这使我得出结论,在修改数据类型或添加/删除列时,使用视图作为数据源可能会产生上述任何一种错误。

相关主题:错误”...非错误输出上的OLE DB Source.Outputs[OLE DB Source Output].Columns[XXXXXXXX]没有对应的输出

所描述的解决方法是指带有 Mircorsoft.NET Framework 3.5 SP1 的 Visual Studio 2008 版本 9.0.30729.4462 QFE。数据库是 SQL Server 2008 R2 (SP2)。


Reg*_*ser 2

如果有人使用 EncryptAllWithUserKey 作为 ProtectionLevel,您会收到类似的消息。然而,我相信该消息略有不同(即使您得到带有红色 X 的灰色设计表面)。

您是否尝试过在记事本中查看该文件?它只是一系列 GUID 还是其中有任何人类可读的内容?如果它没有任何可读代码,那么它可能是用用户密钥加密的。

如果员工将包部署到服务器并使用 SQL Server 作为部署目标(不是文件系统或 SSIS Pacakge 存储),那么您可以将包下载到您的计算机。只需连接到 SQL Server Integration Services 引擎,依次展开“存储的包”、“MSDB”、展开相关文件夹,右键单击该包,然后单击“导出包”。将文件保存在本地计算机上并打开它。该包可能会丢失注释和漂亮的格式,但除此之外它应该与员工部署的内容相同。