Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Funktionsweise von OBJECTPROPERTYEX() in SQL Server

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.