【问题标题】:Error in SSIS Data Flow when using Fast Load使用快速加载时 SSIS 数据流中的错误
【发布时间】:2012-02-29 12:29:28
【问题描述】:

当使用 SSIS 从源表加载数据时,我们有一个 OLE DB 目标,它使用“表或视图 - 快速加载”的数据访问模式(它使用 BULK INSERT 来完成工作)。当我们尝试执行任务时,我们得到一个非常奇怪的错误信息:

错误:4804,严重性:17,状态:1 读取当前行时 主机,遇到过​​早的消息结束 - 传入数据 当服务器希望看到更多数据时,流被中断。这 主机程序可能已终止。确保您使用的是 支持的客户端应用程序编程接口 (API)。

该错误似乎表明传入数据中存在某种损坏,但我们已经清理了源数据并且一切正常。如果我们将数据访问模式更改为“表或视图”(使用游标进行插入),则每一行都会添加而不会出现任何错误。

表定义:

CREATE TABLE [dbo].[CUST](
    [CUST_FIRST_NM] [varchar](50) NOT NULL,
    [CUST_MIDL_INIT] [char](1) NULL,
    [CUST_LAST_NM] [varchar](50) NOT NULL,
    [CUST_EMAIL_ADDR] [varchar](100) NULL,
    [CUST_TELE_PHONE_NBR] [int] NULL,
    [CUST_TELE_CNTRY_CD] [smallint] NULL,
    [CUST_TELE_AREA_CD] [smallint] NULL,
    [LAST_UPD_DTTM] [datetime] NOT NULL,
    [CUST_ID] [bigint] IDENTITY(1,1) NOT NULL,
    [CUST_CD] AS ('PUB'+right(CONVERT([varchar](max),CONVERT([varbinary],[CUST_ID],0),(1)),(7))),
 CONSTRAINT [XPKCUST] PRIMARY KEY CLUSTERED 
(
    [CUST_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

知道是什么导致了这个错误吗?

【问题讨论】:

    标签: sql-server-2008 ssis


    【解决方案1】:

    事实证明,我能够回答自己的问题,因此我将其发布在 StackOverflow 上以造福社区。 :)

    问题在于计算列 CUST_CD。经过大量研究,似乎 BULK INSERT 不喜欢复杂的计算类型(请参阅https://stackoverflow.com/questions/4031909/using-sql-server-spatial-types-in-ssis-data-load)。解决方案是删除计算列并将其设为 varchar(20) NULL。然后我创建了一个新的执行 SQL使用计算值更新任何 NULL 行的任务。

    【讨论】:

      猜你喜欢
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 2018-11-03
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多