SSIS数据迁移相关问题求指导
为什么我用ssis迁数据,连接管理器用oracle provider for oledb会报标识符错误,同样的组件用microsoft oledb for oracle就可以正常运行。组件为OLEDB 源。
为什么我用ssis迁数据,连接管理器用oracle provider for oledb会报标识符错误,同样的组件用microsoft oledb for oracle就可以正常运行。组件为OLEDB 源。
【相关推荐】
Oracle Data Access Components (ODAC)
这种方法与第四种instant client创建odbc驱动链接的方式存在冲突,OLEDB驱动安装之后也会安装instant client的basic组件。所以需要删除之前的Path环境变量中instant client的路径,修改为稍后要创建的新路径。或者将之前的ODBC驱动重新安装到这个instant client目录中,不再使用之前的instant client。
首先需要下载OLEDB驱动,同样,我下载64位版本:
解压:
这个压缩包是包含了安装说明的文档的,里面有readme.htm。文档里也有讲,可以全部安装,也可以选择需要的组件进行安装。我这里就只安装我需要的就行了。在当前目录打开命令窗口,输入:
install.bat oledb c:\oracleOLEDB ODAC
其中oledb代表要安装的组件,c:\oracleOLEDB为安装目录,ODAC为注册表项Oracle Home的名称,卸载的时候使用uninstall.bat(需要到安装目录下使用这个命令,而不是刚刚的解压目录里),带这个名字或者目录都行。卸载命令:
uninstall.bat all ODAC
安装完成之后,就会出现OraOLEDB.Oracle这个访问接口了
接口的属性里有一些设置选项,自己酌情勾选,建议勾选"允许进程内"。
别着急去创建链接服务器,在系统环境变量中,为Path添加“C:\oracleOLEDB;C:\oracleOLEDB\bin;”(计算机属性-高级系统设置-高级-环境变量-系统环境变量-Path),如果之前安装过instant client,需要删除其路径,否则在SQL Server管理工具创建链接服务器时会卡死。
如果是供外部应用程序访问,还需要配置TNS_ADMIN和NLS_LANG环境变量,配置方式参考第四步。
最后创建链接服务器:
由于OLEDB驱动支持EZCONNECT,所以不配置tnsnames.ora也是可以的,使用IP:端口号/实例名也可以:
安全性设置不用说了,一样。
这种驱动创建的链接服务器可以使用下面这种方式进行查询,也可以使用前面的openquery方式查询。
select * from ORACLEOLEDB..SYSTEM.TEST
SYSTEM是我TEST表创建时选择的方案,注意方案前面试两个点。注意Oracle区分大小写,否则会无法查询。
以下引用内容出自:https://blog.csdn.net/jack_33/article/details/7620100
通过OleDB连接Oracle数据库,一般有两种provider
A:provider=MSDAORA.1
B:provider=OraOLEDB.Oracle
第一种为微软公司的oracle组件,第二种为oracle的访问组件。
Oracle数据库经常使用的两种字符集
C:英文:SIMPLIFIED CHINESE_CHINA.US7ASCII
D:中文:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
A与C、D搭配,数据读写没有乱码问题,如果出现乱码,则修改系统级(非用户级)的环境变量nls_lang为数据库所使用的字符集,重启电脑即可。
缺点:不支持long/Clob/Blob大字段。
B支持大字段,与D搭配最为完美。如果BC搭配使用,读出无乱码,写入为乱码,做为where条件传进去的中文参数为乱码。无法使用。如果数据库字符集为C,则只能使用A。如果要读取大字段,只得使用B新建连接
MSDAORA仅支持32位,64位机器上可能已经没有带该驱动了。
下载链接:https://www.microsoft.com/zh-CN/download/details.aspx?id=5793