Partager via


Performances de Microsoft SQL Server

Dans une hiérarchie multisite, Configuration Manager utilise la réplication SQL Server pour transférer des données entre les sites. Pour plus d’informations, consultez Réplication de base de données.

Utilisez le diagramme suivant pour commencer à résoudre les problèmes SQL Server performances qui peuvent avoir un impact sur l’état de réplication :

Diagramme pour résoudre les problèmes de performances SQL Server

Requêtes

Ce diagramme utilise les requêtes suivantes :

Vérifiez SQL Server table de suivi des modifications est nettoyée

DECLARE @RetentionUnit INT = 0;
DECLARE @RetentionPeriod INT = 0;
DECLARE @CTCutOffTime DATETIME;
DECLARE @CTMinTime DATETIME;

SELECT @RetentionPeriod=retention_period,  
    @RetentionUnit=retention_period_units  
FROM sys.change_tracking_databases  
WHERE database_id = DB_ID();

IF @RetentionUnit = 1
    SET @CTCutOffTime = DATEADD(MINUTE,-@RetentionPeriod,GETUTCDATE())
ELSE IF @RetentionUnit = 2
    SET @CTCutOffTime = DATEADD(HOUR,-@RetentionPeriod,GETUTCDATE())
ELSE IF @RetentionUnit = 3
    SET @CTCutOffTime = DATEADD(DAY,-@RetentionPeriod,GETUTCDATE())

-- give a buffer of two days
SET @CTCutOffTime = DATEADD(DAY, -2, @CTCutOffTime)
select top 1 @CTMinTime=commit_time from sys.dm_tran_commit_table order by commit_ts asc
IF @CTMinTime < @CTCutOffTime
    PRINT 'there is change tracking backlog, please contact Microsoft support'

Modifier les sessions actuelles qui gèrent SQL Server messages Service Broker sont bloqués

select
       req.session_id
       ,req.blocking_session_id
       ,req.last_wait_type
       ,req.wait_type
       ,req.wait_resource
       ,t.text
from sys.dm_exec_sessions s
inner join sys.dm_exec_requests req on s.Session_id=req.session_id
cross apply sys.dm_exec_sql_text(sql_handle) t
where program_name='SMS_data_replication_service'

Vérifier les sessions demandant trop de mémoire

SELECT * FROM sys.dm_exec_query_memory_grants
ORDER BY requested_memory_kb DESC

Vérifier les sessions prenant trop de verrous

SELECT TOP 10 request_session_id,
program_name = (SELECT program_name FROM sys.dm_exec_sessions WHERE session_id=request_session_id),
COUNT (*) num_locks
FROM sys.dm_tran_locks
GROUP BY request_session_id
ORDER BY count (*) DESC

Voir aussi

Configuration SQL Server