【发布时间】:2014-02-24 07:47:12
【问题描述】:
我在 SQL Server 2008 上创建了一个两步作业,该作业创建一个表,然后执行一个 MERGE 命令。
步骤如下:
-
创建表:
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 -
SQL 合并:
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
这样做的问题是 SQL 作业需要永远执行。它以某种方式进入了一个无法逃脱的循环。 然而,Merge 命令如果作为普通查询执行,则可以完美运行。我不知道是什么导致了这个 SQL Job 问题。
有人可以帮助我吗?当我完成这篇文章时,这项工作仍在执行。
任何帮助将不胜感激!
【问题讨论】:
标签: sql sql-server merge database-deadlocks sql-job