sys.sp_lock (Transact-SQL)

platí pro:SQL Server

Uvádí informace o zámkech.

Important

Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Pro získání informací o zámkech v Databázový stroj systému SQL Server použijte pohled dynamické správy sys.dm_tran_locks.

Transact-SQL konvence syntaxe

Syntax

sys.sp_lock
    [ [ @spid1 = ] spid1 ]
    [ , [ @spid2 = ] spid2 ]
[ ; ]

Arguments

[ @spid1 = ] spid1

Číslo ID relace Database Engine, ze sys.dm_exec_sessions kterého uživatel požaduje informace o uzamčení. @spid1 je int, s výchozím nastavením NULL. Provést pro sp_who získání informací o procesu o relaci. Pokud @spid1 není specifikováno, zobrazí se informace o všech zámkech.

[ @spid2 = ] spid2

Další Database Engine číslo ID relace může sys.dm_exec_sessions mít zámek současně s @spid1 a o kterém uživatel také chce informace. @spid2 je int, s výchozím hodnotou NULL.

Hodnoty návratového kódu

0 (úspěch).

Sada výsledků

Výsledná sp_lock sada obsahuje jeden řádek pro každý zámek držený relacemi specifikovanými v parametrech @spid1 a @spid2 . Pokud není specifikován ani @spid1, ani @spid2, výsledná sada hlásí zámky pro všechny aktuálně aktivní relace v instanci Database Engine.

Název sloupce Datový typ Description
spid smallint Číslo relace Database Engine pro proces žádající o zámek.
dbid smallint Identifikační číslo databáze, ve které je zámek uložen. Tuto funkci můžete použít DB_NAME() k identifikaci databáze.
ObjId int Identifikační číslo objektu, na kterém je zámek držen. Funkci v související databázi můžete použít OBJECT_NAME() k identifikaci objektu. Hodnota je 99 speciální případ, který označuje zámek na jedné ze systémových stránek používaných k zaznamenávání alokace stránek v databázi.
IndId smallint Identifikační číslo indexu, na kterém je zámek držen.
Type nchar(4) Typ zámku:

RID = Zamknout na jeden řádek v tabulce identifikovaný identifikátorem řádku (RID).
KEY = Zamkněte v indexu, který chrání rozsah klíčů v serializovatelných transakcích.
PAG = Zamknout na datové nebo indexové stránce.
EXT = Zaměřit určitý rozsah.
TAB = Zamknout celou tabulku, včetně všech dat a indexů.
DB = Zamkni databázi.
FIL = Zamknout databázový soubor.
APP = Zamknout na zdroj specifikovaný aplikací.
MD = Uzamknout metadata nebo katalogové informace.
HBT = Zamknout haldu nebo B-strom (HoBT). Tyto informace nejsou v SQL Server úplné.
AU = Zamknout na alokační jednotku. Tyto informace nejsou v SQL Server úplné.
Resource nchar(32) Hodnota identifikuje uzamčený zdroj. Formát hodnoty závisí na typu zdroje uvedeného ve sloupci Type :

Type Hodnota: Resource Hodnota
RID: Identifikátor ve formátu fileid:pagenumber:rid, kde fileid identifikuje soubor obsahující stránku, pagenumber identifikuje stránku obsahující řádek a rid identifikuje konkrétní řádek na stránce. fileid odpovídá sloupci file_id v zobrazení katalogu sys.database_files .
KEY: Šestnáctkové číslo používané interně v Database Engine.
PAG: Číslo ve formátu fileid:pagenumber, kde fileid identifikuje soubor obsahující stránku a identifikuje pagenumber stránku.
EXT: Číslo označující první stránku v rozsahu. Číslo je ve formátu fileid:pagenumber.
TAB: Žádné informace neposkytnuty, protože tabulka je již ve sloupci ObjId označena.
DB: Žádné informace neposkytnuty, protože databáze je již v sloupci dbid identifikována.
FIL: Identifikátor souboru, který odpovídá sloupci file_id v katalogovém zobrazení sys.database_files .
APP: Identifikátor jedinečný pro aplikační zdroj, který je uzamčen. Ve formátu DbPrincipalId:<first two to 16 characters of the resource string><hashed value>.
MD: liší se podle typu zdroje. Pro více informací viz popis sloupce resource_description v sys.dm_tran_locks.
HBT: Žádné informace neposkytnuty. Použijte sys.dm_tran_locks místo toho dynamický režim správy.
AU: Žádné informace neposkytnuty. Použijte sys.dm_tran_locks místo toho dynamický režim správy.
Mode nvarchar(8) Režim zámku požadoval. Může to být:

NULL = K tomuto zdroji není povolen žádný přístup. Slouží jako dočasný závazek.
Sch-S = Stabilita schématu. Zajišťuje, že prvek schématu, jako je tabulka nebo index, není vyhozen, zatímco jakákoli relace drží na tomto prvku schéma stabilitní zámek.
Sch-M = Modifikace schématu. Musí být spravována kteroukoliv relací, která chce změnit schéma zadaného prostředku. Zajišťuje, že žádné jiné sezení neodkazují na uvedený objekt.
S = Sdíleno. Udržovací relace má udělen sdílený přístup k prostředku.
U = Aktualizace. Označuje aktualizační zámek získaný na zdrojích, které by mohly být časem aktualizovány. Používá se k prevenci běžného typu zablokování, které nastává, když více relací uzamkne zdroje pro případnou pozdější aktualizaci.
X = Exkluzivně. Držící relace má výhradní přístup k prostředku.
IS = Sdílený záměr. Označuje záměr umístit zámky S na některé podřízené prostředky v hierarchii zámků.
IU = Aktualizace záměru. Označuje záměr umístit zámky typu U na některé podřízené prostředky v hierarchii zámků.
IX = Exkluzivní záměr. Označuje záměr umístit zámky X na některé podřízené prostředky v hierarchii zámků.
SIU = Aktualizace sdíleného záměru. Označuje sdílený přístup k prostředku se záměrem získat aktualizační zámky u podřízené prostředky v rámci hierarchie zámků.
SIX = Sdílený záměr exkluzivní. Indikuje sdílený přístup k prostředku se záměrem získat exkluzivní zámky na podřízené prostředky v hierarchii zámků.
UIX = Záměr aktualizace exkluzivně. Označuje blokování zámku aktualizace u prostředku se záměrem získání výhradních zámků u podřízených prostředků v hierarchii zámků.
BU = Hromadná aktualizace. Používá se pro hromadné operace.
RangeS_S = Sdílený Key-Range a zámek sdílených zdrojů. Označuje sériově serializovatelný sken rozsahu.
RangeS_U = Sdílený Key-Range a aktualizační zámek zdrojů. Označuje serializovatelnou kontrolu aktualizací.
RangeI_N = Vložit Key-Range a Null Resource lock. Slouží k otestování rozsahů před vložením nového klíče do indexu.
RangeI_S = Key-Range Konverzní zámek. Vzniklo překryvem zámků RangeI_N a S.
RangeI_U = Key-Range Konverzní zámek vytvořený překryvem zámků RangeI_N a U.
RangeI_X = Key-Range Konverzní zámek vytvořený překryvem zámků RangeI_N a X.
RangeX_S = Key-Range Konverzní zámek vytvořený překryvem RangeI_N a RangeS_S. zámky.
RangeX_U = Key-Range Konverzní zámek vytvořený překryvem zámků RangeI_N a RangeS_U.
RangeX_X = Zámek exkluzivního Key-Range a exkluzivního zdroje. Jedná se o zámek převodu používaný při aktualizaci klíče v rozsahu.
Status nvarchar(5) Stav žádosti o zámek:

CNVRT: Zámek je převáděn z jiného režimu, ale převod je blokován jiným procesem, který drží zámek s konfliktním režimem.
GRANT: Zámek byl získán.
WAIT: Zámek je blokován jiným procesem, který drží zámek s konfliktním režimem.

Remarks

Uživatelé mohou omezovat operace čtení pomocí těchto možností:

Všechny distribuované transakce, které nejsou spojeny se sezením, jsou osiřelé transakce. Database Engine přiřazuje všem osiřelým distribuovaným transakcím session ID -2, což uživateli usnadňuje identifikaci blokujících distribuovaných transakcí. Pro více informací viz Používání označených transakcí k obnově souvisejících databází konzistentně.

Permissions

Vyžaduje VIEW SERVER STATE oprávnění.

Oprávnění pro SQL Server 2022 a novější

Vyžaduje VIEW SERVER PERFORMANCE STATE oprávnění na serveru.

Examples

A. Seznam všech zámků

Následující příklad zobrazuje informace o všech zámecích, které jsou aktuálně uloženy v instanci Database Engine.

USE master;
GO

EXECUTE sp_lock;
GO

B. Seznam zámku z procesu jednoho serveru

Následující příklad zobrazuje informace, včetně zámků, o ID 53relace .

USE master;
GO

EXECUTE sp_lock 53;
GO