Udostępnij za pośrednictwem


EXECUTE AS vs. SETUSER

W SQL Server, kontekst, w którym wykonać jest ciąg znaków, polecenia lub moduł można wyraźnie ustawić przy użyciu wykonać AS instrukcja. wykonać AS zastępuje SETUSER instrukcja.Aby uzyskać więcej informacji na temat przełączania kontekstu zobacz Understanding Context Switching.

Porównanie funkcji przełączania kontekstu

W porównaniu z SETUSER instrukcja wykonać AS ma następujące zalety:

  • Serwer lub baza danych podmiotów innych niż SA or dbo może wywołać AS. wykonać

    Użytkownik, który wywołuje wykonać AS instrukcja musi mieć uprawnienia PERSONIFIKACJI spłaty kapitału w miejsce docelowe.

    SETUSER jest ograniczona do członków sysadmin stała rola serwera or db_owner stała rola bazy danych.

  • Zakres personifikacji jest jawnie zdefiniowany w instrukcja.

    Określony główny jest określany jako nazwa logowania, personifikacja poziomie serwera, lub jako użytkownik, personifikację poziom bazy danych.

    Zakres personifikacji w instrukcja SETUSER jest oczywiste.Jeśli w instrukcja jest wywoływany przez element członkowski członkowski sysadmin, personifikacja poziom serwera jest używany.Jeśli w instrukcja jest wywoływany przez konta, które dbo, bazy danych poziom personifikacji jest używany.

  • Personifikację pozostają w mocy, dopóki nie następuje jedno z następujących czynności:

    • Sesja zostanie usunięte.

    • Kontekst jest przełączony na inny identyfikator logowania lub innego użytkownika.

    • Kontekst jest przywrócone do poprzedniego kontekstu wykonania.

    Z SETUSER personifikację pozostaje w mocy, dopóki nie następuje jedno z następujących czynności:

    • Innej instrukcja SETUSER został wystawiony.

    • Bieżąca baza danych zostanie zmieniona przy użyciu instrukcja USE przy użyciu konta, które jest dbo, lub jest członkiem sysadmin ustalić roli serwera.

  • Stos kontekstu wykonać można utworzyć przez wywołanie wykonać AS instrukcja wiele razy dla wielu wystawców.Po wywołaniu instrukcja operacji PRZYWRACANIA przełącza kontekst logowania lub użytkownikowi w następny poziom wyżej w stos kontekstu.Aby uzyskać więcej informacji zobaczwykonać AS (języka Transact-SQL).

    SETUSER nie zezwala na stos kontekstu wykonania ma zostać utworzony.

Powrót do poprzedniego kontekstu

wykonać JAKO

Użycie PRZYWRACANIE instrukcja, aby powrócić do poprzedniego kontekstu.Wywołujący instrukcja operacji PRZYWRACANIA musi być w tej samej bazy danych, w którym wystąpiło personifikację.

SETUSER

Aby powrócić do poprzedniego kontekstu, należy użyć instrukcja SETUSER bez określania nazwy użytkownika.