以下内容转自:http://www.dotblogs.com.tw/jamesbi/archive/2010/02/11/13603.aspx
之前用SSIS在做ORACLE與SQL間資料搬移時,最痛恨遇到NVarchar跟Unicode Code問題了。
明明是NVarchar(SQL)搬到NVarchar2(ORACLE),兩邊都Support Unicode,但SSIS都老會要求指定Data Flow Destination的Code Page,接著又會嚷著SQL中得到的Unicode不能直接轉成Non-Unicode,所以就得很可笑地在Nvarchar與NVarchar2兩個 Unicode欄位中加上一個Data Conversion。如下圖:
不過,苦難還沒有結束... 如果很不幸地,NVarchar中還真的放了Unicode字元,則在轉換時,會出現以下的錯誤訊息。
Error: 0xC02020C5 at Data Flow Task Failure Sample, Data Conversion [543]: Data conversion failed while converting column "UnicodeField" (505) to column "UnicodeFieldMapping" (557). The conversion returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".
Error: 0xC020902A at Data Flow Task Failure Sample, Data Conversion [543]: The "output column "UnicodeFieldMapping" (557)" failed because truncation occurred, and the truncation row disposition on "output column "UnicodeFieldMapping" (557)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component.
這問題讓我很困擾,不過因為遇到時都是做些一次性的資料搬移,所以我都很鄉愿地繞路解決(最愛用的一招是回去改用SQL 2000 DTS,很奇怪,用DTS搬資料時,幾乎不曾為Enocding傷過腦筋),未曾認真與它對決過。
最近同事想用SSIS來做重要的日常資料搬移,就卡在這個問題上,由於搬移是每天要跑的,繞路的成本就會高出許多,這回我總算被迫要收服這隻妖怪。東試西試之餘,忽然想到之前使用Query Express的經驗,Oracle的OLE DB Driver才能正確顯示Unicode,Microsft的OLE DB for Oracle反而不行,所以我試著把Data Flow Destination的OLE DB換成Oracle版。
美妙的事出現了!! 使用Oracle Provider for OLE DB後,連Data Conversion都不用了,直接對Unicode對Unicode,一次搞定。
看一下令人興奮的結果,SQL裡的六頭牛被搬到ORACLE裡了,NVarchar --> NVarchar2,萬牛奔騰的感覺豈是一個爽字可以形容,哈!!
相关推荐
SSIS传数据到Oracle
通过SSIS导入数据(SQL Server2005-->Oracle11g) 通过SSIS导入数据(SQL Server2005-->Oracle11g),自己总结,已测试通过;
MS SQL Server 2005 的SSIS(SQL Server Integration Services),它和其他的ETL工具,如Informatic 在对ETL的处理手法上大同小异,区别不大,都是按照ETL和DW的概念来开发和使用的。
SSIS 教學 ORACLE與SQL SERVER的資料交換教學
集成服务创建SSiS项目SQL2008完全手册
SSIS对SQL Server向Mysql数据转发表数据 更新和新增数据
sql server integration services 安装包,下载可用。
sqlserver2005 Integration Services 示例
SQL Server Integration Service(SSIS)入门操作手册,简单介绍了各模块的功能。
SSIS包的开发、包配置、控制流、数据流、数据转换
SQLSERVER 2008 SSIS 基础文档 SSIS使用手册 共167页.pdf
SSIS连接Oracle参考[借鉴].pdf
这个方法是执行SSIS包最常见的方法。在Management Studio下...SSIS是Microsoft SQL Server Integration Services的简称,是生成高性能数据集成解决方案。而通过SQL Server 代理作业可以方便的自动调度执行 SSIS 包。
SQLServer利用SSIS包定时同步新增数据到其它库,全图形化操作,规避各种非常深入的数据库概念,适合新手入门
Introduction to SSIS and Migration of DTS to SSIS
sql2005 ssis 数据挖掘 资料
有一个word文档,是从网上摘录的,还有一个自己做的一个简单Demo。vs2008开发SSIS,在TASK组件中写入SQL时,如何调用变量。
SQL Server 2005 BI系列课程(6):专家讲述SSIS
SQL Server 2005 SSIS 整合服務
sql server 2005 基于SSIS定制ETL解决方案