sys.objects (Transact-SQL)

Enthält eine Zeile für jedes benutzerdefinierte Objekt mit Schemabereich, das in einer Datenbank erstellt wird.

HinweisHinweis

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