SSIS中的fast。因此,通常,我喜欢将数据流传输到一个表,然后使用SQL语句执行set操作
在您的情况下,不太清楚SSI是否正在做大量它擅长的工作(数据透视、排序、聚合、查找、异构数据、脚本、验证)(您在SSI外部联合,然后在SSI中拆分并为生成的行调用各个SP),所以我只是把它扔出去。这个特殊的进程不接受任何参数。非常有信息性的链接。这很有趣。我会尝试一下,看看会发生什么。不管是哪种顺序(asc/desc),都可以按顺序抛出订单。添加订单会增加执行计划的时间,最后一次选择可能是在插入开始之前完成的。我将研究此特定连接(停用)的含义,以及它在同时插入时可能挂起的原因。不幸的是,未检测到锁,使用表提示拒绝锁定/强制锁定无效。我将尝试此设置。如果我必须重写程序和包,我可能会走这条路,谢谢。SSIS中的fast。因此,通常,我喜欢将数据流传输到一个表,然后使用SQL语句执行set操作,sql,sql-server,ssis,Sql,Sql Server,Ssis,在您的情况下,不太清楚SSI是否正在做大量它擅长的工作(数据透视、排序、聚合、查找、异构数据、脚本、验证)(您在SSI外部联合,然后在SSI中拆分并为生成的行调用各个SP),所以我只是把它扔出去。这个特殊的进程不接受任何参数。非常有信息性的链接。这很有趣。我会尝试一下,看看会发生什么。不管是哪种顺序(asc/desc),都可以按顺序抛出订单。添加订单会增加执行计划的时间,最后一次选择可能是在插入开始之前完成的。我将研究此特定连接(停用)的含义,以及它在同时插入时可能挂起的原因。不幸的是,未检测到
SET NOCOUNT ON;
-- entries in A that dont exist in B need to be inserted into B
SELECT
A.ID,
B.ID,
A.data1,
A.data2,
A.data3,
A.data4,
F1.ID as Fkey1,
F2.ID as Fkey2,
'I' as InsertUpdateDeactivateFlag
FROM A
LEFT JOIN B ON A.val = B.val
LEFT JOIN F1 ON A.f1val = F1.val
LEFT JOIN F2 ON A.f2val = F2.val
WHERE B.ID is null
UNION ALL
-- entries in A that do exist in B that have different field values
SELECT
A.ID,
B.ID,
A.data1,
A.data2,
A.data3,
A.data4,
F1.ID as Fkey1,
F2.ID as Fkey2,
'U' as InsertUpdateDeactivateFlag
FROM A
INNER JOIN B ON A.val = B.val
LEFT JOIN F1 ON A.f1val = F1.val
LEFT JOIN F2 ON A.f2val = F2.val
WHERE
A.data1 <> B.data1 OR
A.data2 <> B.data2 OR
A.data3 <> B.data3 OR
A.data4 <> B.data4 OR
F1.ID <> B.Fkey1 OR
F2.ID <> B.Fkey2
UNION ALL
-- entries in B that dont exist in A should have Active set to 0
SELECT
A.ID,
B.ID,
B.data1,
B.data2,
null as data3, -- dont need this value for deactivates
null as data4, -- dont need this value for deactivates
B.Fkey1,
B.Fkey2,
'D' as InsertUpdateDeactivateFlag
FROM A
RIGHT JOIN B ON A.val = B.val
WHERE A.ID is null
-- entries in B that dont exist in A should have Active set to 0
SELECT
A.ID,
B.ID,
B.data1,
B.data2,
null as data3, -- dont need this value for deactivates
null as data4, -- dont need this value for deactivates
B.Fkey1,
B.Fkey2,
'D' as InsertUpdateDeactivateFlag
FROM B
WHERE NOT EXISTS (SELECT 1 FROM A WHERE val = B.val)
INSERT INTO B
SELECT *
FROM udf_INSERTS()
UPDATE B
SET whatever
FROM B
INNER JOIN udf_UPDATES() AS u
ON u.key = B.key
DELETE
FROM B
WHERE B.key IN (SELECT key FROM udf_DELETES())