Felsöka lagrade aktiveringsprocedurer

gäller för:SQL ServerAzure SQL Managed Instance

Aktiverade lagrade procedurer körs i en bakgrundssession. Därför skiljer sig metoderna för att felsöka en aktiverings lagrad procedur något annorlunda än de som används för felsökning av lagrade procedurer som ingår i en interaktiv session.

Teknik: Analysera Service Broker-konfigurationen

Om aktiverade lagrade procedurer inte körs korrekt använder du verktyget ssbdiagnose för att leta efter konfigurationsfel i de associerade tjänsterna. Mer information finns i verktyget ssbdiagnose (Service Broker).

Teknik: Visa utdata för aktiveringslagrad procedur

Om den aktiverade lagrade proceduren ger felaktiga resultat eller inte läser från kön, ska du kontrollera efter fel och meddelanden i SQL Server-felloggen som hjälper dig att hitta problemet. Aktiverade lagrade procedurer är inte associerade med något program. Information som normalt returneras till det anropande programmet placeras i stället i SQL Server-felloggen. Detta omfattar fel, meddelanden och utdata från PRINT och RAISERROR-uttryck.

Teknik: Kör den lagrade proceduren från en interaktiv session

Om du vill felsöka en aktiverings lagrad procedur kan du inaktivera aktiveringen i kön och sedan köra den lagrade proceduren från SQL Server Management Studio eller sqlcmd-verktyget . Om du kör den lagrade proceduren från en interaktiv session kan du se eventuella fel som returneras av den lagrade proceduren.

Du kan dock se olika resultat om säkerhetskontexten och databasinställningarna skiljer sig i den interaktiva sessionen än när den lagrade proceduren aktiveras av databasmotorn. Innan du kör proceduren gör du följande:

  • Använd EXECUTE AS för att ange användaren för den interaktiva sessionen till den användare som har angetts för aktivering.

  • Ange sessionens alternativ enligt databasens standardinställningar.

Mer information finns i Intern aktiveringskontext.

Symptom: Aktivering av lagrade procedurer körs inte

Följande är vanliga orsaker till detta symptom:

  • Inställningarna för kön kan ha ändrats. sys.service_queues Använd katalogvyn för att bekräfta inställningarna för kö. Kontrollera att aktiveringen för kön är aktiverad, att kön anger rätt lagrad procedur och att kön anger rätt säkerhetsobjekt. Bekräfta att säkerhetsobjektet har körbehörigheter för den lagrade proceduren.

  • Den lagrade proceduren kanske inte startar eller avslutas omedelbart efter att den har startats. I det här fallet ska du kontrollera fel i SQL Servers fellogg från den lagrade proceduren. Du kan också köra den lagrade proceduren från SQL Server Management Studio och kontrollera resultatet.

Symptom: Meddelandena finns kvar i kön

Kontrollera att aktiveringens lagrade procedurer har startats korrekt:

  • Kontrollera den dynamiska hanteringsvyn sys.dm_broker_queue_monitors och säkerställ att en köövervakare är aktiv för kön. Om inte, använder du instruktionen ALTER QUEUE för att aktivera ON.

  • Köövervakarens tillstånd för kön bör vara RECEIVES_OCCURRING. Om köövervakaren inte är i det här tillståndet kontrollerar du den dynamiska hanteringsvyn sys.dm_broker_activated_tasks för att säkerställa att aktiverade processer för kön för närvarande körs. Om det inte finns några aktiverade uppgifter misslyckas aktiveringen. Mer information finns i avsnittet "Symptom: Lagrade aktiveringsprocedurer kör inte" tidigare i det här avsnittet.

Om aktiverade uppgifter körs men meddelandena finns kvar i kön, misslyckas uppgiften antingen med RECEIVE eller med att genomföra transaktioner. Kontrollera SQL Server-felloggen för eventuella fel från den lagrade proceduren. Om du stoppar aktiveringen och kör den lagrade proceduren för hand kan du felsöka problemet.