在sqlserver中查詢是需要加共享鎖的,而Update需要獲取排它鎖,并發(fā)系統(tǒng)中在同一行記錄會產(chǎn)生鎖沖突,要解決這個問題可以開啟sqlserver的行版本管理
使用行版本控制的隔離級別具有以下優(yōu)點(diǎn):
• 讀取操作檢索一致的數(shù)據(jù)庫快照。
• SELECT 語句在讀取操作過程中不鎖定數(shù)據(jù)(讀取器不阻塞編寫器,編寫器也不阻塞讀取器)。
• SELECT 語句可以在其他事務(wù)更新行時訪問最后提交的行值,而不阻塞應(yīng)用程序。
• 死鎖的數(shù)量減少。
• 事務(wù)所需的鎖的數(shù)量減少,這減少了管理鎖所需的系統(tǒng)開銷。
• 鎖升級的次數(shù)減少。
1. 進(jìn)入配置管理器;
win10 沒有菜單=> win+r =>
2005: SQLServerManager.msc
2008: SQLServerManager10.msc
2012: SQLServerManager11.msc
2014: SQLServerManager12.msc
2. 按下圖, 關(guān)閉所有sqlserver服務(wù), 并在啟動參數(shù)前面加 -m;
3. 進(jìn)入 SSMS , 注意: 不要有任何連接;
4. 輸入如下腳本, 修改行版本控制級別:
ALTER DATABASE test SET ALLOW_SNAPSHOT_ISOLATION ON --替換庫名
ALTER DATABASE test SET READ_COMMITTED_SNAPSHOT ON --替換庫名
ALTER DATABASE test SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE test SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE test SET READ_COMMITTED_SNAPSHOT ON
ALTER DATABASE test SET MULTI_USER
--查看是否已修改過來
SELECT [name],snapshot_isolation_state,snapshot_isolation_state_desc,is_read_committed_snapshot_on
FROM master.sys.databases
5. 執(zhí)行完畢, 停止服務(wù), 去除 -m; 確定并重新啟動服務(wù);
6. 如果操作成功, 此時就可以開多個查詢和連接了。
版權(quán)所有:重慶阿可云網(wǎng)絡(luò)有限公司 電話:400-766-9009 渝ICP備16010897號-1
云版軟件?中小企業(yè)協(xié)同管控綜合解決方案供應(yīng)商;包含ERP管理系統(tǒng)、CRM客戶關(guān)系管理、HR人力資源管理、OA辦公系統(tǒng)、生產(chǎn)管理、進(jìn)銷存管理和財務(wù)管理等。
ERP企業(yè)管理系統(tǒng)| OA辦公系統(tǒng)