我正在使用PowerShell事務;它使用Serializable的IsolationLevel創建一個CommittableTransaction。問題是,當我在此上下文中執行事務時,除了執行事務的連接之外的任何連接,所有SELECT都被阻塞在受事務影響的表上。我可以在交易中執行獲取,但不能在其他任何地方執行。這包括SSMS和其他cmdlet執行。這是預期的行爲?好像我失去了一些東西......將IsolationLevel設置爲Serializable的TransactionScope鎖定了所有SQL SELECT
PS腳本:
Start-Transaction
Add-Something -UseTransaction
Get-Something #hangs here until timeout
Add-Something -UseTransaction
Undo-Transaction
設置READ_COMMITTED_SNAPSHOT似乎解決了這個問題。我不確定這是否是一個有效的解決方案...... – 2010-09-02 16:07:02
這意味着你正在PS腳本中進行更新。這些更新會鎖定數據,但是現在,當SSMS和其他查詢請求讀取已提交(即=默認情況下)時,它們將在快照下運行,以便他們可以看到舊版本的數據(來自PS更新之前的圖像)。 – 2010-09-02 16:09:28
好的。所以如果有可能改變IsolationLevel來說,ReadCommited,這會改變行爲嗎? – 2010-09-02 16:14:17