【发布时间】:2013-03-18 10:04:46
【问题描述】:
我正在使用 SSIS 将数据库从 Oracle 数据库迁移到 SQL Server 2008 R2 架构。其中一个 oracle 表中有一个列,其中包含 long 文本。为了适应所需的架构,我在 OLEDB 源中使用 SQL 命令,该命令使用多个连接来获取所需的数据。
在迁移而不是整个 long 字符串时,仅从源传输前 100 个字符,其余字符被修剪。在我尝试了一个没有任何连接的查询后,我能够完整地提取整个文本。
在 Oracle 客户端上运行查询时,会出现正确的结果。请提出任何直接的方法来纠正问题?目前,我暂时使用 SQL 表来传输数据,然后使用无连接查询从 Oracle 数据库中提取数据。
【问题讨论】:
-
R u 在您的 OLEDB 源代码中使用 Oracle 代码页,即 20127.stackoverflow.com/questions/7188334/…
-
虽然在这种情况下 AlwaysUseDefaultCodePage 属性为 true,但我没有遇到此类错误或警告,只有在 sql 命令中使用连接时字符串的长度被缩短了。
-
将
Advanced Editor用于OLEDB Source并手动更改列的长度。with joins数据正在获取truncated似乎很奇怪。你可以发布你的 oracle 查询。尝试将data viewer放在你的源之后并检查你是否获得了正确的数据 -
即使将
Data viewer放在源中,您也可以看到truncated的数据? -
我会坚持你的“临时”设计——根据我的经验,最好让任何两种存储格式之间的初始传输尽可能简单,以最大限度地减少驱动程序等中这些晦涩的错误的暴露. 它通常也运行得更快(端到端)。此外,如果您拥有 SQL Server Enterprise 版本,则值得购买 Attunity Drivers for Oracle - 它们看起来更快且错误更少。
标签: sql sql-server-2008 join ssis