Teilen über


SQL Server-Leistung

In einer Hierarchie mit mehreren Standorten verwendet Configuration Manager SQL Server Replikation, um Daten zwischen Standorten zu übertragen. Weitere Informationen finden Sie unter Datenbankreplikation.

Verwenden Sie das folgende Diagramm, um die Problembehandlung SQL Server Leistung zu starten, die sich auf den Replikationsstatus auswirken kann:

Diagramm zur Problembehandlung bei SQL Server Leistung

Abfragen

In diesem Diagramm werden die folgenden Abfragen verwendet:

Stellen Sie sicher SQL Server Änderungsnachverfolgungstabelle bereinigt ist.

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'

Ändern der aktuellen Sitzungen, die SQL Server Service Broker-Nachrichten blockiert werden

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'

Überprüfen von Sitzungen, die zu viel Arbeitsspeicher anfordern

SELECT * FROM sys.dm_exec_query_memory_grants
ORDER BY requested_memory_kb DESC

Überprüfen von Sitzungen, bei denen zu viele Sperren durchgeführt werden

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

Siehe auch

SQL Server-Konfiguration