我对SSIS很新,所以请耐心等待。开发人员给了我一个SSIS包,并要求我在我们的数据库服务器上创建一个预定的作业来运行它。他说它在他的开发盒上运行,但我看到作业因以下数据类型不匹配错误而失败:
0xC020837F“输出列'col1'列的数据类型与源列'col1'的数据类型”System.Byte []“不匹配”
我在Visual Studio中打开了包,在项的输入和输出属性中,它将外部列和输出列显示为数据类型数据库时间戳[DT_DBTIMESTAMP]。我检查了服务器上的源列,并验证它是一个datetime列。有没有其他原因可以抛出这个错误?
答案 0 :(得分:1)
这看起来像您的源表定义在开发和生产环境中不一样。由于您未提供有关您使用的源组件类型和连接管理器的详细信息以及您的源查询(可能是CAST或CONVERT某些数据),因此我们必须做出一些假设。
如SSIS Error and Message Reference中所述,错误代码0xC020837F(-1071611009)的名称为DTS_E_ADOSRCDATATYPEMISMATCH,其描述如下:
“”的数据类型与来源的数据类型“”不匹配 栏“__”。
从错误名称(DTS_E_ADOSRCDATATYPEMISMATCH)和错误消息部分“System.Byte []”我得出结论,您可能正在使用ADO NET源代码组件。
对于开始检查以下内容:打开源组件的属性,取消选中特定列并再次检查 - 这会强制源组件刷新外部和输出 - 这个技巧适用于oledb源它可能对你有帮助
如果这没有用,请检查以下链接,看看您的某些源数据类型是否映射到System.Byte:
可能在开发或生产环境中,列是timestamp,image,varbinary或映射到托管System.Byte []的其他类型,但另一方面则不是。请重新检查源表定义。
如果此答案对您没有帮助,请发布源表的create语句以及源查询本身。