question34:[进入地税纳税税务登记表 [274]] 错误: SSIS 错误代码 DTS_E_OLEDBERROR。出现 OLE DB 错误。错误代码: 0x80004005。
已获得 OLE DB 记录。源:“Microsoft SQL Server Native Client 11.0” Hresult: 0x80004005 说明:“语句已终止。”。
已获得 OLE DB 记录。源:“Microsoft SQL Server Native Client 11.0” Hresult: 0x80004005 说明:“不能在具有唯一索引“UIX_DS_SWDJXX”的对象“dbo.DS_SWDJXX”中插入重复键的行。重复键值为 (4600000000010517)。”。
解答:插入重复的行,根据这个重复键值‘4600000000010517’先找到对应的数据,在根据这条数据的一个关键字段去源端查找。可能存在源端的某一个字段的值重复的情况。
question 35:ssis在数据量有20万以上的时候,执行速度非常慢
方案: 在查找的时候可能涉及到多次查找,查找的键也不一样,这里我们采取的解决办法之一是给查找的这个字段加唯一非聚集索引来提高执行速度。还有就是去掉数据源中目的端我们不需要查找的字段,这样也可以提高执行速度。
question36:在源端查找的时间戳的问题
select a.id,a.name,a.sex ,a.lastUpdatedate from a where a.lastUpdatedate>=? and a.lastUpdatedate<=?
这里select里面的lastUpdateDate一定要写,因为后面where里面的lastUpdatedate是从前面select查询的结果集里面拿的,如果不在select里面查这个字段肯定存在逻辑错误。
question37:查找控件使用的时候外键关联问题(我的思维误区)
select a.* from XX a inner join b on a.id=b.aId
在查找的时候如果原先目的端所在的表没有设置主外键关系,是通过手动控制的,那就必须要用inner join 来关联b表,如果a表已经有外键,那就直接查询a表,因为如果外键不存在或者重复数据肯定进不来。