5 .分布式客戶端/服務(wù)器死鎖。 與常規(guī)死鎖不同,分布式死鎖無法由 microsoft sql server? 2000 自動檢測到。如果應(yīng)用程序打開多個與 sql server 的連接并異步提交查詢,則可能會發(fā)生分布式客戶端/服務(wù)器死鎖。
例如,一個客戶端應(yīng)用程序線程有兩個開放式連接。該線程異步啟動事務(wù)并在第一個連接上發(fā)出查詢。應(yīng)用程序隨后啟動其它事務(wù),在另一個連接上發(fā)出查詢并等待結(jié)果。當(dāng) sql server 返回其中一個連接的結(jié)果時,應(yīng)用程序開始處理這些結(jié)果。應(yīng)用程序就這樣處理結(jié)果,直到生成結(jié)果的查詢被另一個連接上執(zhí)行的查詢阻塞而導(dǎo)致再沒有可用的結(jié)果為止。此時第一個連接阻塞,無限期等待處理更多的結(jié)果。第二個連接沒有在鎖上阻塞,但仍試圖將結(jié)果返回給應(yīng)用程序。然而,由于應(yīng)用程序阻塞而在第一個連接上等待結(jié)果,第二個連接的結(jié)果將得不到處理。
避免阻塞方法 =============== 1 .對每個查詢使用查詢超時。
2 .對每個查詢使用鎖定超時。有關(guān)更多信息,請參見自定義鎖超時。
3 .使用綁定連接。有關(guān)更多信息,請參見使用綁定連接。
4 .sql server 本質(zhì)上是受客戶端應(yīng)用程序操縱的傀儡。客戶端應(yīng)用程序?qū)Ψ?wù)器上獲取的鎖幾乎有完全的控制(并對鎖負(fù)責(zé))。雖然 sql server
以下是一些相關(guān)的技術(shù)文檔。 understanding and resolving sql server 7.0 or 2000 blocking problems <http://support.microsoft.com/default.aspx?scid=kb;en-us;224453>
how to: troubleshoot application performance with sql server <http://support.microsoft.com/default.aspx?scid=kb;en-us;224587>