Sql-Server

SQL Server 執行緒安全嗎?

  • September 19, 2014

如果我需要使用兩個並發執行緒更新同一行,那麼在 SQL Server 中是否可以?

假設我有一個包含IdName列的表,現在我想使用一個執行緒更新名稱為“xyz”的第三個數字 ID。使用另一個執行緒,我想更新我正在使用第一個執行緒更新的相同名稱,但它會給出錯誤,就像您的連接處於連接狀態一樣。我無法更新數據。

有誰知道如何解決它?我需要分配鎖嗎?

Sql server 執行緒安全嗎?

此問題與該 SQL Server 是否執行緒安全無關。問題在於SQL Server 連接池

簡而言之: - 每當使用者在連接上呼叫 Open 時,池化程序都會在池中查找可用連接。如果池連接可用,則將其返回給呼叫者,而不是打開新連接。從上面的連結中閱讀更多內容。

嘗試使用 Connection 對象解決此問題

  • 根本不要重用連接或任何 ADO.NET 對象,也不要使它們成為靜態的。
  • 始終創建、打開(在連接的情況下)、使用、關閉並將它們放置在您需要的地方
  • 使用using 語句隱式地處理和關閉(連接)

現在更新同一行:例如,如果更新語句要獲取行/表鎖,則同時對同一行/表的任何其他更新過程都將被阻止。

延伸閱讀:

鎖定和行版本控制表提示

從數據庫的角度來看,這可以配置隔離級別。請注意,每個隔離都有一些可以解決但也會產生一定影響的場景。我認為維基百科的文章對於第一步來說非常清楚。請參閱:http://en.wikipedia.org/wiki/Isolation_(database_systems)

如果你不想/不能用你的數據庫解決它,你必須看看你的應用程序伺服器堆棧為你提供了哪些執行緒同步。

引用自:https://dba.stackexchange.com/questions/77060