0

SQL Server 2008 で、テーブルを作成してから MERGE コマンドを実行する 2 ステップのジョブを作成しました。

手順は次のとおりです。

  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 マージ:

    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 ジョブの問題の原因がわかりません。

誰かが私を助けることができますか?この投稿を終了しても、ジョブはまだ実行中です。

どんな助けでも大歓迎です!!

4

1 に答える 1

1

begin tranwith noがあることに気が付かずにはいられませんcommit。or を追加するcommitか、バッチ内にステートメントが 1 つしかないため、明示的なトランザクションを完全に放棄します。

于 2014-02-24T11:27:02.457 に答える