最近有个新需求,需要用SSIS抽取intersystems cache数据库表数据
步骤一:首先想到的是通过ODBC驱动进行连接,第一步安装cache驱动
步骤二:配置cache数据库连接串,关键内容:CACHe数据库地址,端口,空间名,用户名,密码
步骤三:测试ODBC链接
步骤四:SSIS中配置ODBC链接
步骤五:常规数据抽取,抽取过程中报错
特殊说明:此处的报错信息并不完整,所以我想通过SQLSERVER DBLINK方式连接Cache数据库
以下是SQLSERVER配置DBLINK方式连接CACHE数据库内容:
步骤一:通过SQLSERVER配置CACHE链接,前提条件:ODBC中已配置好CACHE数据库信息
步骤二:通过配置好的连接查询数据
查询SQL:SELECT * FROM OPENQUERY(CACHE,'SELECT * FROM dhc_bonUs_data.empinfoview')
--注释:CACHE为你配置的DBLINK名称
返回结果:
消息 7347,级别 16,状态 1,第 2 行
链接服务器 'CACHE' 的 OLE DB 访问接口 'MSDASQL' 返回的数据与列 '[MSDASQL].BonusUnitName' 所需的数据长度不匹配。所需的(最大)数据长度为 30,但返回的数据长度为 32。
此处反馈的结果为数据类型问题,大致意思是在CACHE 中数据类型为varchar,在SQLSERVER中需要以nvarchar数据类型展示,在ODBC配置页面中可以选择编码方式
更改数据库编码格式:以UNICODE格式编码打钩即可
更改数据库编码类型后,SSIS包重新映射,继续抽数据
通过DBLINK查询CACHE数据库表也不报错了