In SQL Server das OBJECTPROPERTYEX()
Funktion gibt Informationen über schemabezogene Objekte in der aktuellen Datenbank zurück.
Diese Funktion macht genau dasselbe wie OBJECTPROPERTY()
, außer dass mehr Eigenschaften unterstützt werden und der Rückgabewert unterschiedlich ist. Das OBJECTPROPERTYEX()
Funktion gibt eine sql_variant zurück type, wohingegen OBJECTPROPERTY()
gibt ein int zurück Typ.
Syntax
Die Funktion akzeptiert zwei Argumente:die ID des Objekts und die Eigenschaft, die Sie zurückgeben möchten.
OBJECTPROPERTYEX ( id , property )
Beispiel 1 – Grundlegende Verwendung
Hier ist ein Beispiel, um die grundlegende Verwendung dieser Funktion zu demonstrieren.
SELECT OBJECTPROPERTYEX('885578193', 'BaseType') AS Result;
Ergebnis:
+----------+ | Result | |----------| | U | +----------+
In diesem Fall gibt es ein Objekt mit der ID 885578193
und es ist ein tisch. Der Basistyp dieses Objekts ist U.
Beispiel 2 – Benennen des Objekts
Im vorherigen Beispiel kannte ich die ID des Objekts. In den meisten Fällen kennen Sie wahrscheinlich nur den Namen des Objekts, aber nicht seine ID. In solchen Fällen können Sie die OBJECT_ID()
verwenden Funktion, um die ID des Objekts basierend auf seinem Namen abzurufen.
So:
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'Artists'), 'BaseType') AS Result;
Ergebnis:
+----------+ | Result | |----------| | U | +----------+
Beispiel 3 – Weitere Eigenschaften
Hier ist ein Beispiel, das mehr Eigenschaften zurückgibt, die Sie mit OBJECTPROPERTY()
nicht zurückgeben .
USE WideWorldImportersDW; DECLARE @objectId int = OBJECT_ID(N'Integration.GenerateDateDimensionColumns'); SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType, OBJECTPROPERTYEX(@objectId, 'IsPrecise') AS IsPrecise, OBJECTPROPERTYEX(@objectId, 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') AS UserDataAccess;
Ergebnis:
+------------+-------------+--------------------+------------------+ | BaseType | IsPrecise | SystemDataAccess | UserDataAccess | |------------+-------------+--------------------+------------------| | IF | 0 | 1 | 1 | +------------+-------------+--------------------+------------------+
Zum Zeitpunkt des Schreibens ist das OBJECTPROPERTYEX()
Funktion unterstützt 109 Eigenschaften. Nachfolgend finden Sie eine vollständige Liste der von dieser Funktion unterstützten Eigenschaften.
Beispiel 4 – In einer WHERE-Klausel
Sie können OBJECTPROPERTYEX()
verwenden in einem WHERE
Klausel, falls erforderlich.
In diesem Beispiel führe ich zwei Abfragen aus:eine, die Tabellen zurückgibt, die einen Fremdschlüssel haben, und eine, die Tabellen zurückgibt, auf die von einem Fremdschlüssel verwiesen wird.
USE Music; SELECT SCHEMA_NAME(schema_id) AS [Schema], name AS [Table] FROM sys.tables WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignKey') = 1; SELECT SCHEMA_NAME(schema_id) AS [Schema], name AS [Table] FROM sys.tables WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignRef') = 1;
Ergebnis:
Changed database context to 'Music'. +----------+---------+ | Schema | Table | |----------+---------| | dbo | Artists | | dbo | Albums | +----------+---------+ (2 rows affected) +----------+---------+ | Schema | Table | |----------+---------| | dbo | Artists | | dbo | Genres | | dbo | Country | +----------+---------+ (3 rows affected)
Vollständige Liste der Eigenschaften
Hier ist eine vollständige Liste der Eigenschaften, die von OBJECTPROPERTYEX()
unterstützt werden Funktion:
- Basistyp
- CnstIsClustKey
- CnstIsColumn
- CnstIsDeleteCascade
- CnstIsDisabled
- CnstIsNonclustKey
- CnstIsNotRepl
- CnstIsNotTrusted
- CnstIsUpdateCascade
- ExecIsAfterTrigger
- ExecIsAnsiNullsOn
- ExecIsDeleteTrigger
- ExecIsFirstDeleteTrigger
- ExecIsFirstInsertTrigger
- ExecIsFirstUpdateTrigger
- ExecIsInsertTrigger
- ExecIsStattTrigger
- ExecIsLastDeleteTrigger
- ExecIsLastInsertTrigger
- ExecIsLastUpdateTrigger
- ExecIsQuotedIdentOn
- ExecIsStartup
- ExecIsTriggerDisabled
- ExecIsTriggerNotForRepl
- ExecIsUpdateTrigger
- ExecIsWithNativeCompilation
- HatAfterTrigger
- HatDeleteTrigger
- HatInsertTrigger
- HatStattTrigger
- HatUpdateTrigger
- IstAnsiNullsOn
- IsCheckCnst
- IstEinschränkung
- IstStandard
- IstDefaultCnst
- Ist deterministisch
- Istverschlüsselt
- Wird ausgeführt
- IsExtendedProc
- IstFremdschlüssel
- Ist indiziert
- IstIndexierbar
- IstInlineFunktion
- WirdMSVersendet
- IstPräzise
- IstPrimaryKey
- IstProzedur
- IsQuotedIdentOn
- IstWarteschlange
- IstReplProc
- IstRegel
- IsScalarFunction
- IsSchemaBound
- IstSystemTabelle
- IstSystemverifiziert
- IstTabelle
- IstTableFunction
- IstTrigger
- IsUniqueCnst
- IstBenutzertabelle
- IsView
- Eigentümer-ID
- SchemaId
- Systemdatenzugriff
- TableDeleteTrigger
- TableDeleteTriggerCount
- TableFullTextMergeStatus
- TableFullTextBackgroundUpdateIndexOn
- TableFulltextCatalogId
- TableFullTextChangeTrackingOn
- TableFulltextDocsProcessed
- TableFulltextFailCount
- TableFulltextItemCount
- TableFulltextKeyColumn
- TableFulltextPendingChanges
- TableFulltextPopulateStatus
- TableFullTextSemanticExtraction
- TableHasActiveFulltextIndex
- TableHasCheckCnst
- TableHasClustIndex
- TableHasDefaultCnst
- TableHasDeleteTrigger
- Tabelle hatFremdschlüssel
- TableHasForeignRef
- TableHasIdentity
- TableHasIndex
- TableHasInsertTrigger
- TableHasNonclustIndex
- TableHasPrimaryKey
- TableHasRowGuidCol
- TableHasTextImage
- TableHasTimestamp
- TableHasUniqueCnst
- TableHasUpdateTrigger
- TableHasVarDecimalStorageFormat
- TableInsertTrigger
- TableInsertTriggerCount
- TableIsFake
- TableIsLockedOnBulkLoad
- TableIsMemoryOptimized
- TableIsPinned
- TableTextInRowLimit
- TableUpdateTrigger
- TableUpdateTriggerCount
- Benutzerdatenzugriff
- TableHasColumnSet
- Kardinalität
- TableTemporalType
Eine detaillierte Erklärung jeder Eigenschaft finden Sie in der Microsoft-Dokumentation.
Siehe auch OBJECTPROPERTY()
vs OBJECTPROPERTYEX()
für eine ausführlichere Erläuterung der Unterschiede zwischen diesen beiden Funktionen.