Compartilhar via


Desempenho do SQL Server

Numa hierarquia de vários sites, Configuration Manager utiliza SQL Server replicação para transferir dados entre sites. Para obter mais informações, veja Replicação de base de dados.

Utilize o seguinte diagrama para iniciar a resolução de problemas SQL Server desempenho que pode afetar a replicação status:

Diagrama para resolver problemas de desempenho SQL Server

Consultas

Este diagrama utiliza as seguintes consultas:

Certifique-se de SQL Server tabela de controlo de alterações está limpa

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'

Alterar as sessões atuais que processam SQL Server mensagens do mediador de serviços estão bloqueadas

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'

Verificar sessões a pedir demasiada memória

SELECT * FROM sys.dm_exec_query_memory_grants
ORDER BY requested_memory_kb DESC

Verificar se as sessões estão a demorar demasiados bloqueios

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

Confira também

Configuração do SQL Server