2014-01-22 28 views
4

我是SSIS包装的新手。我想将数据从源数据传输到具有不同表结构的目标数据库。我的数据流量是从OLE DB源OLE DB目标enter image description here如何解决SSIS包中的OLE DB目标中的非空限制?

我有一个名为OLE DB源病人来源和OLE DB源代码编辑器,该连接与源数据库,并在取得数据访问模式我已经选择SQL命令和SQL命令文本如下

select ppFName, ppLName, ppPersonalNbr, ppEmailOne from pat_Patients和以及我已经预览的数据,它表明75行

我想从这个数据库中这四个字段如上转移到名为我的源数据库表和表结构。 enter image description here

连接在OLE DB目标编辑制作,

enter image description here和如下的映射,

enter image description here

当我运行该项目,我的数据流程如下,

enter image description here 我得到了三个错误,其中第一个错误状态为

[OLE DB Destination [2]] Error: 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 'TenantId', table 'test_9.dbo.Person'; column does not allow nulls. INSERT fails.".

我知道TenantId和PERSONID都是NOT NULL和 '外键' & '主键身份'。

但我想进入TenantId为 '' 和PERSONID的身份,即自动递增的所有75行病人来源。以及我想输入Added'''和AddedDateTime添加到系统当前日期时间。

我不知道如何达到上述要求,请大家帮帮我。

在此先感谢。

回答

4

您可以使用derived transformation分配1时TenantId为null

ISNULL([TenantId]) ? 1 : [TenantId] 

与之相似的AddedBy列中添加表达1AddedDateTimeGETDATE()

+0

将ü请告诉我哪里有使用**衍生转换**或**派生列**因为我是新的SSIS? – prakash2089

+0

紧随'源'添加'派生转换'。在派生列选项卡的编辑器内部选择替换AddedBy并在表达式中写为1。同样,对于其他2列 – praveen

+0

我在数据流中的* Patient Source *之后添加了* Derived Column *。在派生编辑器中,它仅显示* Derived Column选项卡*中的替换*字的源列。我没有找到目标列,例如*替换'TenantId'*或*替换该选项卡中的'AddedBy'*。 – prakash2089

相关问题