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.