sql >> Database >  >> RDS >> Sqlserver

Hoe OBJECTPROPERTYEX() werkt in SQL Server

In SQL Server, de OBJECTPROPERTYEX() functie retourneert informatie over objecten met een schema in de huidige database.

Deze functie doet precies hetzelfde als OBJECTPROPERTY() , behalve dat het meer eigenschappen ondersteunt en de geretourneerde waarde anders is. De OBJECTPROPERTYEX() functie retourneert een sql_variant type, terwijl OBJECTPROPERTY() retourneert een int typ.

Syntaxis

De functie accepteert twee argumenten:de ID van het object en de eigenschap die u wilt retourneren.

OBJECTPROPERTYEX ( id , property )

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld om het basisgebruik van deze functie te demonstreren.

SELECT OBJECTPROPERTYEX('885578193', 'BaseType') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| U        |
+----------+

In dit geval is er een object met een ID van 885578193 en het is een tafel. Het BaseType van dit object is U.

Voorbeeld 2 – Het object een naam geven

In het vorige voorbeeld kende ik de ID van het object. In de meeste gevallen weet u waarschijnlijk alleen de naam van het object, maar niet de ID. In dergelijke gevallen kunt u de OBJECT_ID() . gebruiken functie om de ID van het object te krijgen, gebaseerd op de naam.

Zoals dit:

SELECT OBJECTPROPERTYEX(OBJECT_ID(N'Artists'), 'BaseType') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| U        |
+----------+

Voorbeeld 3 – Meer eigenschappen

Hier is een voorbeeld dat meer van de eigenschappen retourneert die u niet terugkrijgt met OBJECTPROPERTY() .

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;

Resultaat:

+------------+-------------+--------------------+------------------+
| BaseType   | IsPrecise   | SystemDataAccess   | UserDataAccess   |
|------------+-------------+--------------------+------------------|
| IF         | 0           | 1                  | 1                |
+------------+-------------+--------------------+------------------+

Op het moment van schrijven is de OBJECTPROPERTYEX() functie ondersteunt 109 eigenschappen. Zie hieronder voor een volledige lijst van eigenschappen die door deze functie worden ondersteund.

Voorbeeld 4 – In een WHERE-clausule

U kunt OBJECTPROPERTYEX() . gebruiken in een WHERE clausule indien nodig.

In dit voorbeeld voer ik twee query's uit:een die tabellen retourneert met een externe sleutel en een die tabellen retourneert waarnaar wordt verwezen door een externe sleutel.

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;

Resultaat:

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)

Volledige lijst van eigendommen

Hier is een volledige lijst met eigenschappen die worden ondersteund door de OBJECTPROPERTYEX() functie:

  • Basistype
  • CnstIsClustKey
  • CnstIsColumn
  • CnstIsDeleteCascade
  • CnstIsDisabled
  • CnstIsNonclustKey
  • CnstIsNotRepl
  • CnstIsNotTrusted
  • CnstIsUpdateCascade
  • ExecIsAfterTrigger
  • ExecIsAnsiNullsOn
  • ExecIsDeleteTrigger
  • ExecIsFirstDeleteTrigger
  • ExecIsFirstInsertTrigger
  • ExecIsFirstUpdateTrigger
  • ExecIsInsertTrigger
  • ExecIsInsteadOfTrigger
  • ExecIsLastDeleteTrigger
  • ExecIsLastInsertTrigger
  • ExecIsLastUpdateTrigger
  • ExecIsQuotedIdentOn
  • ExecIsStartup
  • ExecIsTriggerDisabled
  • ExecIsTriggerNotForRepl
  • ExecIsUpdateTrigger
  • ExecIsWithNativeCompilation
  • HasAfterTrigger
  • HasDeleteTrigger
  • HasInsertTrigger
  • HasInsteadOfTrigger
  • HasUpdateTrigger
  • IsAnsiNullsOn
  • IsCheckCnst
  • IsConstraint
  • IsDefault
  • IsDefaultCnst
  • IsDeterministisch
  • IsEncrypted
  • IsUitgevoerd
  • IsExtendedProc
  • IsForeignKey
  • IsIndexed
  • IsIndexable
  • IsInlineFunction
  • IsMSShipped
  • IsPrecise
  • IsPrimaryKey
  • IsProcedure
  • IsQuotedIdentOn
  • IsQueue
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • IsSystemVerified
  • IsTable
  • IsTableFunction
  • IsTrigger
  • IsUniqueCnst
  • IsUserTable
  • IsView
  • OwnerId
  • SchemaId
  • SystemDataAccess
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TableFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TableFullTextChangeTrackingOn
  • TableFulltextDocsProcessed
  • TableFulltextFailCount
  • TableFulltextItemCount
  • TableFulltextKeyColumn
  • TableFulltextPendingChanges
  • TableFulltextPopulateStatus
  • TableFullTextSemanticExtraction
  • TableHasActiveFulltextIndex
  • TableHasCheckCnst
  • TableHasClustIndex
  • TableHasDefaultCnst
  • TableHasDeleteTrigger
  • TableHasForeignKey
  • TableHasForeignRef
  • TableHasIdentity
  • TableHasIndex
  • TableHasInsertTrigger
  • TableHasNonclustIndex
  • TableHasPrimaryKey
  • TableHasRowGuidCol
  • TableHasTextImage
  • TableHasTimestamp
  • TableHasUniqueCnst
  • TableHasUpdateTrigger
  • TableHasVarDecimalStorageFormat
  • TableInsertTrigger
  • TableInsertTriggerCount
  • TableIsFake
  • TableIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • TableIsPinned
  • TableTextInRowLimit
  • TableUpdateTrigger
  • TableUpdateTriggerCount
  • Gebruikersgegevenstoegang
  • TableHasColumnSet
  • Kardinaliteit
  • TableTemporalType

Zie de Microsoft-documentatie voor een gedetailleerde uitleg van elke eigenschap.

Zie ook OBJECTPROPERTY() vs OBJECTPROPERTYEX() voor een meer gedetailleerde uitleg van de verschillen tussen deze twee functies.


  1. Hoe NU() werkt in MariaDB

  2. Hoe kan ik deze opmerkingen in een MySQL-dump verwijderen?

  3. Gegevens exporteren uit een MySQL-database

  4. Toegang tot het SQL Server-exemplaar herstellen zonder opnieuw op te starten