OBJECTPROPERTYEX (Transact-SQL)
Aktualisiert: 12. Dezember 2006
Gibt Informationen zu Objekten mit Schemabereich der aktuellen Datenbank zurück. Eine Liste dieser Objekte finden Sie unter sys.objects (Transact-SQL). OBJECTPROPERTYEX kann nicht für Objekte verwendet werden, die keine Objekte mit Schemabereich sind, wie z. B. Trigger der Datendefinitionssprache (DDL, Data Definition Language) und Ereignisbenachrichtigungen.
Transact-SQL-Syntaxkonventionen
Syntax
OBJECTPROPERTYEX ( id , property )
Argumente
- id
Ein Ausdruck, der die ID des Objekts in der aktuellen Datenbank darstellt. id ist vom Datentyp int. Es wird davon ausgegangen, dass es sich hierbei um ein Objekt mit Schemabereich im aktuellen Datenbankkontext handelt.
property
Ein Ausdruck, der die Informationen enthält, die für das durch id angegebene Objekt zurückgegeben werden sollen. Der Rückgabetyp ist sql_variant. Die folgende Tabelle zeigt den Basisdatentyp für jeden Eigenschaftswert.Hinweis: Sofern nichts anderes angegeben ist, wird NULL zurückgegeben, wenn property kein gültiger Eigenschaftsname ist, id keine gültige Objekt-ID ist, id ein nicht unterstützter Objekttyp für den angegebenen Wert von property ist oder der Aufrufer nicht über die Berechtigung zum Anzeigen der Metadaten des Objekts verfügt. Eigenschaftsname
Rückgabetypen
sql_variant
Ausnahmen
Gibt NULL bei einem Fehler zurück oder wenn ein Aufrufer nicht über Berechtigungen zum Anzeigen des Objekts verfügt.
In SQL Server 2005 kann ein Benutzer nur die Metadaten sicherungsfähiger Elemente anzeigen, bei denen der Benutzer entweder der Besitzer ist oder für die dem Benutzer eine Berechtigung erteilt wurde. Dies bedeutet, dass Metadaten ausgebende integrierte Funktionen, z. B. OBJECTPROPERTYEX, möglicherweise NULL zurückgeben, wenn dem Benutzer für das Objekt keine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Konfigurieren der Sichtbarkeit von Metadaten und unter Behandlung von Problemen bei der Sichtbarkeit von Metadaten.
Hinweise
Datenbankmodul setzt voraus, dass sich object_id im aktuellen Datenbankkontext befindet. Eine Abfrage, die auf einen Wert von object_id in einer anderen Datenbank verweist, gibt NULL oder falsche Ergebnisse zurück. Beispielsweise ist der aktuelle Datenbankkontext in der folgenden Abfrage die master
-Datenbank. Datenbankmodul versucht, den Eigenschaftswert für den angegebenen Wert von object_id in dieser Datenbank statt in der Datenbank, die in der Abfrage angegeben ist, zurückzugeben. Die Abfrage gibt falsche Ergebnisse zurück, da sich die vEmployee
-Sicht nicht in der master
-Datenbank befindet.
USE master;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView');
GO
OBJECTPROPERTYEX(view_id**,'IsIndexable'**) hat möglicherweise einen hohen Verbrauch an Computerressourcen, da die Auswertung der IsIndexable-Eigenschaft das Analysieren der Sichtdefinition, die Normalisierung und die partielle Optimierung erfordert. Obwohl die IsIndexable-Eigenschaft Tabellen oder Sichten identifiziert, die indiziert werden können, kann die tatsächliche Erstellung des Indexes dennoch fehlschlagen, wenn bestimmte Indexschlüsselanforderungen nicht erfüllt sind. Weitere Informationen finden Sie unter CREATE INDEX (Transact-SQL).
OBJECTPROPERTYEX (table_id**,'TableHasActiveFulltextIndex'**) gibt den Wert 1 (True) zurück, wenn mindestens eine Spalte einer Tabelle für die Indizierung hinzugefügt wurde. Die Volltextindizierung wird für das Auffüllen aktiviert, sobald die erste Spalte für die Indizierung hinzugefügt wird.
Einschränkungen für die Sichtbarkeit von Metadaten werden auf das Resultset angewendet. Weitere Informationen finden Sie unter Konfigurieren der Sichtbarkeit von Metadaten.
Beispiele
A. Suchen des Basistyps eines Objekts
Im folgenden Beispiel wird mithilfe von SYNONYM MyEmployeeTable
ein Synonym für die Employee
-Tabelle in der AdventureWorks
-Datenbank erstellt und anschließend der Basistyp von SYNONYM zurückgegeben.
USE AdventureWorks;
GO
CREATE SYNONYM MyEmployeeTable FOR HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX ( object_id(N'MyEmployeeTable'), N'BaseType')AS [Base Type];
GO
Das Resultset zeigt, dass es sich bei dem Basistyp des zugrunde liegenden Objekts, der Employee
-Tabelle, um eine Benutzertabelle handelt.
Base Type
--------
U
B. Zurückgeben eines Eigenschaftswertes
Im folgenden Beispiel wird die Anzahl der UPDATE-Trigger für die angegebene Tabelle zurückgegeben.
USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'HumanResources.Employee'), N'TABLEUPDATETRIGGERCOUNT');
GO
C. Suchen von Tabellen, die eine FOREIGN KEY-Einschränkung aufweisen
Im folgenden Beispiel wird die TableHasForeignKey
-Eigenschaft verwendet, um alle Tabellen zurückzugeben, die eine FOREIGN KEY-Einschränkung aufweisen.
USE AdventureWorks;
GO
SELECT name, object_id, schema_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTYEX(object_id, N'TableHasForeignKey') = 1
ORDER BY name;
GO
Siehe auch
Verweis
CREATE SYNONYM (Transact-SQL)
Metadatenfunktionen (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)
OBJECT_NAME (Transact-SQL)
sys.objects (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)
Andere Ressourcen
Trennung von Benutzer und Schema
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
12. Dezember 2006 |
|
17. Juli 2006 |
|
05. Dezember 2005 |
|