Funkce klasifikátoru správce prostředků
platí pro:SQL Serverazure SQL Managed Instance
Proces klasifikace správce prostředků může použít funkci klasifikátoru k přiřazení příchozích relací ke skupině úloh. Funkce klasifikátoru obsahuje vlastní logiku pro klasifikaci relací do skupin úloh.
Příklady konfigurace a monitorování a informace o osvědčených postupech správce prostředků najdete v tématu Kurz: Příklady konfigurace správce prostředků a osvědčené postupy.
Klasifikace
U správce prostředků se každá nová relace klasifikuje do skupiny úloh. Klasifikátor je skalární uživatelem definovaná funkce, kterou vytvoříte. Obsahuje požadovanou logiku pro přiřazení příchozích relací ke skupině úloh. Skalární hodnota vrácená klasifikátorem je název skupiny pracovní zátěže, kterou přiřadíme příchozí relaci.
Pokud je povolený správce prostředků a v konfiguraci správce prostředků je zadaná funkce klasifikátoru, pak výstup funkce určuje skupinu úloh použitou pro nové relace. V opačném případě se všechny uživatelské relace klasifikují do skupiny úloh default
.
Poznámka
Skupina úloh internal
se používá pouze pro interní systémové požadavky. Nemůžete změnit kritéria použitá pro přiřazování požadavků do skupiny úloh internal
a nemůžete explicitně klasifikovat žádosti do skupiny úloh internal
.
Abyste mohli začít používat funkci klasifikátoru, musíte provést následující kroky:
- Vytvořte funkci v databázi
master
pomocí CREATE FUNCTION. Funkce musí používat vazbu schématu. - Odkazujte na funkci v konfiguraci správce prostředků pomocí ALTER RESOURCE GOVERNOR s parametrem
CLASSIFIER_FUNCTION
. - Vytvořte novou konfiguraci efektivní pomocí
ALTER RESOURCE GOVERNOR RECONFIGURE
.
Důležitý
Pokud se funkce klasifikátoru nedokončí v době časového limitu připojení nakonfigurované klientem, může dojít k vypršení časového limitu připojení. Je důležité vytvořit funkce klasifikátoru, které dokončí provádění před vypršením časového limitu připojení.
Udržujte funkci klasifikátoru jednoduchou. Nepoužívejte složitou nebo časově náročnou logiku. Pokud je to možné, vyhněte se přístupu k datům v klasifikátoru.
Funkce klasifikátoru má následující charakteristiky a chování:
- Funkce je definována v oboru serveru (v databázi
master
). - Funkce je definována pomocí vazby schématu. Další informace naleznete v sekci SCHEMABINDING.
- Funkce se vyhodnocuje pro každou novou relaci, i když je povolené sdružování připojení.
- Funkce vrátí kontext skupiny úloh pro relaci. Relace se přiřadí skupině úloh vrácené klasifikátorem po celou dobu životnosti relace.
- Pokud funkce vrátí
NULL
,default
nebo název neexistující skupiny úloh, relaci je přidělen kontext skupiny úlohdefault
. Relace má takédefault
kontext, pokud funkce z nějakého důvodu selže. - Po přidání nebo odebrání klasifikátoru pomocí příkazu
ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...)
se změna projeví až po provedení příkazuALTER RESOURCE GOVERNOR RECONFIGURE
. - Jako klasifikátor lze současně určit pouze jednu funkci.
- Funkci klasifikátoru nelze upravit ani odstranit, pokud není jeho stav klasifikátoru odebrán pomocí příkazu
ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...)
, který nastaví název funkce naNULL
nebo na název jiné funkce. - Pokud funkce klasifikátoru chybí, jsou všechny relace klasifikovány do skupiny
default
. - Skupiny úloh zadané ve výstupu funkce klasifikátoru jsou mimo rozsah omezení vazby schématu. Například tabulku, na kterou odkazuje funkce klasifikátoru, nemůžete odstranit, ale můžete odstranit skupinu úloh i v případě, že klasifikátor vrátí název této skupiny.
Povolit DAC
Pro účely řešení potíží a diagnostiky doporučujeme proaktivně povolit a seznámit se s vyhrazeným připojením správce (DAC). DaC není předmětem klasifikace správce prostředků. DaC můžete použít k monitorování a řešení potíží s funkcí klasifikátoru, i když konfigurace správce prostředků nefunguje a ostatní připojení nebudou použitelná. Další informace naleznete v tématu Diagnostické připojení pro správce databáze.
Pokud není dac k dispozici pro řešení potíží, můžete spustit server v režimu jednoho uživatele. I když připojení v režimu jednoho uživatele není předmětem klasifikace, neposkytuje možnost diagnostikovat klasifikaci správce prostředků, když je spuštěná.
Jakmile se připojíte pomocí DAC nebo se připojíte v režimu jednoho uživatele, můžete upravit konfiguraci správce prostředků odebrat nefunkční klasifikátor nebo zakázat správce prostředků.
Proces přihlášení
V kontextu správce prostředků se proces přihlášení do relace skládá z následujících kroků:
- Ověřování přihlášení.
- Spuštění triggeru přihlášení. Vyvolá se pouze v případě, že v instanci existují triggery přihlášení.
- Klasifikace.
Při spuštění klasifikace správce prostředků spustí funkci klasifikátoru a použije skalární hodnotu vrácenou funkcí k odesílání požadavků do odpovídající skupiny úloh.
Pomocí systémových zobrazení sys.dm_exec_sessions a sys.dm_exec_requests můžete monitorovat provádění triggerů přihlášení a funkce klasifikátoru.
Příklady
Funkce klasifikátoru správce prostředků může používat širokou škálu vlastní logiky. Další příklady a návod najdete v tématu Příručka: Příklady konfigurace správce prostředků a osvědčené postupy.
A. Název hostitele
Tato funkce klasifikuje relace z konkrétního názvu hostitele do skupiny úloh s názvem Reports
pomocí HOST_NAME() předdefinované systémové funkce. Všechny ostatní relace se budou dál klasifikovat do skupiny úloh default
.
CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_name sysname = 'default';
IF (HOST_NAME() IN ('reportserver1','reportserver2'))
SET @grp_name = 'Reports';
RETURN @grp_name;
END;
GO
B. Uživatelské jméno
Tato funkce automaticky klasifikuje relace z určitých uživatelských jmen nebo názvů účtů služeb do skupiny úloh s názvem Reports
pomocí integrované systémové funkce SUSER_SNAME(). Všechny ostatní relace nadále budou zařazovány do skupiny úloh default
.
CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_name sysname = 'default';
IF (SUSER_SNAME() IN ('Reporting', 'domain/svc_reporting'))
SET @grp_name = 'Reports';
RETURN @grp_name;
END;
GO
C. Název aplikace
Tato funkce klasifikuje relace z konkrétních názvů aplikací do pracovní skupiny s názvem Adhoc
pomocí integrované systémové funkce APP_NAME(). Všechny ostatní relace se budou dál klasifikovat do skupiny úloh default
.
Důležitý
Aplikace nebo uživatel může jako součást připojovacího řetězce zadat libovolný název aplikace. Uživatelé se můžou připojit prostřednictvím široké škály aplikací.
CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_name sysname = 'default';
IF (APP_NAME() IN ('Microsoft SQL Server Management Studio - Query','azdata'))
SET @grp_name = 'Adhoc';
RETURN @grp_name;
END;
GO