Sql server SSIS-无法在对象';dbo.FACT_表';

Sql server SSIS-无法在对象';dbo.FACT_表';,sql-server,ssis,lookup,data-warehouse,fact,Sql Server,Ssis,Lookup,Data Warehouse,Fact,我知道事实表中不能有重复的记录,但我是SQL Integration Services的新手,我正在寻找一个包,它可以识别事实表中是否已经存在代理键 在这一刻,我得到了这个包裹: 每个查找对象获取数据仓库中每个维度的业务密钥 第一次它运行得很好,因为事实上我没有记录,但接下来我做了测试,再次运行相同的数据(因为将来我想每10分钟运行一次这个包,这样它每次都会得到相同的数据),我得到以下错误(我非常了解这一点,我希望建立一种自动处理此问题的方法): [加载到dbo_DimCI[144]]错误:S

我知道事实表中不能有重复的记录,但我是SQL Integration Services的新手,我正在寻找一个包,它可以识别事实表中是否已经存在代理键

在这一刻,我得到了这个包裹:

每个查找对象获取数据仓库中每个维度的业务密钥

第一次它运行得很好,因为事实上我没有记录,但接下来我做了测试,再次运行相同的数据(因为将来我想每10分钟运行一次这个包,这样它每次都会得到相同的数据),我得到以下错误(我非常了解这一点,我希望建立一种自动处理此问题的方法):

[加载到dbo_DimCI[144]]错误:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。来源:“Microsoft SQL Server本机客户端11.0”Hresult:0x80004005说明:“语句已终止。”。 OLE DB记录可用。来源:“Microsoft SQL Server本机客户端11.0”Hresult:0x80004005说明:“违反主键约束‘PK_事实_事实_表’。无法在对象‘dbo.FACT_表’中插入重复的键。重复的键值为(337、44、3、19、4682、12)。”


为了处理此错误,我需要在包中插入哪些对象?

我相信您的目的是在每次加载中只加载增量

这意味着如果事实表中已经存在记录,则不应再次插入该记录

您可以通过使用合并查询来实现这一点

我没有一个加载事实表的示例,但我可以向您指出一个关于加载Type2DIM表的帖子示例

检查此链接:

您应该能够在SSIS包中使用这样的语句来更新事实表

很高兴回答任何进一步的问题

干杯
Nithin

我相信您的目的是在每次加载中只加载增量

这意味着如果事实表中已经存在记录,则不应再次插入该记录

您可以通过使用合并查询来实现这一点

我没有一个加载事实表的示例,但我可以向您指出一个关于加载Type2DIM表的帖子示例

检查此链接:

您应该能够在SSIS包中使用这样的语句来更新事实表

很高兴回答任何进一步的问题

干杯
Nithin

您可以通过多种方式实现这一点,例如,一种方式是添加另一个查找,但这次是针对构成事实表主键的键上的事实表记录进行查找。另一种方式是将源记录向下筛选为新行,而不是现有行。或者,如果这只是一个示例/student在project中,您可以使用delete语句删除事实表中的所有内容。您可以多次运行该语句。@Rich谢谢!不,这是一个专业案例;)您建议的查找是在上次查找之后,并放置不匹配的记录?你有什么例子吗?是的,没错。我还没有一个例子,没有。@Rich有这样的查找需要花费很多时间。。。你认为这是个好方法吗?不,这只是一种方法。另一种方法是只在源中引入新行,或者找到一种只选择自上次以来的行的方法,或者如果源位于同一台服务器上,则在源中加入事实表。或者删除所有事实并再次加载。您可以通过多种方式实现这一点,例如,一种方式是添加另一个查找,但这次是针对构成事实表主键的键上的事实表记录进行查找。另一种方法是将源记录向下筛选为新行,而不是现有行。或者,如果这只是一个示例/学生项目,您可以在delete语句中删除事实表中的所有内容,您可以多次运行该语句。@Rich谢谢!不,这是一个专业案例;)您建议的查找在最后一次查找之后,是否放置了不匹配的记录?你有什么例子吗?是的,没错。我还没有一个例子,没有。@Rich有这样的查找需要花费很多时间。。。你认为这是个好方法吗?不,这只是一种方法。另一种方法是只在源中引入新行,或者找到一种只选择自上次以来的行的方法,或者如果源位于同一台服务器上,则在源中加入事实表。或者删除所有事实并再次加载。