Udostępnij za pośrednictwem


OBJECT_NAME (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricMagazyn w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric (wersja zapoznawcza)

Zwraca nazwę obiektu bazy danych dla obiektów o zakresie schematu. Aby uzyskać listę obiektów o zakresie schematu, zobacz sys.objects (Transact-SQL).

Transact-SQL konwencje składni

Składnia

OBJECT_NAME ( object_id [, database_id ] )  

Argumenty (w programowaniu)

object_id
Jest identyfikatorem obiektu, który ma być używany. object_id jest int i zakłada się, że jest obiektem o zakresie schematu w określonej bazie danych lub w bieżącym kontekście bazy danych.

database_id
Jest identyfikatorem bazy danych, w której ma być wyszukany obiekt. database_id jest int.

Typy zwracane

sysname

Wyjątki

Zwraca wartość NULL w przypadku błędu lub jeśli obiekt wywołujący nie ma uprawnień do wyświetlania obiektu. Jeśli docelowa baza danych ma opcję AUTO_CLOSE ustawioną na WŁ., funkcja otworzy bazę danych.

Użytkownik może wyświetlać tylko metadane zabezpieczanych, które użytkownik jest właścicielem lub którym użytkownik udzielił uprawnień. Oznacza to, że wbudowane funkcje emitujące metadane, takie jak OBJECT_NAME, mogą zwracać wartość NULL, jeśli użytkownik nie ma żadnych uprawnień do obiektu. Aby uzyskać więcej informacji, zobacz Konfiguracja widoczności metadanych.

Uprawnienia

Wymaga uprawnień ANY w obiekcie. Aby określić identyfikator bazy danych, wymagane jest również uprawnienie CONNECT do bazy danych lub konto gościa musi być włączone.

Uwagi

Funkcje systemowe mogą być używane na liście wyboru, w klauzuli WHERE i w dowolnym miejscu, w którym dozwolone jest wyrażenie. Aby uzyskać więcej informacji, zobacz Wyrażenia i GDZIE.

Wartość zwrócona przez tę funkcję systemową używa sortowania bieżącej bazy danych.

Domyślnie aparat bazy danych programu SQL Server zakłada, że object_id znajduje się w kontekście bieżącej bazy danych. Zapytanie odwołujące się do object_id w innej bazie danych zwraca wartości NULL lub niepoprawne wyniki. Na przykład w poniższym zapytaniu kontekst bieżącej bazy danych to AdventureWorks2022. Aparat bazy danych próbuje zwrócić nazwę obiektu dla określonego identyfikatora obiektu w tej bazie danych zamiast bazy danych określonej w klauzuli FROM zapytania. W związku z tym zwracane są nieprawidłowe informacje.

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

Nazwy obiektów można rozpoznać w kontekście innej bazy danych, określając identyfikator bazy danych. Poniższy przykład określa identyfikator bazy danych dla master bazy danych w OBJECT_SCHEMA_NAME funkcji i zwraca poprawne wyniki.

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

Przykłady

Odp. Używanie OBJECT_NAME w klauzuli WHERE

Poniższy przykład zwraca kolumny z sys.objects widoku wykazu dla obiektu określonego przez OBJECT_NAME w WHERE klauzuli instrukcji SELECT .

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

B. Zwracanie nazwy schematu obiektu i nazwy obiektu

Poniższy przykład zwraca nazwę schematu obiektu, nazwę obiektu i tekst SQL dla wszystkich buforowanych planów zapytań, które nie są instrukcjami ad hoc ani przygotowanymi.

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 trójczęściowych

Poniższy przykład zwraca nazwę bazy danych, schematu i obiektu wraz ze wszystkimi innymi kolumnami w sys.dm_db_index_operational_stats dynamicznym widoku zarządzania dla wszystkich obiektów we wszystkich bazach 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  

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

D. Używanie OBJECT_NAME w klauzuli WHERE

Poniższy przykład zwraca kolumny z sys.objects widoku wykazu dla obiektu określonego przez OBJECT_NAME w WHERE klauzuli instrukcji SELECT . (Numer obiektu (274100017 w poniższym przykładzie) będzie inny. Aby przetestować ten przykład, wyszukaj prawidłowy numer obiektu, wykonując polecenie SELECT name, object_id FROM sys.objects; w bazie danych).

SELECT name, object_id, type_desc  
FROM sys.objects  
WHERE name = OBJECT_NAME(274100017);  

Zobacz też

Funkcje metadanych (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)