Sql server 调用远程存储过程以高效地返回表
我有一个SSIS导入过程,在该过程中,我需要通过链接服务器对目标CRM联系人表中的联系人记录进行重复数据消除 目前,我已经创建了一个本地标量函数来完成这项工作,但效率非常低。我通过链接服务器使用指向CRM表的同义词从导入文件和本地函数中传入相关条件(名字、姓氏、邮政编码、电子邮件等),执行一些复杂的逻辑以确定联系人是否匹配,如果匹配,则返回相关的Sql server 调用远程存储过程以高效地返回表,sql-server,stored-procedures,Sql Server,Stored Procedures,我有一个SSIS导入过程,在该过程中,我需要通过链接服务器对目标CRM联系人表中的联系人记录进行重复数据消除 目前,我已经创建了一个本地标量函数来完成这项工作,但效率非常低。我通过链接服务器使用指向CRM表的同义词从导入文件和本地函数中传入相关条件(名字、姓氏、邮政编码、电子邮件等),执行一些复杂的逻辑以确定联系人是否匹配,如果匹配,则返回相关的联系人ID。它在导入中每行执行此操作-可以是10条记录或10000条记录 我认为最好的方法是在CRM目标数据库上创建一个存储过程,并通过导入传入一个包含
联系人ID
。它在导入中每行执行此操作-可以是10条记录或10000条记录
我认为最好的方法是在CRM目标数据库上创建一个存储过程,并通过导入传入一个包含相关联系人值的表,在本地执行复杂逻辑并在本地返回结果
我还没有这样做,但我知道我可以将一个值表传递给存储过程,但由于我们不会有一个从CRM到本地的链接服务器,返回多个结果的最佳方式是什么?使用SQL Server 2012;如有必要,我可以使用SQL Server 2014
提前感谢。让SP位于CRM的本地应该可以大大减少延迟!我经常这样做的一种方法是用我想要处理的数据传递XML(作为VARCHAR)。从ETL服务器调用SP,并让SP在完成时返回一个状态变量。如果您需要传回数据,您可以再次使用XML,或者您可以在CRM服务器上有一个暂存位置,链接服务器知道从何处进行查询。您是否考虑过使用?这可以将匹配/不匹配的记录传送到不同的位置。我想我可能必须按照Matt的建议在target创建一个表。无法使用查找转换,因为我本身并没有进行查找,而是使用源文件中的值来确定是否基于复杂逻辑找到了记录匹配,ie如果lastname匹配&电子邮件匹配&标题匹配,然后找到,但如果标题匹配&电子邮件匹配但lastname不匹配,则尝试对firstname进行匹配,依此类推。让SP位于CRM本地,应该可以大大减少延迟!我经常这样做的一种方法是用我想要处理的数据传递XML(作为VARCHAR)。从ETL服务器调用SP,并让SP在完成时返回一个状态变量。如果您需要传回数据,您可以再次使用XML,或者您可以在CRM服务器上有一个暂存位置,链接服务器知道从何处进行查询。您是否考虑过使用?这可以将匹配/不匹配的记录传送到不同的位置。我想我可能必须按照Matt的建议在target创建一个表。无法使用查找转换,因为我本身并没有进行查找,而是使用源文件中的值来确定是否基于复杂逻辑找到了记录匹配,即如果lastname匹配&电子邮件匹配&然后找到了标题匹配,但如果标题匹配&电子邮件匹配但lastname不匹配,则尝试对firstname进行匹配,依此类推。