熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

當我正在為表建立索引的時候,SQL Server 會禁止對表的訪問嗎?

2022-06-13   來源: SQL Server 

在您建立索引時SQL Server 不會禁止您對表進行讀訪問除非您正在建立一個簇索引然而如果某人此時試圖更新表中的數據SQL Server 會禁止更新操作 &#; 不管您正在創建什麼樣的索引類型 &#; 因為您不能取得表級別的獨占鎖(IX lock)獨占鎖會和Create INDEX 語句持有的共享鎖發生沖突

當SQL Server 完成了建立索引的操作後它必須修改系統表來反映數據表的變化兩個最主要被修改的系統表是sysindexes 和 sysobjects 表因為您沒有使用normalSQL來建立索引所以您不能對SQL Server的操作進行跟蹤

在最後一個階段 獨占鎖(IX lock)並不出現在數據表中而是出現在系統表正在建立索引的相應數據表項上 一般來說最後這個階段比較短因為SQL Server已經對數據進行了排序並抽取了行指針(物理行定位符或簇索引鍵)唯一剩下的任務就是修改系統表這個過程很快如果系統表上的獨占鎖還在您不能執行任何查詢操作因為您不能從sysindexes 和 sysobjects系統表中讀取出所需要的信息


From:http://tw.wingwit.com/Article/program/SQLServer/201405/30732.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.