执行SSIS包时,该值违反了列的完整性约束

时间:2017-10-12 00:13:09

标签: sql-server ssis data-warehouse

我创建了SSIS包,它基本上从表中提取脏数据,并使用DQS Cleansing Transformation清除数据并根据Lookup Transformation条件加载到表中。我在流程结束时遇到错误。

Error: 0xC0202009 at Data Flow Task, CustomersDirtyNoMatch [109]: 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: "Unspecified error".
Error: 0xC020901C at Data Flow Task, CustomersDirtyNoMatch [109]: There was an error with CustomersDirtyNoMatch.Inputs[OLE DB Destination Input].Columns[CustomerKey] on CustomersDirtyNoMatch.Inputs[OLE DB Destination Input]. The column status returned was: "The value violated the integrity constraints for the column.".
Error: 0xC0209029 at Data Flow Task, CustomersDirtyNoMatch [109]: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The "CustomersDirtyNoMatch.Inputs[OLE DB Destination Input]" failed because error code 0xC020907D occurred, and the error row disposition on "CustomersDirtyNoMatch.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 "CustomersDirtyNoMatch" (109) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (122). 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.

我的数据流的屏幕截图 enter image description here

有关详细信息,请参阅此处 document

这是一个表格定义

CREATE TABLE dbo.CustomersDirty (
    CustomerKey INT NOT NULL PRIMARY KEY,
    FullName NVARCHAR(200) NULL,
    StreetAddress NVARCHAR(200) NULL,
    Updated INT NULL,
    CleanCustomerKey INT NULL);

CREATE TABLE dbo.CustomersClean (
    CustomerKey INT NOT NULL PRIMARY KEY,
    FullName NVARCHAR(200) NULL,
    StreetAddress NVARCHAR(200) NULL );

CREATE TABLE dbo.CustomersDirtyMatch (
  CustomerKey INT ,
  FullName NVARCHAR(200) NULL,
  StreetAddress_Source NVARCHAR(200) NULL,
  StreetAddress NVARCHAR(200) NULL,
  StreetAddress_Status NVARCHAR(100) NULL,
  StreetAddress_Confidence NVARCHAR(100) NULL,
  StreetAddress_Reason NVARCHAR(4000) NULL,
  Updated INT NULL,
  CleanCustomerKey INT NULL,
  Record_Status NVARCHAR(100) NULL );

CREATE TABLE dbo.CustomersDirtyNoMatch ( 
    CustomerKey INT , 
    FullName NVARCHAR(200) NULL, 
    StreetAddress_Source NVARCHAR(200) NULL, 
    StreetAddress NVARCHAR(200) NULL, 
    StreetAddress_Status NVARCHAR(100) NULL, 
    StreetAddress_Confidence NVARCHAR(100) NULL, 
    StreetAddress_Reason NVARCHAR(4000) NULL, 
    Updated INT NULL, 
    CleanCustomerKey INT NULL, 
    Record_Status NVARCHAR(100) NULL );

根据建议,我对配置进行了一些更改。我在Flat File Destination目标适配器的末尾添加了CustomerDirtyNoMatch适配器。虽然错误数据插入到平面文件中,但仍未将数据插入表中。

请参阅此flat file

更新了数据流

enter image description here

0 个答案:

没有答案