sys.objects (Transact-SQL)
Enthält eine Zeile für jedes benutzerdefinierte Objekt mit Schemabereich, das in einer Datenbank erstellt wird.
Hinweis |
---|
sys.objects zeigt keine DDL-Trigger an, da diese keine Schemabereiche besitzen. Alle Trigger, sowohl DML- als auch DDL-Trigger, sind in sys.triggers zu finden. sys.triggers unterstützt eine Mischung von Namensbereichsregeln für die verschiedenen Arten von Triggern. |
Spaltenname |
Datentyp |
Beschreibung |
---|---|---|
name |
sysname |
Objektname. |
object_id |
int |
Objekt-ID. Eindeutig innerhalb der Datenbank. |
principal_id |
int |
ID des einzelnen Besitzers, sofern es sich bei diesem nicht um den Schemabesitzer handelt. Standardmäßig befinden sich die in Schemas enthaltenen Objekte im Besitz des Schemabesitzers. Mit der ALTER AUTHORIZATION-Anweisung kann jedoch ein anderer Besitzer angegeben werden. Ist NULL, wenn kein alternativer einzelner Besitzer vorhanden ist. Ist NULL, wenn der Objekttyp einer der folgenden ist: C = CHECK-Einschränkung D = DEFAULT (Einschränkung oder eigenständig) F = FOREIGN KEY-Einschränkung PK = PRIMARY KEY-Einschränkung R = Regel (vom alten Typ, eigenständig) TA = Assemblytrigger (CLR-Integration) TR = SQL-Trigger UQ = UNIQUE-Einschränkung |
schema_id |
int |
Die ID des Schemas, in dem das Objekt enthalten ist. Systemobjekte mit Schemabereich sind immer in den sys-Schemas oder INFORMATION_SCHEMA-Schemas enthalten. |
parent_object_id |
int |
ID des Objekts, zu dem dieses Objekt gehört. 0 = Kein untergeordnetes Objekt. |
type |
char(2) |
Objekttyp: AF = Aggregatfunktion (CLR) C = CHECK-Einschränkung D = DEFAULT (Einschränkung oder eigenständig) F = FOREIGN KEY-Einschränkung FN = SQL-Skalarfunktion FS = Assemblyskalarfunktion (CLR) FT = Assembly-Tabellenwertfunktion (CLR) IF = SQL-Inlinefunktion mit Tabellenrückgabe IT = Interne Tabelle P = Gespeicherte SQL-Prozedur PC = Gespeicherte Assemblyprozedur (CLR) PG = Planhinweisliste PK = PRIMARY KEY-Einschränkung R = Regel (vom alten Typ, eigenständig) RF = Replikationsfilterprozedur S = Systembasistabelle SN = Synonym SQ = Dienstwarteschlange TA = Assembly-DML-Trigger (CLR) TF = Tabellenwertfunktion von SQL TR = SQL-DML-Trigger TT = Tabellentyp U = Tabelle (benutzerdefiniert) UQ = UNIQUE-Einschränkung V = Sicht X = Erweiterte gespeicherte Prozedur |
type_desc |
nvarchar(60) |
Beschreibung des Objekttyps: AGGREGATE_FUNCTION CHECK_CONSTRAINT DEFAULT_CONSTRAINT FOREIGN_KEY_CONSTRAINT SQL_SCALAR_FUNCTION CLR_SCALAR_FUNCTION CLR_TABLE_VALUED_FUNCTION SQL_INLINE_TABLE_VALUED_FUNCTION INTERNAL_TABLE SQL_STORED_PROCEDURE CLR_STORED_PROCEDURE PLAN_GUIDE PRIMARY_KEY_CONSTRAINT RULE REPLICATION_FILTER_PROCEDURE SYSTEM_TABLE SYNONYM SERVICE_QUEUE CLR_TRIGGER SQL_TABLE_VALUED_FUNCTION SQL_TRIGGER TABLE_TYPE USER_TABLE UNIQUE_CONSTRAINT VIEW EXTENDED_STORED_PROCEDURE |
create_date |
datetime |
Datum, an dem das Objekt erstellt wurde. |
modify_date |
datetime |
Datum der letzten Änderung des Objekts mithilfe einer ALTER-Anweisung. Ist das Objekt eine Tabelle oder Sicht, wird modify_date auch geändert, wenn ein gruppierter Index für die Tabelle oder Sicht erstellt oder geändert wird. |
is_ms_shipped |
bit |
Objekt wurde von einer internen SQL Server-Komponente erstellt. |
is_published |
bit |
Objekt wurde veröffentlicht. |
is_schema_published |
bit |
Nur das Schema des Objekts wird veröffentlicht. |
Hinweise
Sie können die integrierten Funktionen OBJECT_ID, OBJECT_NAME und OBJECTPROPERTY() auf die in sys.objects angezeigten Objekte anwenden.
Es gibt eine Version dieser Sicht mit demselben Schema, namens sys.system_objects, in der Systemobjekte angezeigt werden. In einer anderen Sicht, sys.all_objects, werden System- und Benutzerobjekte angezeigt. Alle drei Katalogsichten weisen die gleiche Struktur auf.
In dieser Version von SQL Server wird ein erweiterter Index, beispielsweise ein XML-Index oder Räumlichkeitsindex, als interne Tabelle in sys.objects (type = IT and type_desc = INTERNAL_TABLE) betrachtet. Für einen erweiterten Index gilt:
name ist der interne Name der Indextabelle.
parent_object_id ist der object_id-Wert der Basistabelle.
Die Spalten is_ms_shipped, is_published und is_schema_published werden auf 0 festgelegt.
Berechtigungen
In SQL Server 2005 und späteren Versionen ist die Sichtbarkeit der Metadaten in Katalogsichten auf sicherungsfähige Elemente eingeschränkt, bei denen der Benutzer entweder der Besitzer ist oder für die dem Benutzer eine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Konfigurieren der Sichtbarkeit von Metadaten.
Beispiele
A. Zurückgeben aller Objekte, die in den letzten N Tagen geändert wurden
Vor dem Ausführen der folgenden Abfrage ersetzen Sie <database_name> und <n_days> durch gültige Werte.
USE <database_name>;
GO
SELECT name AS object_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE modify_date > GETDATE() - <n_days>
ORDER BY modify_date;
GO
B. Zurückgeben der Parameter für eine angegebene gespeicherte Prozedur oder Funktion
Ersetzen Sie vor dem Ausführen der folgenden Abfrage <database_name> und <schema_name.object_name> durch gültige Namen.
USE <database_name>;
GO
SELECT SCHEMA_NAME(schema_id) AS schema_name
,o.name AS object_name
,o.type_desc
,p.parameter_id
,p.name AS parameter_name
,TYPE_NAME(p.user_type_id) AS parameter_type
,p.max_length
,p.precision
,p.scale
,p.is_output
FROM sys.objects AS o
INNER JOIN sys.parameters AS p ON o.object_id = p.object_id
WHERE o.object_id = OBJECT_ID('<schema_name.object_name>')
ORDER BY schema_name, object_name, p.parameter_id;
GO
C. Zurückgeben aller benutzerdefinierten Funktionen in einer Datenbank
Vor dem Ausführen der folgenden Abfrage ersetzen Sie <database_name> durch einen gültigen Datenbanknamen.
USE <database_name>;
GO
SELECT name AS function_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE type_desc LIKE '%FUNCTION%';
GO
D. Zurückgeben des Besitzers der einzelnen Objekte in einem Schema
Vor dem Ausführen der folgenden Abfrage ersetzen Sie alle Vorkommen von <database_name> und <schema_name> durch gültige Namen.
USE <database_name>;
GO
SELECT 'OBJECT' AS entity_type
,USER_NAME(OBJECTPROPERTY(object_id, 'OwnerId')) AS owner_name
,name
FROM sys.objects WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'TYPE' AS entity_type
,USER_NAME(TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId')) AS owner_name
,name
FROM sys.types WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'XML SCHEMA COLLECTION' AS entity_type
,COALESCE(USER_NAME(xsc.principal_id),USER_NAME(s.principal_id)) AS owner_name
,xsc.name
FROM sys.xml_schema_collections AS xsc JOIN sys.schemas AS s
ON s.schema_id = xsc.schema_id
WHERE s.name = '<schema_name>';
GO
Siehe auch