Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Som standardinställning ökar säkerhetskopiering med komprimering CPU-användningen avsevärt, och den extra CPU som förbrukas av komprimeringsprocessen kan påverka samtidiga åtgärder negativt. Därför kanske du vill skapa en komprimerad säkerhetskopia med låg prioritet i en session vars CPU-användning begränsas av Resource Governor- när CPU-konkurrens uppstår. Det här avsnittet visar ett scenario som klassificerar sessioner för en viss SQL Server-användare genom att mappa dem till en Resource Governor-arbetsbelastningsgrupp som begränsar CPU-användningen i sådana fall.
Viktig
I ett givet Resource Governor-scenario kan sessionsklassificering baseras på ett användarnamn, ett programnamn eller något annat som kan särskilja en anslutning. Mer information finns i Resource Governor Classifier Function och Resource Governor Workload Group.
Det här avsnittet innehåller följande scenarier som visas i följd:
Konfigurera Resource Governor för att begränsa processoranvändningen
Verifiera klassificeringen av den aktuella sessionen (Transact-SQL)
komprimera säkerhetskopior med hjälp av en session med begränsad CPU-
Konfigurera en inloggning och användarkonto för Low-Priority operationer
Scenariot i det här avsnittet kräver en SQL Server-inloggning med låg prioritet och användare. Användarnamnet används för att klassificera sessioner som körs i inloggningen och dirigera dem till en resursguvernörs arbetsbelastningsgrupp som begränsar CPU-användningen.
Följande procedur beskriver stegen för att konfigurera en inloggning och användare för detta ändamål, följt av ett Transact-SQL exempel, "Exempel A: Konfigurera en inloggning och användare (Transact-SQL)."
Så här konfigurerar du en inloggnings- och databasanvändare för att klassificera sessioner
Skapa en SQL Server-inloggning för att skapa komprimerade säkerhetskopior med låg prioritet.
Skapa en inloggning
Du kan också bevilja VIEW SERVER STATE till den här inloggningen.
För mer information, se BEVILJA behörigheter för databasens huvudanvändaren (Transact-SQL).
Skapa en SQL Server-användare för den här inloggningen.
Skapa en användare
Om du vill aktivera sessioner för den här inloggningen och användaren för att säkerhetskopiera en viss databas lägger du till användaren i databasens db_backupoperator databasroll. Gör detta för varje databas som den här användaren säkerhetskopierar. Du kan också lägga till användaren i andra fasta databasroller.
Om du vill lägga till en användare i en fast databasroll
För mer information, se GRANT Databasens huvudprincipals behörigheter (Transact-SQL).
Exempel A: Konfigurera en inloggning och användare (Transact-SQL)
Följande exempel är endast relevant om du väljer att skapa en ny SQL Server-inloggning och användare för säkerhetskopiering med låg prioritet. Du kan också använda en befintlig inloggning och användare, om det finns en lämplig sådan.
Viktig
I följande exempel används ett exempel på inloggning och användarnamn, domain_name\MAX_CPU
. Ersätt dessa med namnen på SQL Server-inloggningen och användaren som du planerar att använda när du skapar komprimerade säkerhetskopior med låg prioritet.
I det här exemplet skapas en inloggning för domain_name\MAX_CPU
Windows-kontot och ger sedan VIEW SERVER STATE-behörighet till inloggningen. Med den här behörigheten kan du verifiera Resource Governor-klassificeringen av sessioner för inloggningen. Exemplet skapar sedan en användare för domain_name\MAX_CPU
och lägger till den i db_backupoperator fast databasroll för AdventureWorks2022-exempeldatabasen. Det här användarnamnet används av funktionen Resource Governor-klassificerare.
-- Create a SQL Server login for low-priority operations
USE master;
CREATE LOGIN [domain_name\MAX_CPU] FROM WINDOWS;
GRANT VIEW SERVER STATE TO [domain_name\MAX_CPU];
GO
-- Create a SQL Server user in AdventureWorks2022 for this login
USE AdventureWorks2022;
CREATE USER [domain_name\MAX_CPU] FOR LOGIN [domain_name\MAX_CPU];
EXEC sp_addrolemember 'db_backupoperator', 'domain_name\MAX_CPU';
GO
Konfigurera Resource Governor för att begränsa CPU-användningen
Not
Kontrollera att Resource Governor är aktiverat. Mer information finns i Aktivera Resursstyrare.
I det här Resource Governor-scenariot består konfigurationen av följande grundläggande steg:
Skapa och konfigurera en resurspool för Resource Governor som begränsar den maximala genomsnittliga CPU-bandbredden som kommer att ges till begäranden i resurspoolen när CPU-konkurrens uppstår.
Skapa och konfigurera en resource governor-arbetsbelastningsgrupp som använder den här poolen.
Skapa en klassificerarfunktion, som är en användardefinierad funktion (UDF) vars returvärden används av Resource Governor för att klassificera sessioner så att de dirigeras till lämplig arbetsbelastningsgrupp.
Registrera klassificerarfunktionen med Resource Governor.
Använd ändringarna i minnesintern konfiguration för Resource Governor.
Not
Information om resurspooler, arbetsbelastningsgrupper och klassificering för Resource Governor finns i Resource Governor.
De Transact-SQL -instruktionerna för de här stegen beskrivs i proceduren "Konfigurera Resource Governor för att begränsa CPU-användningen", vilket följs av ett Transact-SQL exempel på proceduren.
Konfigurera Resource Governor (SQL Server Management Studio)
Så här konfigurerar du Resource Governor för att begränsa CPU-användningen (Transact-SQL)
Utfärda en CREATE RESOURCE POOL-instruktion för att skapa en resurspool. Exemplet för den här proceduren använder följande syntax:
CREATE RESOURCE POOL [<pool_name>] WITH ( MAX_CPU_PERCENT = /*replace 10 with the actual value*/10 );
Value är ett heltal från 1 till 100 som anger procentandelen av den maximala genomsnittliga CPU-bandbredden. Rätt värde beror på din miljö. För illustration använder exemplet i det här avsnittet 20% procent (MAX_CPU_PERCENT = 20.)
Utfärda en CREATE WORKLOAD GROUP-instruktion för att skapa en arbetsbelastningsgrupp för åtgärder med låg prioritet vars CPU-användning du vill styra. Exemplet för den här proceduren använder följande syntax:
CREATE WORKLOAD GROUP [<group_name>] USING [<pool_name>];
Utfärda en CREATE FUNCTION-instruktion för att skapa en klassificerare som mappar arbetsbelastningsgruppen som skapades i föregående steg till användaren av lågprioriterad inloggning. Exemplet för den här proceduren använder följande syntax:
CREATE FUNCTION [<schema_name>].[<function_name>]() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @workload_group_name AS [<sysname>] IF (SUSER_NAME() = '<user_of_low_priority_login>') SET @workload_group_name = '<workload_group_name>' RETURN @workload_group_name END;
Information om komponenterna i den här
CREATE FUNCTION
-instruktionen finns i:-
Viktig
SUSER_NAME är bara en av flera systemfunktioner som kan användas i en klassificerarfunktion. Mer information finns i Skapa och testa en klassificerare User-Defined funktion.
Utfärda en ALTER RESOURCE GOVERNOR--instruktion för att registrera klassificerarfunktionen med Resource Governor. Exemplet för den här proceduren använder följande syntax:
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = [<schema_name>].[<function_name>]);
Utfärda en andra ALTER RESOURCE GOVERNOR-instruktion för att tillämpa ändringarna i minnesintern konfiguration av Resource Governor enligt följande:
ALTER RESOURCE GOVERNOR RECONFIGURE;
Exempel B: Konfigurera Resource Governor (Transact-SQL)
I följande exempel utförs följande steg i en enda transaktion:
Skapar
pMAX_CPU_PERCENT_20
resurspool.Skapar
gMAX_CPU_PERCENT_20
arbetsbelastningsgrupp.Skapar funktionen
rgclassifier_MAX_CPU()
klassificerare, som använder användarnamnet som skapades i föregående exempel.Registrerar klassificerarfunktionen med Resource Governor.
När transaktionen har slutförts tillämpar exemplet de konfigurationsändringar som begärts i ALTER WORKLOAD GROUP- eller ALTER RESOURCE POOL-satserna.
Viktig
I följande exempel används användarnamnet för SQL Server-exempelanvändaren som skapades i "Exempel A: Konfigurera en inloggning och användare (Transact-SQL)," domain_name\MAX_CPU
. Ersätt detta med namnet på användaren av inloggningen som du planerar att använda för att skapa komprimerade säkerhetskopior med låg prioritet.
-- Configure Resource Governor.
USE master;
-- Create a resource pool that sets the MAX_CPU_PERCENT to 20%.
CREATE RESOURCE POOL pMAX_CPU_PERCENT_20
WITH
(MAX_CPU_PERCENT = 20);
GO
-- Create a workload group to use this pool.
CREATE WORKLOAD GROUP gMAX_CPU_PERCENT_20
USING pMAX_CPU_PERCENT_20;
GO
-- Create a classification function.
-- Note that any request that does not get classified goes into
-- the 'Default' group.
CREATE FUNCTION dbo.rgclassifier_MAX_CPU() RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @workload_group_name AS sysname
IF (SUSER_NAME() = 'domain_name\MAX_CPU')
SET @workload_group_name = 'gMAX_CPU_PERCENT_20'
RETURN @workload_group_name
END;
GO
-- Register the classifier function with Resource Governor.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION= dbo.rgclassifier_MAX_CPU);
COMMIT TRAN;
GO
-- Start Resource Governor
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
Verifiera klassificeringen av den aktuella sessionen (Transact-SQL)
Du kan också logga in som den användare som du angav i klassificerarfunktionen och verifiera sessionsklassificeringen genom att utfärda följande SELECT--instruktion i Object Explorer:
USE master;
SELECT sess.session_id, sess.login_name, sess.group_id, grps.name
FROM sys.dm_exec_sessions AS sess
JOIN sys.dm_resource_governor_workload_groups AS grps
ON sess.group_id = grps.group_id
WHERE session_id > 50;
GO
I resultatpanelen bör namn kolumn lista en eller flera sessioner för arbetsbelastningsgruppnamnet som du angav i din klassificeringsfunktion.
Not
Information om dynamiska hanteringsvyer som anropas av den här SELECT-instruktionen finns i sys.dm_exec_sessions (Transact-SQL) och sys.dm_resource_governor_workload_groups (Transact-SQL).
Komprimera säkerhetskopior med en session med begränsad cpu
Om du vill skapa en komprimerad säkerhetskopia i en session med en begränsad maximal CPU loggar du in som användaren angav i klassificerarens funktion. I säkerhetskopieringskommandot anger du antingen WITH COMPRESSION ( Transact-SQL) eller väljer Komprimera säkerhetskopiering (SQL Server Management Studio). Information om hur du skapar en komprimerad databassäkerhetskopia finns i Skapa en fullständig databassäkerhetskopiering (SQL Server).
Exempel C: Skapa en komprimerad säkerhetskopia (Transact-SQL)
Följande BACKUP- exempel skapar en komprimerad fullständig säkerhetskopia av en databas AdventureWorks2022 i en nyformaterad säkerhetskopieringsfil Z:\SQLServerBackups\AdvWorksData.bak
.
--Run backup statement in the gBackup session.
BACKUP DATABASE AdventureWorks2022 TO DISK='Z:\SQLServerBackups\AdvWorksData.bak'
WITH
FORMAT,
MEDIADESCRIPTION='AdventureWorks2022 Compressed Data Backups',
DESCRIPTION='First database backup on AdventureWorks2022 Compressed Data Backups media set',
COMPRESSION;
GO
Se även
Skapa och testa en klassificerare User-Defined funktion
Resource Governor