执行时OLE DB目标的SSIS错误

时间:2017-10-13 10:30:17

标签: sql-server ssis oledbconnection dataflow oledbexception

我是SSIS的新手,所以一直在关注一些在线教程。我遇到过以下情况,无法弄清楚发生了什么。错误是与OLE DB连接

如果有人能指出我正确的方向来解决这个问题,那就太好了。

SSIS package "c:\users\****\documents\visual studio 2015\Projects\tutorials\tutorials\basicpackage.dtsx" starting.
Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning.
Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning.
Warning: 0x80049304 at Data Flow Task, SSIS.Pipeline: Warning: Could not open global shared memory to communicate with performance DLL; data flow performance counters are not available.  To resolve, run this package as an administrator, or on the system's console.
Information: 0x40043006 at Data Flow Task, SSIS.Pipeline: Prepare for Execute phase is beginning.
Information: 0x40043007 at Data Flow Task, SSIS.Pipeline: Pre-Execute phase is beginning.
Information: 0x402090DC at Data Flow Task, Flat File Source [2]: The processing of file "L:\sql queries\SSIS TUTORIAL\apps.txt" has started.
Information: 0x4004300C at Data Flow Task, SSIS.Pipeline: Execute phase is beginning.
Information: 0x402090DE at Data Flow Task, Flat File Source [2]: The total number of data rows processed for file "L:\sql queries\SSIS TUTORIAL\apps.txt" is 5.
Error: 0xC0202009 at Data Flow Task, OLE DB Destination [23]: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80004005  Description: "The statement has been terminated.".
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80004005  Description: "Cannot insert the value NULL into column 'ID', table 'ssis.dbo.Apps'; column does not allow nulls. INSERT fails.".
Error: 0xC0209029 at Data Flow Task, OLE DB Destination [23]: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The "OLE DB Destination.Inputs[OLE DB Destination Input]" failed because error code 0xC020907B occurred, and the error row disposition on "OLE DB Destination.Inputs[OLE DB Destination Input]" specifies failure on error. An error occurred on the specified object of the specified component.  There may be error messages posted before this with more information about the failure.
Error: 0xC0047022 at Data Flow Task, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "OLE DB Destination" (23) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (36). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.  There may be error messages posted before this with more information about the failure.
Information: 0x40043008 at Data Flow Task, SSIS.Pipeline: Post Execute phase is beginning.
Information: 0x402090DD at Data Flow Task, Flat File Source [2]: The processing of file "L:\sql queries\SSIS TUTORIAL\apps.txt" has ended.
Information: 0x4004300B at Data Flow Task, SSIS.Pipeline: "OLE DB Destination" wrote 4 rows.
Information: 0x40043009 at Data Flow Task, SSIS.Pipeline: Cleanup phase is beginning.
Task failed: Data Flow Task
Warning: 0x80019002 at basicpackage: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED.  The Execution method succeeded, but the number of errors raised (3) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
SSIS package "c:\users\****\documents\visual studio 2015\Projects\tutorials\tutorials\basicpackage.dtsx" finished: Failure.

第一个错误ii无法解决。我检查了连接,SQL DB中的目标表,不知道是什么问题。是否可以使用Windows身份验证访问db?

Error: 0xC0202009 at Data Flow Task, OLE DB Destination [23]: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.

1 个答案:

答案 0 :(得分:1)

此错误似乎由输出

中的此行解释
  

OLE DB记录可用。来源:" Microsoft SQL Server Native   客户端11.0" Hresult:0x80004005说明:"无法插入   值为NULL' ID',table' ssis.dbo.Apps&#39 ;;专栏没有   允许空值。 INSERT失败。"。

不知道文件L:\sql queries\SSIS TUTORIAL\apps.txt的内容 SSIS.dbo.Apps表的设计很难确定问题的确切区域,而不是说表有一个名为ID的列,它不接受NULL并且文件有一个对应列的内容为NULL的行。

[EDIT} OP的评论后更新

你似乎有一个像这样的表

CREATE TABLE dbo.Apps (
      Id    UNIQUEIDENTIFIER PRIMARY KEY
    , Apps  CHAR (1)
    , Rating CHAR   (1)
    , Summary CHAR  (1)
);

尝试插入类似的内容,Id列中没有任何内容

INSERT INTO dbo.Apps
( Id, Apps, Rating, Summary)
VALUES
(NULL , '1', '2', '3' ) 

您将收到此错误

  

消息515,级别16,状态2,行5无法将值NULL插入   栏' Id',table' xStuff.dbo.Apps&#39 ;;列不允许空值。   INSERT失败。

所以我建议您更改表格定义,因为您希望ID列自动增加,UNIQUEIDENTIFIER改为INT IDENTITY

CREATE TABLE dbo.Apps (
      Id    INT IDENTITY PRIMARY KEY
    , Apps  CHAR (1)
    , Rating CHAR   (1)
    , Summary CHAR  (1)
);

这将起作用

INSERT INTO dbo.Apps
(     Apps
    , Rating
    , Summary
)
VALUES
(  '1', '2', '3'), (  'A', 'B', 'C')

见输出

enter image description here