将我的查询需要,如果我取消其执行,以“回滚”及其变化

问题描述 投票:0回答:1

我没有关于SQL管理器(SSMS)成交一般想法。我们有我们没想到,只要运行它做了一个查询,我们想知道,如果它会需要回滚的变化,如果我们取消它。这两个表,其中DBO.JEST有700M行和SAP.JEST具有200M之间的合并声明。我们的查询已经运行了5小时,如果我们取消它,没有它不必回滚,因为这将需要时间长赫克将是最好的。将查询回滚?我们可以从回滚如果它停止呢?

查询:

MERGE [sap].JEST AS target
USING (SELECT * from dbo.JEST) AS source 
ON (
target.[MANDT]=source.[MANDT] AND
target.[OBJNR]=source.[OBJNR] AND
target.[STAT]=source.[STAT]
    )
WHEN MATCHED THEN 
    UPDATE SET 
        [MANDT]=source.[MANDT],
        [OBJNR]=source.[OBJNR],
        [STAT]=source.[STAT],
        [INACT]=source.[INACT],
        [CHGNR]=source.[CHGNR]
WHEN NOT MATCHED THEN
    INSERT ( 
        [MANDT],
        [OBJNR],
        [STAT],
        [INACT],
        [CHGNR]
         ) VALUES (
         source.[MANDT],
        source.[OBJNR],
        source.[STAT],
        source.[INACT],
        source.[CHGNR]
 );
sql transactions sql-server-2014 rollback
1个回答
1
投票

MERGE运行具有隐性事务一条语句,所以你并不需要提及的交易明确地执行所需的操作。

将我的查询需要,如果我取消其执行,以“回滚”及其变化

不,你不需要调用ROLLBACK,在任何故障的所有更改会自动回滚的情况。

编辑:如果你想,当你终止查询,应该不会回滚。对于这种情况,我可以建议打破你的逻辑分批运行,这样当你终止查询只有当前批次将得到回滚。

© www.soinside.com 2019 - 2024. All rights reserved.