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
azure SQL Managed Instance
K identifikaci příčiny zablokování použijte SQL Server Profiler. Patová situace nastává, když existuje cyklická závislost mezi dvěma nebo více vlákny nebo procesy kvůli určité sadě prostředků v rámci SQL Serveru. Pomocí SQL Server Profileru můžete vytvořit trasování, které zaznamenává, přehrává a zobrazuje události zablokování pro účely analýzy.
Pokud chcete trasovat události zablokování, přidejte do trasování třídu událostí graf zablokování. Tato třída události naplní sloupec TextData v trasovacích datech XML informacemi o procesu a objektech, které jsou zapojeny do zablokování. SQL Server Profiler může extrahovat dokument XML do souboru XML zablokování (.xdl), který lze později zobrazit v aplikaci SQL Server Management Studio. Sql Server Profiler můžete nakonfigurovat tak, aby extrahoval události grafu vzájemného zablokování do jednoho souboru, který obsahuje všechny události grafu vzájemného zablokování, nebo do oddělených souborů. Tuto extrakci lze provést některým z následujících způsobů:
Při konfiguraci trasování použijte kartu Nastavení extrakce událostí. Tato karta se nezobrazí, dokud na kartě Výběr událostí nevyberete událost graf vzájemného zablokování.
Pomocí možnosti Extrahovat události SQL Serveru v nabídce Soubor .
Jednotlivé události je možné extrahovat a uložit také tak, že kliknete pravým tlačítkem na konkrétní událost a zvolíte Extrahovat data události.
Grafy zablokování
SQL Server Profiler a SQL Server Management Studio používají graf čekání při vzájemném zablokování k popisu zablokování. Graf čekání na zablokování obsahuje uzly procesů, uzly prostředků a hrany představující vztahy mezi procesy a prostředky. Komponenty grafů čekání jsou definovány v následující tabulce:
| Uzel | Popis |
|---|---|
| Procesový uzel | Vlákno, které provádí úlohu; například INSERT, UPDATE nebo DELETE. |
| Uzel zdrojů | Databázový objekt; Například tabulka, index nebo řádek. |
| Okraj | Vztah mezi procesem a prostředkem Hrana požadavku nastane, když proces čeká na prostředek. Hraniční hodnota vlastníka nastane, když prostředek čeká na proces. Režim uzamčení je součástí popisu hrany. Například Režim: X. |
Uzel zablokování procesu
V grafu čekání obsahuje uzel procesu informace o procesu. Následující tabulka vysvětluje součásti procesu.
| Součást | Definice |
|---|---|
| ID procesu serveru | ID relace (SPID), identifikátor přiřazený serverem pro proces, který vlastní zámek. |
| ID dávky serveru | Identifikátor dávky serveru (SBID). |
| ID kontextu spuštění | Identifikátor kontextu spuštění (ECID). ID kontextu spuštění daného vlákna přidruženého ke konkrétnímu ID relace. ECID = { 0, 1, 2, 3, ... n }, kde 0 vždy představuje hlavní nebo nadřazené vlákno a { 1, 2, 3, ... n } představují podčteny. |
| Priorita zablokování | Priorita ucpání procesu Další informace o možných hodnotách najdete v tématu SET DEADLOCK_PRIORITY. |
| Použitý protokol | Množství místa protokolu používaného procesem. |
| ID vlastníka | ID transakce pro procesy, které používají transakce a aktuálně čekají na uzamčení. |
| Popisovač transakcí | Ukazatel na popisovač transakce, který popisuje stav transakce. |
| Vstupní vyrovnávací paměť | Vstupní vyrovnávací paměť aktuálního procesu definuje typ události a příkaz, který se spouští. Mezi možné hodnoty patří: Jazyk RPC Nic |
| Prohlášení | Typ výroku. Možné hodnoty: NOP VYBRAT AKTUALIZACE VLOŽIT VYMAZAT Neznámý |
Uzel zdroje zablokování
Ve vzájemném zablokování čekají dva procesy jeden na druhého, aby uvolnili prostředek držený tím druhým. V grafu zablokování se prostředky zobrazují jako uzly prostředků.