Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak działa OBJECTPROPERTYEX() w SQL Server

W SQL Server OBJECTPROPERTYEX() funkcja zwraca informacje o obiektach o zakresie schematu w bieżącej bazie danych.

Ta funkcja robi dokładnie to samo, co OBJECTPROPERTY() , z tą różnicą, że obsługuje więcej właściwości, a zwracana wartość jest inna. OBJECTPROPERTYEX() funkcja zwraca sql_variant typ, natomiast OBJECTPROPERTY() zwraca int typ.

Składnia

Funkcja przyjmuje dwa argumenty:identyfikator obiektu i właściwość, którą chcesz zwrócić.

OBJECTPROPERTYEX ( id , property )

Przykład 1 – Podstawowe użycie

Oto przykład demonstrujący podstawowe użycie tej funkcji.

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

Wynik:

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

W tym przypadku istnieje obiekt o identyfikatorze 885578193 i to jest stół. BaseType tego obiektu to U.

Przykład 2 – Nazywanie obiektu

W poprzednim przykładzie znałem identyfikator obiektu. W większości przypadków prawdopodobnie znasz tylko nazwę obiektu, ale nie jego identyfikator. W takich przypadkach możesz użyć OBJECT_ID() funkcja, aby uzyskać identyfikator obiektu na podstawie jego nazwy.

Tak:

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

Wynik:

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

Przykład 3 – Więcej właściwości

Oto przykład, który zwraca więcej właściwości, które nie zostaną zwrócone za pomocą 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;

Wynik:

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

W chwili pisania OBJECTPROPERTYEX() funkcja obsługuje 109 właściwości. Zobacz poniżej pełną listę właściwości obsługiwanych przez tę funkcję.

Przykład 4 – W klauzuli WHERE

Możesz użyć OBJECTPROPERTYEX() w WHERE klauzula, jeśli jest wymagana.

W tym przykładzie uruchamiam dwa zapytania:jedno, które zwraca tabele, które mają klucz obcy, i drugie, które zwraca tabele, do których odwołuje się klucz obcy.

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;

Wynik:

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)

Pełna lista właściwości

Oto pełna lista właściwości obsługiwanych przez OBJECTPROPERTYEX() funkcja:

  • Typ podstawowy
  • CnstIsClustKey
  • CnstIsColumn
  • CnstIsDeleteCascade
  • CnstIsWyłączone
  • CnstIsNonclustKey
  • CnstIsNotRepl
  • CnstIsNotTrusted
  • CnstIsUpdateCascade
  • ExecIsAfterTrigger
  • ExecIsAnsiNullsOn
  • ExecIsDeleteTrigger
  • ExecIsFirstDelete Trigger
  • ExecIsFirstInsertTrigger
  • ExecIsFirstUpdateTrigger
  • ExecIsInsertTrigger
  • ExecIsInsteadOfTrigger
  • ExecIsLastDeleteTrigger
  • ExecIsLastInsertTrigger
  • ExecIsLastUpdateTrigger
  • ExecIsQuotedIdentOn
  • ExecIsStartup
  • ExecIsTriggerWyłączone
  • ExecIsTriggerNotForRepl
  • ExecIsUpdateTrigger
  • ExecIsWithNativeCompilation
  • Ma po wyzwoleniu
  • Ma usuwanie wyzwalacza
  • MaInsertTrigger
  • HasInsteadOfTrigger
  • Ma wyzwalacz aktualizacji
  • IsAnsiNullsOn
  • IsCheckCnst
  • Jest ograniczeniem
  • Jest domyślna
  • IsDefaultCnst
  • Jest deterministyczny
  • Jest zaszyfrowany
  • Wykonane
  • IsExtendedProc
  • IsForeignKey
  • Jest indeksowany
  • Jest indeksowalny
  • IsInlineFunction
  • Jest wysyłany
  • Jest precyzyjny
  • IsPrimaryKey
  • Jest procedura
  • Identyfikator jest cytowany
  • W kolejce
  • IsReplProc
  • IsRule
  • IsScalarFunction
  • IsSchemaBound
  • IsSystemTable
  • Zweryfikowano system
  • IsTable
  • IsTableFunction
  • IsTrigger
  • Is UniqueCnst
  • IsUserTable
  • IsView
  • Identyfikator właściciela
  • Identyfikator schematu
  • Dostęp do danych systemowych
  • TableDeleteTrigger
  • TableDeleteTriggerCount
  • TableFullTextMergeStatus
  • TabelaFullTextBackgroundUpdateIndexOn
  • TableFulltextCatalogId
  • TableFullTextChangeTrackingOn
  • TableFulltextDocsProcess
  • TableFulltextFailCount
  • TableFulltextItemCount
  • TableFulltextKeyColumn
  • TableFulltextPendingChanges
  • TableFulltextPopulateStatus
  • TableFullTextSemanticExtraction
  • Tabela ma aktywny indeks pełnotekstowy
  • TableHasCheckCnst
  • TableHasClustIndex
  • TableHasDefaultCnst
  • Tabela ma wyzwalacz usuwania
  • Tabela ma klucz obcy
  • Tabela ma obcy ref
  • TableHasIdentity
  • TableHasIndex
  • TableHasInsertTrigger
  • Tabela ma indeks Nonclust
  • Tabela ma klucz podstawowy
  • TableHasRowGuidCol
  • TabelaHasTextImage
  • Tabela ma znacznik czasu
  • Tabela ma unikalny Cnst
  • TableHasUpdateTrigger
  • Tabela ma format dziesiętny pamięci
  • TableInsertTrigger
  • TableInsertTriggerCount
  • Tabela jest fałszywa
  • TableIsLockedOnBulkLoad
  • TableIsMemoryOptimized
  • Tabela jest przypięta
  • TableTextInRowLimit
  • Table UpdateTrigger
  • TableUpdateTriggerCount
  • Dostęp do danych użytkownika
  • Tabela ma zestaw kolumn
  • Kardynalność
  • TableTemporalType

Zapoznaj się z dokumentacją firmy Microsoft, aby uzyskać szczegółowe wyjaśnienie każdej właściwości.

Zobacz także OBJECTPROPERTY() vs OBJECTPROPERTYEX() aby uzyskać bardziej szczegółowe wyjaśnienie różnic między tymi dwiema funkcjami.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BULK INSERT z kolumną tożsamości (auto-inkrementacja)

  2. Wprowadzenie do SQL Server 2017

  3. SQL Server String lub dane binarne zostaną obcięte

  4. TDS Server — używaj instrukcji Transact-SQL (T-SQL) do pracy z danymi Salesforce w SQL Server

  5. Interfejsy sieciowe programu SQL Server:ciąg połączenia jest nieprawidłowy [87]