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:
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