sqlserver2008鎖表語句詳解(鎖定數(shù)據(jù)庫一個表)
鎖定數(shù)據(jù)庫的一個表
SELECT * FROM table WITH (HOLDLOCK)
注意: 鎖定數(shù)據(jù)庫的一個表的區(qū)別
SELECT * FROM table WITH (HOLDLOCK)
其他事務(wù)可以讀取表,但不能更新刪除
SELECT * FROM table WITH (TABLOCKX)
其他事務(wù)不能讀取表,更新和刪除
SELECT 語句中“加鎖選項”的功能說明
SQL Server提供了強(qiáng)大而完備的鎖機(jī)制來幫助實現(xiàn)數(shù)據(jù)庫系統(tǒng)的并發(fā)性和高性能。用戶既能使用SQL Server的缺省設(shè)置也可以在select 語句中使用“加鎖選項”來實現(xiàn)預(yù)期的效果。 本文介紹了SELECT語句中的各項“加鎖選項”以及相應(yīng)的功能說明。
功能說明:
NOLOCK(不加鎖)
此選項被選中時,SQL Server 在讀取或修改數(shù)據(jù)時不加任何鎖。 在這種情況下,用戶有可能讀取到未完成事務(wù)(Uncommited Transaction)或回滾(Roll Back)中的數(shù)據(jù), 即所謂的“臟數(shù)據(jù)”。
HOLDLOCK(保持鎖)
此選項被選中時,SQL Server 會將此共享鎖保持至整個事務(wù)結(jié)束,而不會在途中釋放。
UPDLOCK(修改鎖)
此選項被選中時,SQL Server 在讀取數(shù)據(jù)時使用修改鎖來代替共享鎖,并將此鎖保持至整個事務(wù)或命令結(jié)束。使用此選項能夠保證多個進(jìn)程能同時讀取數(shù)據(jù)但只有該進(jìn)程能修改數(shù)據(jù)。
TABLOCK(表鎖)
此選項被選中時,SQL Server 將在整個表上置共享鎖直至該命令結(jié)束。 這個選項保證其他進(jìn)程只能讀取而不能修改數(shù)據(jù)。
PAGLOCK(頁鎖)
此選項為默認(rèn)選項, 當(dāng)被選中時,SQL Server 使用共享頁鎖。
TABLOCKX(排它表鎖)
此選項被選中時,SQL Server 將在整個表上置排它鎖直至該命令或事務(wù)結(jié)束。這將防止其他進(jìn)程讀取或修改表中的數(shù)據(jù)。
HOLDLOCK 持有共享鎖,直到整個事務(wù)完成,應(yīng)該在被鎖對象不需要時立即釋放,等于SERIALIZABLE事務(wù)隔離級別
NOLOCK 語句執(zhí)行時不發(fā)出共享鎖,允許臟讀 ,等于 READ UNCOMMITTED事務(wù)隔離級別
PAGLOCK 在使用一個表鎖的地方用多個頁鎖
READPAST 讓sql server跳過任何鎖定行,執(zhí)行事務(wù),適用于READ UNCOMMITTED事務(wù)隔離級別只跳過RID鎖,不跳過頁,區(qū)域和表鎖
ROWLOCK 強(qiáng)制使用行鎖
TABLOCKX 強(qiáng)制使用獨(dú)占表級鎖,這個鎖在事務(wù)期間阻止任何其他事務(wù)使用這個表
UPLOCK 強(qiáng)制在讀表時使用更新而不用共享鎖
注意: 鎖定數(shù)據(jù)庫的一個表的區(qū)別
SELECT * FROM table WITH (HOLDLOCK) 其他事務(wù)可以讀取表,但不能更新刪除
SELECT * FROM table WITH (TABLOCKX) 其他事務(wù)不能讀取表,更新和刪除
相關(guān)文章
使用Sqlserver事務(wù)發(fā)布實現(xiàn)數(shù)據(jù)同步(sql2008)
事務(wù)的功能在sqlserver中由來已久,因為最近在做一個數(shù)據(jù)同步方案,所以有機(jī)會再次研究一下它以及快照等,發(fā)現(xiàn)還是有很多不錯的功能和改進(jìn)的。這里以sqlserver2008的事務(wù)發(fā)布功能為例,對發(fā)布訂閱的方式簡要介紹一下操作流程,一方面做個總結(jié)備份,一方面與大家進(jìn)行一下分享和交流2013-03-03win2008 r2安裝SQL SERVER 2008 R2 不能打開1433端口設(shè)置方法
這篇文章主要介紹了win2008 r2安裝SQL SERVER 2008 R2 不能打開1433端口設(shè)置方法,需要的朋友可以參考下2017-01-01SQL SERVER 2008 R2配置管理器出現(xiàn)“遠(yuǎn)程過程調(diào)用失敗”(0x800706be)錯誤提示
本文主要記錄了SQL SERVER 2008 R2配置管理器出現(xiàn)“遠(yuǎn)程過程調(diào)用失敗”(0x800706be)錯誤提示的解決方法,圖文并茂,非常的實用,有需要的朋友可以參考下2014-10-10sql server 2008 用戶 NT AUTHORITY\IUSR 登錄失敗的解決方法
今天在配置asp+sql server 2008的時候,發(fā)現(xiàn)總是無法登錄數(shù)據(jù)庫,提示sql server 2008 用戶 NT AUTHORITY\IUSR 登錄失敗,原來是因為用戶問題,這里簡單分享下2015-08-08Microsoft SQL Server 2008 基本安裝說明
這篇文章主要介紹了Microsoft SQL Server 2008 基本安裝說明 ,需要的朋友可以參考下2015-08-08將DataTable作為存儲過程參數(shù)的用法實例詳解
需要向存儲過程中傳遞字符串,今天看了下SQL Server 2008的新特性,發(fā)現(xiàn)有表變量的使用,及其將DataTable作為參數(shù)的用法,下面與大家分享下2013-05-05SQL Server 2008中SQL查詢語句字段值不區(qū)分大小寫的問題解決
這篇文章主要介紹了關(guān)于SQL Server 2008中SQL查詢語句字段值不區(qū)分大小寫問題的解決方法,文中將解決方法介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-07-07關(guān)于SQL Server 2008 安裝提示"重新啟動計算機(jī)失敗"的解決辦法
本篇文章是對關(guān)于SQL Server 2008 安裝提示"重新啟動計算機(jī)失敗"的解決辦法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06