新聞中心
此文章主要向大家描述的是SQL Server 2000 自定義鎖超時(shí),當(dāng)由于另一個(gè)事務(wù)已擁有一個(gè)資源的沖突鎖,會(huì)使 Microsoft? SQL Server? 2000 無(wú)法將鎖授權(quán)給該資源的某個(gè)事務(wù)時(shí),該事務(wù)被阻塞以等待該資源的操作完成。

成都創(chuàng)新互聯(lián)是專業(yè)的同德網(wǎng)站建設(shè)公司,同德接單;提供做網(wǎng)站、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行同德網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
如果這導(dǎo)致了死鎖,則SQL Server 將終止其中參與的一個(gè)事務(wù)(不涉及超時(shí))。如果沒(méi)有出現(xiàn)死鎖,則在其它事務(wù)釋放鎖之前,請(qǐng)求鎖的事務(wù)被阻塞。默認(rèn)情況下,沒(méi)有強(qiáng)制的超時(shí)期限,并 且除了試圖訪問(wèn)數(shù)據(jù)外(有可能被無(wú)限期阻塞),沒(méi)有其它方法可以測(cè)試某個(gè)資源是否在鎖定之前已被鎖定。
說(shuō)明 sp_who 系統(tǒng)存儲(chǔ)過(guò)程可用于確定進(jìn)程是否正被阻塞以及被誰(shuí)阻塞。LOCK_TIMEOUT 設(shè)置允許應(yīng)用程序設(shè)置語(yǔ)句等待阻塞資源的最長(zhǎng)時(shí)間。當(dāng)語(yǔ)句等待的時(shí)間大于LOCK_TIMEOUT 設(shè)置時(shí),系統(tǒng)將自動(dòng)取消阻塞的語(yǔ)句,并給應(yīng)用程序返回"已超過(guò)了鎖請(qǐng)求超時(shí)時(shí)段"的 1222 號(hào)錯(cuò)誤信息。
但是,SQL Server 不回滾或取消任何包含該語(yǔ)句的事務(wù)。因此,應(yīng)用程序必須有捕獲 1222 號(hào)錯(cuò)誤信息的錯(cuò)誤處 理程序。如果應(yīng)用程序沒(méi)有捕獲錯(cuò)誤,則會(huì)繼續(xù)運(yùn)行,并未意識(shí)到事務(wù)中的個(gè)別語(yǔ)句已取消,從而當(dāng)事務(wù)中的后續(xù)語(yǔ)句可能依賴于那條從未執(zhí)行的語(yǔ)句時(shí), 導(dǎo)致應(yīng)用程序出錯(cuò)。
執(zhí)行捕獲錯(cuò)誤信息 1222 的錯(cuò)誤處理程序使應(yīng)用程序得以處理發(fā)生超時(shí)的情況,并采取補(bǔ)救操作,例如可以自動(dòng)重新提交阻塞的語(yǔ)句或者回滾整個(gè)事務(wù)。
若要確定當(dāng)前 LOCK_TIMEOUT 設(shè)置,請(qǐng)執(zhí)行 @@LOCK_TIMEOUT 函數(shù),例如:
DECLARE @Timeout intSELECT @Timeout = @@lock_timeoutSELECT @TimeoutGO-----------------------------------------------------------------SET LOCK_TIMEOUT指定語(yǔ)句等待鎖釋放的毫秒數(shù)。語(yǔ)法SET LOCK_TIMEOUT timeout_period參數(shù)timeout_period是在 Microsoft? SQL Server? 返回鎖定錯(cuò)誤前經(jīng)過(guò)的毫秒數(shù)。值為 -1(默認(rèn)值)時(shí)表示沒(méi)有超時(shí)期限(即無(wú)限期等待)。當(dāng)鎖等待超過(guò)超時(shí)值時(shí),將返回錯(cuò)誤。
值為 0 時(shí)表示根本不等待,并且一遇到鎖就返回信息。注釋在連接開(kāi)始時(shí),該設(shè)置的值為 -1。設(shè)置更改后,新設(shè)置在其余的連接時(shí)間里一直有效。SET LOCK_TIMEOUT 的設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。
READPAST 鎖定提示為該 SET 選項(xiàng)提供了另一種方式。權(quán)限SET LOCK_TIMEOUT 權(quán)限默認(rèn)授予所有用戶。示例下例將SQL Server 2000 自定義鎖超時(shí)期限設(shè)置為 1,800 毫秒。SET LOCK_TIMEOUT 1800GO
上述的相關(guān)內(nèi)容就是對(duì)SQL Server 2000 自定義鎖超時(shí)的描述,希望會(huì)給你帶來(lái)一些幫助在此方面。
文章名稱:SQLServer2000自定義鎖超時(shí)的概述
文章位置:http://m.5511xx.com/article/cogsspp.html


咨詢
建站咨詢
