다음을 통해 공유


OBJECT_NAME(Transact-SQL)

업데이트: 2006년 12월 12일

스키마 범위 개체에 대한 데이터베이스 개체 이름을 반환합니다. 스키마 범위 개체의 목록을 보려면 sys.objects(Transact-SQL)를 참조하십시오.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

OBJECT_NAME ( object_id [, database_id ] )

인수

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

반환 유형

sysname

예외

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

사용자는 소유하고 있거나 사용 권한을 부여 받은 보안 개체의 메타데이터만 볼 수 있습니다. 즉, 사용자가 개체에 대한 사용 권한이 없으면 OBJECT_NAME과 같은 메타데이터 내보내기 기본 제공 함수가 NULL을 반환합니다. 자세한 내용은 메타데이터 표시 유형 구성메타데이터 표시 유형 문제 해결을 참조하십시오.

주의

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

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

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

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

서비스 팩 2에서는 데이터베이스 ID를 지정하여 다른 데이터베이스의 컨텍스트에서 개체 이름을 확인할 수 있습니다. 다음 예에서는 OBJECT_SCHEMA_NAME 함수에서 master 데이터베이스에 대한 데이터베이스 ID를 지정하고 올바른 결과를 반환합니다.

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

사용 권한

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

1. WHERE 절에서 OBJECT_NAME 사용

다음 예에서는 SELECT 문의 WHERE 절에서 OBJECT_NAME으로 지정한 개체에 대한 열을 sys.objects 카탈로그 뷰에서 반환합니다.

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

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

다음 예에서는 임시 문이나 준비된 문이 아닌 모든 캐시된 쿼리 계획에 대한 개체 스키마 이름, 개체 이름 및 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

3. 세 부분으로 된 개체 이름 반환

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

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

참고 항목

참조

메타데이터 함수(Transact-SQL)
OBJECT_DEFINITION(Transact-SQL)
OBJECT_ID(Transact-SQL)

관련 자료

보안 개체

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 12월 12일

새로운 내용
  • SP2의 새 기능인 database_id 매개 변수를 구문 및 인수 섹션에 추가했습니다.
  • 사용 권한 섹션을 추가했습니다.

2006년 7월 17일

새로운 내용
  • 예외 섹션을 추가했습니다.