SQLServer2005的查詢獨佔模擬

2021-08-24 19:24:48 字數 1708 閱讀 5502

而update的過程會自動加鎖,這個給我們帶來和極大便利,但該方法一直不被人們認可的原因是效率:比如打標記怎麼打,是否需要每個終端給資料印上各自不同的標誌才能避免衝突;是否需要巢狀查詢等等..

為了充分提高併發效率,我們可以使用rowlock和readpast來降低鎖爭,使用top子句來直接更新當前任務執行者需要的資料,使用output子句直接輸出結果來代替巢狀查詢。必要的情況下可以在表中加適當的索引。

我們來看一下具體**

setnocount

onuse

tempdb

goif (

object_id (

'tb' )

isnot

null )

drop

table

tbgo

create

table

tb (

idint

identity ( 1,

1),name

varchar (

10),

tagint

default

0 )

insert

into

tb (

name )

select

'a'insert

into

tb (

name )

select

'b'insert

into

tb (

name )

select

'c'insert

into

tb (

name )

select

'd'insert

into

tb (

name )

select

'e'go

update

top (

2 )

tbwith (

rowlock

,readpast )

settag=

1output

inserted.id

,inserted

.name

where

tag=0go

update

top (

2 )

tbwith (

rowlock

,readpast )

settag=

1output

inserted.id

,inserted

.name

where

tag=0go

update

top (

2 )

tbwith (

rowlock

,readpast )

settag=

1output

inserted.id

,inserted

.name

where

tag=0go

setnocount

off/*

id name

----------- ----------

1 a2 b

id name

----------- ----------

3 c4 d

id name

----------- ----------

5 e*/

SQL Server2005複製實現

一 準備工作 1 在發布伺服器上建立乙個共享目錄,作為發布快照檔案的存放目錄。例如 在d 盤根目錄下建資料夾名為pub 2 設定sql 發布伺服器和訂閱伺服器均設定 步驟 開啟服務 控制面板 管理工具 服務 右擊sqlserver agent 屬性 登入 選擇 此帳戶 輸入或選擇第一步中建立的win...

SQL Server 2005完全解除安裝

sql server 2005的解除安裝是乙個非常頭疼的問題。我曾經嘗試過直接使用 新增或刪除程式 工具解除安裝 清除安裝目錄 刪除登錄檔內容等等各種方式綜合解除安裝,勉強成功。現在終於找到了乙個事半功倍的方法,多次嘗試,未有失敗,具體如下 第一種是微軟官方提供的工具 msicuu2.exe 微軟官...

SQLSERVER 2005 遞迴查詢

專案中有使用者組表usergroup如下 其中pid表示當前組的上級組 表資料如下 現在想查詢出頂級組 沒有上級組叫頂級組 a1組的所有子孫組id,sql如下 查詢子節點 with rtd1 as select id pid from usergroup rtd2 as select from rt...