Używając jako wykonywanie modułów

JAK wykonywanie umożliwia zdefiniowanie kontekstu wykonanie następujących modułów zdefiniowanych przez użytkownika: funkcji, procedur, kolejek i wyzwalaczy.Na przykład w kontekście wykonywania mogą być przełączane od rozmówcy moduł właściciela modułu lub określonego użytkownika.W starszych wersjach SQL Server, wykonać tych modułów, zawsze w kontekście wywołującego modułu.

Określając kontekstu, w którym wykonywane jest moduł, którego konta użytkownika można sterować Aparat baz danych używa do sprawdzania uprawnień na obiektach, które odwołuje się moduł.Zapewnia elastyczność i kontrolę w Zarządzanie uprawnieniami całej łańcucha obiektu, który istnieje między modułów zdefiniowanych przez użytkownika i obiekty odwołuje się tych modułów.Użytkownicy modułu potrzebują jedynie uprawnień do wykonać moduł; jawne uprawnienia do obiektów nie są wymagane.Tylko moduł działa jako użytkownik musi mieć uprawnienia do obiektów, które są dostępne przez moduł.

WYKONANIE JAKO OBIEKT WYWOŁUJĄCY

WYKONYWANIE WYWOŁUJĄCEGO jako Określa, że instrukcje wewnątrz modułu są wykonywane w kontekście wywołującego modułu.

Należy wykonać WYWOŁUJĄCEGO jako w następujących scenariuszach:

  • Chcesz, aby instrukcje w module wykonać jako użytkownik wywołujący.

  • Chcesz oprzeć kontroli uprawnień dla instrukcji w module przeciwko użytkownika wywołującego i polegać wyłącznie na własność instalacjami do pominięcia sprawdzania uprawnień dla obiektów podstawowych.Należy pamiętać, że tworzenie łańcucha własności dotyczy wyłącznie DML instrukcji.Aby uzyskać więcej informacji na temat Tworzenie łańcucha własności, zobacz Łańcuchy własności.

  • Aplikacja nie wymaga ukrywania podstawowej odwołuje się do obiektów od użytkownika lub tylko obiekty odniesienia te same własności i dlatego może polegać na własność instalacjami zapewniające ukrywanie schematu.

  • Potrzeba zachowania programu SQL Server 2000.

WYKONANIE jako scenariusza ROZMÓWCY

Maria tworzy procedura składowana, która odwołuje się do tabela, użytkownik nie jest właścicielem, ale ma uprawnienia SELECT na.Określa ona EXECUTE AS CALLER w CREATE PROCEDURE instrukcja, jak w poniższym przykładzie:

CREATE PROCEDURE AccessTable
WITH EXECUTE AS CALLER
AS SELECT * FROM dbo.SomeTable;

Maria następnie udziela uprawnienia wykonywania na procedura składowana Scott.Gdy Scott wykonuje procedura składowana Aparat baz danych sprawdza, czy ma on (wywołujący) uprawnienia do wykonać procedura składowana.Scott ma uprawnienie Wykonywanie, ale ponieważ Maria nie jest właścicielem tabela występującej Aparat baz danych sprawdza, czy Scott ma uprawnienia w tabela.Jeśli Scott nie ma uprawnień, instrukcja procedura składowana nie powiedzie się.

WYKONYWANIE jako nazwa_użytkownika

WYKONYWANIE jako user_name, określa wykonać instrukcje wewnątrz modułu w kontekście użytkownika określonego w user_name.

Używane jako wykonanie user_name w następujących scenariuszach:

  • Ma instrukcji w module, aby wykonać w kontekście określonego użytkownika.

  • Nie można polegać na tworzenie łańcucha własności (uzyskuje dostęp na przykład moduł do obiektów z różnych własności) Aby ukryć podstawowej schematu i chcesz uniknąć udzielanie uprawnień na te obiekty.

  • Chcesz utworzyć zestaw niestandardowych uprawnień.Na przykład aby zapewnić uprawnienia DDL operacji, których uprawnienia nie zwykle przyznawana.Aby uzyskać więcej informacji, zobacz Aby utworzyć niestandardowe zestawy uprawnień przy użyciu jako wykonywanie.

    Ostrzeżenie

    Użytkownik, który został określony jako kontekst wykonywania modułu nie można usunąć, dopóki kontekstu wykonania tego modułu została zmieniona.

Nazwa_użytkownika EXECUTE jako scenariusza

Maria tworzy procedura składowana, która odwołuje się do tabela, użytkownik nie jest właścicielem, ale ma uprawnienia SELECT na.Określa ona EXECUTE AS 'Mary' w CREATE PROCEDURE instrukcja, jak w poniższym przykładzie:

CREATE PROCEDURE AccessMyTable
WITH EXECUTE AS 'Mary'
AS SELECT * FROM dbo.MyTable;

Scott Maria udziela uprawnienia Wykonywanie procedura składowana.Gdy Scott wykonuje procedura składowana Aparat baz danych sprawdza, czy ma on uprawnienia do wykonać procedura składowana; jednak sprawdzane są uprawnienia dla tabela, Maria.W tym scenariuszu mimo że Scott bezpośrednio uprawnień zaznacz w tabela on mają dostęp do danych poprzez procedurę, ponieważ Maria, w którego kontekście działa procedura ma uprawnienia dostępu do danych w tabela.

WYKONANIE JAKO SELF

WYKONANIE SELF jako jest równoważne EXECUTE jako user_name, gdzie określony użytkownik jest osobą, tworzenia lub modyfikowania modułu.

Należy wykonać SAMODZIELNĄ jak w następujących scenariuszach:

  • Chcesz określająca użytkownika, w którego kontekście chcesz uruchomić instrukcji modułu tworzonego lub modyfikowanego do uruchamiania jako skrót.

  • Aplikacja tworzy modułów dla wywołania do niej użytkowników i trzeba, aby utworzone przy użyciu tych użytkowników w kontekście wykonywania tych modułów.W tym scenariuszu nie wiadomo na projekt czas jest nazwa użytkownika wywołującego.

WYKONANIE JAKO WŁAŚCICIEL

WYKONYWANIE jako właściciel określa instrukcje wewnątrz modułu jest wykonywany w kontekście bieżącego właściciela modułu.Jeśli moduł nie ma określonego właściciela, właściciel schematu moduł jest używany.

Należy wykonać jako właściciela w następującej sytuacji:

  • Chcesz można zmienić właściciela modułu bez konieczności modyfikowania samego modułu.Oznacza to, że właściciel automatycznie mapuje do bieżącego właściciela modułu przy uruchomieniu czas.

WŁAŚCICIEL jest jawne właściciela modułu lub, jeśli nie jest jawne właściciela, właściciel schematu modułu na czas moduł jest wykonywany.WŁAŚCICIEL musi być kontem singleton i nie grupy lub roli.Nie można zmienić własności modułu Grupa lub rola, moduł określa wykonanie jako właściciela i ma właściciela jawne.Nie można zmienić własność schematu do roli lub grupy, zawiera moduł, który określa wykonanie jako właściciela i moduły nie ma wyraźnego właściciela.

WYKONANIE jako właściciel scenariusz

Maria tworzy procedura składowana, która odwołuje się do tabela, który użytkownik jest właścicielem.Określa ona EXECUTE AS OWNER w CREATE PROCEDURE instrukcja, jak w poniższym przykładzie:

CREATE PROCEDURE Mary.AccessMyTable
WITH EXECUTE AS OWNER
AS SELECT * FROM Mary.MyTable;

Scott Maria udziela uprawnienia Wykonywanie procedura składowana.Gdy Scott wykonuje procedura składowana Aparat baz danych sprawdza, czy ma on uprawnienia do wykonać procedura składowana; jednak uprawnień dla tabela są sprawdzane pod kątem Maria, ponieważ jest bieżący właściciel procedury.Maria zdecyduje się pozostawić firmy i zmienia własność procedury i tabela Tomowi.Scott wykonuje procedura składowana po zmianie własności, posiada nadal mieć dostęp do danych poprzez procedurę ponieważ Tomowi właściciela jest automatycznie mapowane.