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提供了強大而完備的鎖機制來幫助實現(xiàn)數(shù)據(jù)庫系統(tǒng)的并發(fā)性和高性能。用戶既能使用SQL Server的缺省設(shè)置也可以在select 語句中使用“加鎖選項”來實現(xiàn)預期的效果。 本文介紹了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é)束。使用此選項能夠保證多個進程能同時讀取數(shù)據(jù)但只有該進程能修改數(shù)據(jù)。
TABLOCK(表鎖)
此選項被選中時,SQL Server 將在整個表上置共享鎖直至該命令結(jié)束。 這個選項保證其他進程只能讀取而不能修改數(shù)據(jù)。
PAGLOCK(頁鎖)
此選項為默認選項, 當被選中時,SQL Server 使用共享頁鎖。
TABLOCKX(排它表鎖)
此選項被選中時,SQL Server 將在整個表上置排它鎖直至該命令或事務(wù)結(jié)束。這將防止其他進程讀取或修改表中的數(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 強制使用行鎖
TABLOCKX 強制使用獨占表級鎖,這個鎖在事務(wù)期間阻止任何其他事務(wù)使用這個表
UPLOCK 強制在讀表時使用更新而不用共享鎖
注意: 鎖定數(shù)據(jù)庫的一個表的區(qū)別
SELECT * FROM table WITH (HOLDLOCK) 其他事務(wù)可以讀取表,但不能更新刪除
SELECT * FROM table WITH (TABLOCKX) 其他事務(wù)不能讀取表,更新和刪除
相關(guān)文章
SQL Server 2008打開輸入sa密碼提示無法登陸數(shù)據(jù)庫的解決方法
與 SQL Server建立連接時出現(xiàn)與網(wǎng)絡(luò)相關(guān)的或特定于實例的錯誤,這篇文章主要介紹了SQL Server 2008打開輸入sa密碼提示無法登陸數(shù)據(jù)庫的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
使用SQL Server 2008遠程鏈接時SQL數(shù)據(jù)庫不成功的解決方法
這篇文章主要介紹了使用SQL Server 2008遠程鏈接時SQL數(shù)據(jù)庫不成功問題的解決方法,需要的朋友可以參考下2013-08-08
SQL Server 2008網(wǎng)絡(luò)協(xié)議深入理解
可以通過展開SQL Server 2008網(wǎng)絡(luò)配置節(jié)點進行服務(wù)器協(xié)議的配置,需要了解更多的朋友可以參考本文2012-11-11
SQL Server復制需要有實際的服務(wù)器名稱才能連接到服務(wù)器
服務(wù)器上安裝的WIN2008 R2,然后沒有在意機器名,安裝了SQL2008 R2數(shù)據(jù)庫之后,配置AD域的時候修改了機器名2013-11-11
SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
sql 在使用中每次查詢都會生成日志,但是如果你長久不去清理,可能整個硬都堆滿哦,筆者就遇到這樣的情況,直接網(wǎng)站后臺都進不去了。下面我們一起來學習一下如何清理這個日志吧2013-05-05
詳解SQL Server 2008工具SQL Server Profiler
這篇文章主要介紹了詳解SQL Server 2008工具SQL Server Profiler,本文逐一講解了SQL Server Profiler提供的功能,需要的朋友可以參考下2015-05-05
SQL2008定時任務(wù)作業(yè)創(chuàng)建教程
本文將詳細介紹SQL2008定時任務(wù)作業(yè)創(chuàng)建步驟,需要的朋友可以參考下2012-11-11
SQLserver 2008將數(shù)據(jù)導出到Sql腳本文件的方法
大家都知道使用SQL的企業(yè)管理器可以導出SQL腳本,但導不出SQL的數(shù)據(jù)到腳本中,目前SQL2008有這個功能了。2010-04-04

