天天看點

SQL SERVER的事務未送出與死鎖問題。

前2天導入資料的時候,為了保險期間,在導入資料的時候使用Begin Transaction開啟了事務,然後後面居然忘記了commit,結果在開發的過程中界面總是提示連接配接逾時,當時還以為是SQ寫的不好導緻的性能問題(因為有個SQL腳本使用了in)以及以為是網絡問題,知道今天在重新開機了SQ SERVER的服務之後,發現表中的資料少了,才知道是因為事務未送出,重新開機SQL SERVER服務之後,事務自動復原導緻資料丢失。在網上查了下,使用下面的SQL腳本可以發現資料庫是否有死鎖或事務未送出:

USE master

select spId

  from master..SysProcesses

 where db_Name(dbID) = 'FSDZQD'

   and spId <> @@SpId

   and dbID <> 0

上面語句是擷取程序ID,下面就是根據ID殺死相應程序exec ('Kill '+spId(程序ID))或者直接重新開機下SQL SERVER的服務即可。自己給自己挖了個坑,結果半天才爬出來,靠!