SQL Job停止执行SQL Merge?

时间:2014-02-24 07:47:12

标签: sql sql-server merge database-deadlocks sql-job

我在SQL Server 2008上创建了一个2步的作业,它创建了一个表然后执行MERGE命令。

以下是步骤:

  1. 创建表格:

    CREATE TABLE CSVTable (AccountID INTEGER, UserType NVARCHAR (50), 
                           Lname NVARCHAR (50), Fname NVARCHAR (50), Mname NVARCHAR (50), 
                           Address NVARCHAR (100), Gender NVARCHAR (10), Birthdate DATE,
                           ContactNo NVARCHAR (50), Email NVARCHAR (50), Password NVARCHAR(30), EPurseBalance FLOAT, AccountStatus NVARCHAR (50))
    GO
    
  2. SQL Merge:

    BEGIN TRAN;
    
    MERGE tblAccount AS T
    USING CSVTable AS S ON (T.AccountID = S.AccountID) 
    
    WHEN NOT MATCHED BY TARGET
       THEN INSERT(AccountID, UserType, Lname, Fname, Mname, Address, Gender, 
                   Birthdate, ContactNo, Email, Password, Balance, AccountStatus) 
            VALUES(S.AccountID, S.UserType, S.Lname, S.Fname, S.Mname, S.Address, S.Gender, 
                   S.Birthdate, S.ContactNo, S.Email, S.Password, S.Balance, S.AccountStatus)
    
    WHEN MATCHED 
       THEN UPDATE SET T.AccountStatus = S.AccountStatus;
    GO
    
  3. 这个问题是SQL作业需要永远执行。它进入了一个无法逃脱的循环。 ,如果作为普通查询执行,Merge命令可以正常运行。我不知道导致这个SQL Job问题的原因。

    有人能帮助我吗?当我完成这篇文章时,工作仍在执行。

    任何帮助将不胜感激!!

1 个答案:

答案 0 :(得分:1)

我无法帮助,但请注意您的begin tran没有commit。添加commit或者,因为批次中只有一个语句,所以完全放弃显式交易。