【问题标题】:SSIS is not inserting all rowsSSIS 没有插入所有行
【发布时间】: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


【解决方案1】:

我能够通过这种方式解决这个问题: 1.以管理员身份打开SSDT 2. 使用 ODBC Source (32bit) 进行 Oracle Source 连接 3. 使用 SQL Server Destination 进行 MSSQL 2017 连接

在这种情况下一切正常。

【讨论】:

    【解决方案2】:

    Set DataFlow 设置 AutoAdjustBufferSize = True 为我解决了同样的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多