Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
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 HodnotaRID: 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í:
Použití
SET TRANSACTION ISOLATION LEVELpro určení úrovně uzamčení pro relaci. Pro syntaxi a omezení viz SET TRANSACTION ISOLATION LEVEL (Transact-SQL).Použití nápověd pro uzamykací tabulku k určení úrovně uzamčení pro jednotlivou referenci tabulky v klauzuli
FROM. Pro syntaxi a omezení viz Tabulkové nápovědy (Transact-SQL).
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