Rozwiązywanie problemów z priorytetami konwersacji
W tym temacie przedstawiono sugestie dla poprawianie typowe objawy związane z Service Broker priorytety konwersacji.
Technika: Określanie, jeżeli HONOR_BROKER_PRIORITY jest włączone.
Use the sys.databasesis_broker_priority_honored column to determine the state of the HONOR_BROKER_PRIORITY database option:
SELECT name AS database_name,
CASE is_broker_priority_honored
WHEN 0 THEN N'OFF'
WHEN 1 THEN N'ON'
END AS is_broker_priority_honored
FROM sys.databases
ORDER BY database_name;
Symptom: Wiadomości nie są wysyłane w kolejności
Otwórz SQL Server Profiler śledzenia i przejrzyj zdarzenia Broker zdalnego Ack wiadomości.Wartość 1 w StarvationElevation kolumna wskazuje priorytet wiadomości został podniesiony do uniknięcia zablokowania.Wartość 0 w HonorBokerPriority kolumna wskazuje opcja HONOR_BROKER_PRIORITY nie został włączony wysyłanie bazy danych.
Również sprawdzić liczników Monitora systemu transportu Broker i DBM wyświetlić szybkości transmisji dla różnych poziomów priorytetu wiadomości.
Symptom: Wiadomości nie są odbierane w kolejności
Instrukcja ODBIERZ pobiera tylko wiadomości z jednej grupa konwersacji.To nie będą wyświetlane komunikaty z wysokim priorytetem konwersacji jeśli należą do różnych grupa konwersacji.
instrukcja ODBIERZ, która nie zawiera klauzula WHERE pobiera wiadomości z grupa konwersacji odblokowane najwyższy priorytet.Jeśli grupa konwersacji ma wysoki priorytet i rozmowach niski priorytet, instrukcja ODBIERZ może pobierać wiadomości z konwersacji o niskim priorytecie.Taka sytuacja może wystąpić, nawet jeśli do kolejki wiadomości z wysokim priorytetem konwersacji w innych grupach.
ODBIERZ instrukcja ma klauzula WHERE, która określa grupa konwersacji pobiera tylko wiadomości z grupy określonej konwersacji.Instrukcja ODBIERZ będzie pobierać wiadomości z konwersacji o niskim priorytecie w grupie, niezależnie od poziom priorytetu wiadomości od innych grup konwersacji.
Symptom: Wiadomości nie są przypisane oczekiwane priorytet
Widok sys.conversation_endpoint aby zobaczyć, jeśli punkt końcowy konwersacji został przypisany poziom priorytetu oczekiwane.Jeśli nie, użyj sys.conversation_priorites Aby przejrzeć właściwości określonego dla priorytetów konwersacji bazy danych przed kontrakt, Usługa lokalna i usługa zdalnego używany dla punkt punkt końcowy konwersacji.
Zobacz także