Udostępnij za pośrednictwem


Nazwa_obiektu (Transact-SQL)

Zwraca nazwę obiektu bazy danych dla obiektów o zakresie schematu.Lista obiektów o zakresie schematu, zobacz sys.Objects (Transact-SQL).

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

OBJECT_NAME ( object_id [, database_id ] )

Argumenty

  • object_id
    Jest to identyfikator obiektu ma być używany.object_idjest int i jest przyjmowany jako obiektu o zakresie schematu w określonej bazy danych lub bieżącego kontekstu bazy danych.

  • database_id
    Jest Identyfikatorem bazy danych, w którym obiekt ma być wyszukiwana.database_idis int.

Zwracane typy

sysname

Wyjątki

Zwraca wartość NULL w błąd lub jeśli wywołujący nie ma uprawnień do wyświetlenia obiektu.Jeśli miejsce docelowe baza danych ma AUTO_CLOSE opcję zestaw na, funkcja otwiera bazę danych.

Użytkownik może tylko przeglądać metadane securables, który użytkownik jest właścicielem lub dla którego użytkownik ma uprawnienia.Oznacza to, że metadane-wysyłających, funkcje wbudowane takie jak nazwa_obiektu może zwracać wartość NULL, jeśli użytkownik nie ma żadnych uprawnień do obiektu.Aby uzyskać więcej informacji, zobacz Konfiguracja widoczność metadanych i Rozwiązywanie problemów z metadanych widoczności.

Uprawnienia

Wymaga wszelkie uprawnienia dla obiektu.Aby określić identyfikator bazy danych, łączenie z bazą danych wymagane jest uprawnienie także lub należy włączyć konto gościa.

Uwagi

Funkcje systemu mogą być używane w liście, w którym klauzulai dowolnym wyrażenie jest dozwolone.Aby uzyskać więcej informacji, zobacz wyrażeń i gdzie.

Wartość zwracana przez funkcja systemu używa sortowanie bieżącej bazy danych.

Domyślnie Aparat baz danych programu SQL Server zakłada się, że object_id w kontekście bieżącej bazy danych.Kwerendy, która odwołuje się do object_id w innej bazie danych zwraca wartość NULL lub niepoprawne wyniki.Na przykład, poniższa kwerenda kontekście bieżącej bazy danych jest AdventureWorks2008R2.Aparat baz danych Próbuje przywrócić nazwy obiektu dla Identyfikatora określonego obiektu w bazie danych zamiast bazy danych określonej w klauzula FROM kwerendy.W związku z tym zwracane są niepoprawne informacje.

USE AdventureWorks2008R2;
GO
SELECT DISTINCT OBJECT_NAME(object_id)
FROM master.sys.objects;
GO

Nazwy obiektów w kontekście innej bazy danych można rozwiązać przez określenie identyfikatora bazy danych.W następującym przykładzie określono identyfikator bazy danych dla master bazy danych w OBJECT_SCHEMA_NAME funkcja i zwraca poprawnych wyniki.

USE AdventureWorks2008R2;
GO
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name
FROM master.sys.objects;
GO

Przykłady

A.Za pomocą nazwa_obiektu w klauzulaWHERE

Poniższy przykład zwraca kolumny z sys.objects Widok wykazu dla obiektu określonego przez OBJECT_NAME w WHERE klauzula SELECT instrukcja.

USE AdventureWorks2008R2;
GO
DECLARE @MyID int;
SET @MyID = (SELECT OBJECT_ID('AdventureWorks2008R2.Production.Product',
    'U'));
SELECT name, object_id, type_desc
FROM sys.objects
WHERE name = OBJECT_NAME(@MyID);
GO

B.Zwraca nazwę schematu obiektu i nazwa obiektu

Poniższy przykład zwraca nazwę schematu obiektu, nazwa obiektu i tekst wszystkich planów kwerend pamięci podręcznej, które nie są ad hoc lub przygotowanych instrukcji SQL .

SELECT DB_NAME(st.dbid) AS database_name, 
    OBJECT_SCHEMA_NAME(st.objectid, st.dbid) AS schema_name,
    OBJECT_NAME(st.objectid, st.dbid) AS object_name, 
    st.text AS query_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE st.objectid IS NOT NULL;
GO

C.Zwracanie nazw obiektów trzech części

Poniższy przykład zwraca bazy danych, schematu i nazwa obiektu wraz z innych kolumn w sys.dm_db_index_operational_stats dynamiczny widok zarządzania dla wszystkich obiektów wszystkich baz danych.

SELECT QUOTENAME(DB_NAME(database_id)) 
    + N'.' 
    + QUOTENAME(OBJECT_SCHEMA_NAME(object_id, database_id)) 
    + N'.' 
    + QUOTENAME(OBJECT_NAME(object_id, database_id))
    , * 
FROM sys.dm_db_index_operational_stats(null, null, null, null);
GO