Udostępnij za pośrednictwem


Kontekst aktywacji wewnętrznej

Dotyczy:SQL ServerAzure SQL Managed Instance

W tym artykule opisano kontekst uruchamiania procedury składowanej, która jest uruchamiana w wyniku aktywacji wewnętrznej.

Kontekst zabezpieczeń

Kolejka skonfigurowana do aktywacji musi również określać użytkownika, jako którego uruchamiana jest procedura składowana aktywacyjna. SQL Server przyjmuje tożsamość tego użytkownika, zanim uruchomi procedurę składowaną.

Gdy procedura składowana określa również klauzulę EXECUTE AS , występują dwie personifikacje. Program SQL Server najpierw personifikuje użytkownika określonego dla kolejki i wykonuje procedurę składowaną. Po wykonaniu procedury składowanej procedura personifikuje użytkownika określonego EXECUTE AS w klauzuli procedury.

Użytkownik określony dla powiązania usługi zdalnej jest zazwyczaj innym użytkownikiem niż użytkownik określony do aktywacji. Uprawnienia wymagane dla każdego użytkownika również różnią się. Użytkownik zdalnie powiązanej usługi nie musi mieć uprawnień do odczytu z kolejki ani wykonywania procedur składowanych w bazie danych, natomiast użytkownik określony do aktywacji nie potrzebuje uprawnień do wysyłania wiadomości do usługi. Aby uzyskać więcej informacji na temat uprawnień użytkowników, zobacz Zabezpieczenia okien dialogowychIdentity and Access Control (Service Broker) i Service Broker.

Ustawienia sesji

Usługa Service Broker wykonuje wewnętrznie aktywowane programy usług w sesji w tle, która jest oddzielona od połączenia, które utworzyło komunikat. Opcje ustawione dla tej sesji są opcjami domyślnymi dla bazy danych.

W ramach sesji uruchomionej przez usługę Service Broker program SQL Server zapisuje dane wyjściowe instrukcji PRINT i RAISERROR w dzienniku błędów programu SQL Server. Usługa Service Broker nie udostępnia parametrów aktywowanej procedury składowanej. Usługa Service Broker nie uwzględnia wartości zwracanych z aktywowanej procedury składowanej i nie przetwarza zestawów wyników z aktywowanej procedury składowanej.

Kontekst transakcji

Aktywowana procedura składowana jest odpowiedzialna za zarządzanie transakcjami. Program SQL Server nie uruchamia transakcji przed aktywowaniem procedury składowanej, a procedura składowana jest uruchamiana w innym kontekście transakcji niż operacja wewnętrzna, która aktywuje procedurę. Więcej informacji na temat zarządzenia transakcjami w uruchamianych procedurach składowanych znajdziesz w sekcji Obsługa komunikatów transakcyjnych.

Wykrywanie błędów

Aktywowana procedura składowana musi odbierać komunikaty z kolejki, która uaktywniła procedurę. Jeśli procedura składowana kończy się bez odbierania komunikatów lub monitor kolejki wykryje, że procedura nie odbiera komunikatów po krótkim przekroczeniu limitu czasowego, monitor kolejki uznaje, że procedura składowana nie powiodła się. W tym przypadku monitor kolejki przestaje aktywować procedurę składowaną.

Ekran

Aby sprawdzić użytkownika uruchamiającego procedurę aktywacji, można użyć Zdarzeń Rozszerzonych (zdarzenia broker_activation wraz z akcjami username i server_principal_name) lub dynamicznego widoku zarządzania sys.dm_broker_activated_tasks, który zwraca bazę danych principal_id skonfigurowaną w kolejce.