다음을 통해 공유


OBJECT_SCHEMA_NAME(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics

스키마 범위 개체에 대한 데이터베이스 개체 이름을 반환합니다. 스키마 범위 개체 목록은 sys.objects(Transact-SQL)를 참조하세요.

참고 항목

이 함수 OBJECT_SCHEMA_NAME 는 Azure Synapse Analytics의 전용 SQL 풀에서만 지원됩니다.

Transact-SQL 구문 표기 규칙

구문

OBJECT_SCHEMA_NAME ( object_id [, database_id ] )  

인수

object_id

사용할 개체의 ID입니다. object_idint이며 지정한 데이터베이스 또는 현재 데이터베이스 컨텍스트에서 스키마 범위 개체로 간주됩니다.

database_id

개체를 조회할 데이터베이스의 ID입니다. database_id int입니다.

반환 형식

sysname

예외

오류가 발생하거나 호출자가 개체를 볼 수 있는 권한을 갖고 있지 않으면 NULL을 반환합니다. 대상 데이터베이스에 AUTO_CLOSE 옵션이 ON으로 설정된 경우 함수가 데이터베이스를 엽니다.

사용자는 소유하고 있거나 사용 권한을 부여 받은 보안 개체의 메타데이터만 볼 수 있습니다. 메타데이터 내보내기 같은 기본 제공 함수 OBJECT_SCHEMA_NAME 는 사용자에게 개체에 대한 권한이 없는 경우 NULL을 반환할 수 있습니다. 자세한 내용은 Metadata Visibility Configuration을 참조하세요.

사용 권한

개체에 대한 ANY 권한이 필요합니다. 데이터베이스 ID를 지정하려면 데이터베이스에 대해 CONNECT 권한도 필요합니다. 그렇지 않으면 게스트 계정을 설정해야 합니다.

설명

시스템 함수는 선택 목록, WHERE 절 및 식이 허용되는 모든 곳에서 사용될 수 있습니다. 자세한 내용은 WHERE를 참조하세요.

이 시스템 함수에서 반환하는 결과 집합에서는 현재 데이터베이스의 데이터 정렬을 사용합니다.

database_id 지정하지 않으면 SQL Server 데이터베이스 엔진 현재 데이터베이스의 컨텍스트에 있다고 object_id 가정합니다. 다른 데이터베이스에서 참조하는 쿼리는 NULL 또는 잘못된 결과를 반환합니다 object_id . 예를 들어 다음 쿼리에서 현재 데이터베이스의 컨텍스트는 AdventureWorks2022입니다. 데이터베이스 엔진 쿼리의 FROM 절에 지정된 object_id 데이터베이스 대신 현재 데이터베이스에 지정된 개체 스키마 이름을 반환하려고 합니다. 따라서 잘못된 정보가 반환됩니다.

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

다음 예에서는 master 함수에서 OBJECT_SCHEMA_NAME 데이터베이스에 대한 데이터베이스 ID를 지정하고 올바른 결과를 반환합니다.

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

예제

A. 개체 스키마 이름 및 개체 이름 반환

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

다음 예에서는 임시 문이나 준비된 문이 아닌 모든 캐시된 쿼리 계획에 대한 개체 스키마 이름, 개체 이름 및 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_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. 세 부분으로 구성된 개체 이름을 반환합니다.

다음 예제에서는 현재 데이터베이스 컨텍스트의 모든 개체에 대한 데이터베이스, 스키마 및 개체 이름을 반환합니다.

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  

다음 예에서는 모든 데이터베이스의 모든 개체에 대해 sys.dm_db_index_operational_stats 동적 관리 뷰의 모든 다른 열과 함께 데이터베이스, 스키마 및 개체 이름을 반환합니다.

적용 대상: SQL Server Azure SQL 데이터베이스 Azure 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  

다음 단계