Udostępnij za pomocą


OBJECT_SCHEMA_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 FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Zwraca nazwę schematu 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_SCHEMA_NAME ( object_id [, database_id ] )  

Arguments

object_id

Identyfikator obiektu do użycia. 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

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

Typy zwracane

sysname

Exceptions

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 otwiera 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ń. Funkcje wbudowane emitujące metadane, takie jak OBJECT_SCHEMA_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.

Permissions

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.

Zestaw wyników zwrócony przez tę funkcję systemową używa sortowania bieżącej bazy danych.

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

SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id)  
FROM master.sys.objects;  

Poniższy przykład określa identyfikator bazy danych dla master bazy danych w OBJECT_SCHEMA_NAME funkcji i zwraca poprawne wyniki.

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

Przykłady

A. Zwraca nazwę schematu obiektu i nazwę obiektu

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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_statement  
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  

B. Zwracanie nazw obiektów trójczęściowych

Poniższy przykład zwraca nazwę bazy danych, schematu i obiektu dla wszystkich obiektów w bieżącym kontekście bazy danych.

SELECT QUOTENAME(DB_NAME(db_id()))   
    + N'.'   
    + QUOTENAME(OBJECT_SCHEMA_NAME(object_id, db_id()))   
    + N'.'   
    + QUOTENAME(OBJECT_NAME(object_id, db_id()))  
    , *   
FROM sys.objects;
GO  

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.

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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  

Dalsze kroki