中繼資料存取、隔離等級與鎖定提示
SQL Server 不保證在透過目錄檢視、相容性檢視、資訊結構描述檢視,以及發出中繼資料之內建函數來存取中繼資料的查詢中,一定能夠接受鎖定提示。
就內部而言,SQL Server Database Engine 只接受中繼資料存取的 READ COMMITTED 隔離等級。 例如,如果某交易的隔離等級為 SERIALIZABLE,且交易中試圖以目錄檢視或發出中繼資料的內建函數來存取中繼資料,這些查詢會持續執行到其成為 READ COMMITTED 為止。 但在快照隔離下,對中繼資料的存取可能會因並行的 DDL 作業而失敗。 這是因為中繼資料並未建立版本。 因此,在快照隔離下存取下列項目可能會失敗:
目錄檢視
相容性檢視
資訊結構描述檢視
發出中繼資料的內建函數
預存程序的 sp_help 群組
SQL Server Native Client 目錄程序
動態管理檢視與函數
如需有關隔離等級的詳細資訊,請參閱<SET TRANSACTION ISOLATION LEVEL (Transact-SQL)>。
下表提供在各種隔離等級下存取中繼資料的摘要。
隔離等級 |
受支援 |
接受 |
---|---|---|
READ UNCOMMITTED |
否 |
不保證 |
READ COMMITTED |
是 |
是 |
REPEATABLE READ |
否 |
否 |
SNAPSHOT ISOLATION |
否 |
否 |
SERIALIZABLE |
否 |
否 |