【发布时间】:2018-11-28 06:12:22
【问题描述】:
我对 VS SSDT 2017, SSIS Express Edition 有疑问。我的源是 Oracle 12G,目标是 SQL Server 2017。我的包由简单的数据加载任务组成;源连接和目标连接。数据来自 SQL 脚本。使用 OLE DB 连接。源中的计数表示 238674 行,但 SSIS 仅加载和插入 144254 行并且没有任何错误。包以成功结束(绿色复选标记)。 目标表没有类型或其他问题。所有类型和尺寸都与来源相同。当我从 SQL 脚本中删除大部分列并仅加载 1 或 2 列时,它会提取并插入所有 238674 行。但是当列数更多(8-9列)时,插入的行数会越来越小。
【问题讨论】:
-
您使用哪个 Oracle OLEDB 连接?尝试使用:Oracle Provider for OLE DB 如果您不是,请尝试在您的目的地使用快速加载
-
您可以从 1 或 2 列开始,然后继续查看导致问题的列吗?听起来您正在忽略或截断行。另外,您希望源程序有多少行?
-
@holder for source conn 我正在使用 Oracle Provider for OLE DB。我尝试了加载和快速加载。结果是一样的。
-
@JimJimson Count(*) 在源中返回 238674 行,但只有 144254 被提取并插入到目标。当我更改脚本并删除一些列时,在从脚本中删除一定数量的列后,插入的数量会增加到 226000,它会提取所有 238674 行。似乎与提取的数据总量有关。
-
我的直觉是某些值会违反某些约束。我建议减少列,直到它加载所有记录,然后一次添加第 1 列,直到行数下降。然后取出每一列有问题的列,看看是否是一列或多列导致问题。
标签: sql-server ssis oledb etl sql-server-data-tools