我有一个使用SQL Server源和SQL Server目标的数据流转换(两个单独的服务器)。我需要使用Source中的表根据条件从目标SQL数据库中删除行。我不想使用链接服务器,因为它将成为部署SSIS项目的依赖项,也是访问权限问题。
如果是SSMS,我相信我必须使用链接服务器,是否可以避免链接服务器与SSIS?
smaple TSQL
从dbProd.dbo.Table2 T2删除T2
JOIN LINKED_SERVER.dbStage.dbo.Table1 T1 ON T1.RowID = T2.RowID
对于任何有用的答案,我将不胜感激。
答案 0 :(得分:2)
您可以使用SSIS数据流任务将insert
需要删除的数据(仅限唯一行标识符或条件)添加到本地表中,然后根据传输的数据执行delete
。
DELETE T2 FROM dbProd.dbo.Table2 T2
JOIN dbProd.dbo.local_copy_of_dbStage_Table1 T1 ON T1.RowID = T2.RowID
答案 1 :(得分:1)
@AndreyMorozov提出的解决方案将起作用,如果您需要避免在目标服务器上创建临时表,另一种方法是使用ExecuteSQL转换作为您的DataFlow目标,并在目标服务器上执行DELETE语句DataFlow中的每一行(来自源服务器)。
只要SSIS服务器可以通过OLEDB连接字符串连接到两台服务器,就不需要将链接服务器与SSIS一起使用。