Anzeigen von Objektdefinitionen

Die Regeln für das Anzeigen des Transact-SQL-Quellcodes von Datenbankobjekten sind strenger als für das Anzeigen von Metadaten. Für das Anzeigen der Transact-SQL-Definition eines Objekts muss ein Benutzer das Objekt entweder besitzen, oder ihm muss eine der folgenden Berechtigungen für das Objekt erteilt worden sein:

  • CONTROL

  • ALTER

  • TAKE OWNERSHIP

  • VIEW DEFINITION

Es folgen einige Beispiele für die Funktionsweise dieser Regeln:

  • Wurde einem Benutzer die ALTER-Berechtigung für die myTable-Tabelle erteilt, kann der Benutzer die Transact-SQL-Definition der mit der Tabelle in Zusammenhang stehenden Unterkomponenten in der definition-Spalte in den in der folgenden Tabelle aufgelisteten Katalogsichten anzeigen. Verfügt ein Benutzer über keine der genannten Berechtigungen oder besitzt das Objekt nicht, ist die Transact-SQL-Definition in der definition-Spalte der Katalogsicht NULL.

  • Ist der Benutzer nicht der Besitzer der myTable-Tabelle und wurde ihm nur die SELECT-Berechtigung für die Tabelle erteilt, weisen die definition-Spalten den Wert NULL auf, wenn er auf die folgenden Katalogsichten zugreift.

    Name der Katalogsicht

    Transact-SQL-Definitionen für:

    sys.sql_modules

    Alle Trigger in mytable

    sys.computed_columns

    Alle berechneten Spalten in myTable

    sys.check_constraints

    Alle CHECK-Einschränkungen in myTable

    sys.default_constraints

    Alle DEFAULT-Einschränkungen in myTable

  • Angenommen, einem Benutzer wird die EXECUTE-Berechtigung für die myProcedure-Prozedur erteilt. Wenn der Benutzer versucht, die Transact-SQL-Definition der Prozedur anzuzeigen, indem er auf die sys.sql_modules-Katalogsicht zugreift, weist die definition-Spalte den Wert NULL auf. Wenn dem Benutzer im umgekehrten Fall die TAKE OWNERSHIP-Berechtigung für myProcedure erteilt wurde, wird ihm die Transact-SQL-Definition der Prozedur in der definition-Spalte von sys.sql_modules angezeigt.