시스템 호환성 뷰 (Transact SQL)System Compatibility Views (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2012부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server의 이전 릴리스에 사용되었던 여러 시스템 테이블이 이제는 뷰 집합으로 구현됩니다.Many of the system tables from earlier releases of SQL ServerSQL Server are now implemented as a set of views. 이러한 뷰를 호환성 뷰라고 하며 이전 버전과의 호환성을 위해서만 제공됩니다.These views are known as compatibility views, and they are meant for backward compatibility only. 호환성 뷰는 SQL Server 2000SQL Server 2000에서 사용되었던 것과 동일한 메타데이터를 노출합니다.The compatibility views expose the same metadata that was available in SQL Server 2000SQL Server 2000. 그러나 SQL Server 2005SQL Server 2005 이상에서 새로 추가된 기능과 관련된 메타데이터는 노출하지 않습니다.However, the compatibility views do not expose any of the metadata related to features that are introduced in SQL Server 2005SQL Server 2005 and later. 따라서 Service BrokerService Broker 또는 분할과 같은 새로운 기능을 사용할 때는 카탈로그 뷰로 전환하여 사용해야 합니다.Therefore, when you use new features, such as Service BrokerService Broker or partitioning, you must switch to using the catalog views.

카탈로그 뷰로 업그레이드해야 하는 또 다른 이유는 사용자 ID 및 유형 ID를 저장하는 호환성 뷰 열이 NULL을 반환하거나 산술 오버플로를 트리거할 수 있기 때문입니다.Another reason for upgrading to the catalog views is that compatibility view columns that store user IDs and type IDs may return NULL or trigger arithmetic overflows. 이것은 사용자, 그룹 및 역할과 데이터 형식을 32,767개 이상 만들 수 있기 때문입니다.This is because you can create more than 32,767 users, groups, and roles, and 32,767 data types. 예를 들어, 32, 768 사용자를 만들고 다음 다음 쿼리를 실행 하는 경우: SELECT * FROM sys.sysusers합니다.For example, if you were to create 32,768 users, and then run the following query: SELECT * FROM sys.sysusers. ARITHABORT를 ON으로 설정하는 경우 산술 오버플로 오류가 발생하여 쿼리가 실패하게 되고If ARITHABORT is set to ON, the query fails with an arithmetic overflow error. ARITHABORT를 OFF로 설정 하는 경우는 uid 열 NULL을 반환 합니다.If ARITHABORT is set to OFF, the uid column returns NULL.

이러한 문제를 피하려면 증가된 사용자 ID 및 유형 ID 수를 처리할 수 있는 새로운 카탈로그 뷰를 사용하는 것이 좋습니다.To avoid these problems, we recommend that you use the new catalog views that can handle the increased number of user IDs and type IDs. 다음 표에서는 이 오버플로를 트리거할 수 있는 열을 나열합니다.The following table lists the columns that are subject to this overflow.

열 이름Column name 호환성 뷰Compatibility view SQL Server 2005 뷰SQL Server 2005 view
xusertypexusertype syscolumnssyscolumns sys.columnssys.columns
usertypeusertype syscolumnssyscolumns sys.columnssys.columns
memberuidmemberuid sysmemberssysmembers sys.database_role_memberssys.database_role_members
groupuidgroupuid sysmemberssysmembers sys.database_role_memberssys.database_role_members
uiduid sysobjectssysobjects sys.objectssys.objects
uiduid sysprotectssysprotects sys.database_permissionssys.database_permissions

sys.server_permissionssys.server_permissions
grantorgrantor sysprotectssysprotects sys.database_permissionssys.database_permissions

sys.server_permissionssys.server_permissions
xusertypexusertype systypessystypes sys.typessys.types
uiduid systypessystypes sys.typessys.types
uiduid sysuserssysusers sys.database_principalssys.database_principals
altuidaltuid sysuserssysusers sys.database_principalssys.database_principals
gidgid sysuserssysusers sys.database_principalssys.database_principals
uiduid syscacheobjectssyscacheobjects sys.dm_exec_plan_attributessys.dm_exec_plan_attributes
uiduid sysprocessessysprocesses sys.dm_exec_requestssys.dm_exec_requests

시스템에 SQL Server 2000에서 지원 되지 않는으로 발표 된 테이블로 사용자 데이터베이스를 참조할 때 (같은 syslanguages 또는 syscacheobjects), 이제에서 역호환성 뷰로 바인딩됩니다는 sys 스키마입니다.When referenced in a user database, system tables which were announced as deprecated in SQL Server 2000 (such as syslanguages or syscacheobjects), are now bound to the back-compatibility view in the sys schema. SQL Server 2000 시스템 테이블이 여러 버전에서 더 이상 사용되지 않으므로 이는 새로운 변경 사항이 아닙니다.Since the SQL Server 2000 system tables have been deprecated for multiple versions, this change is not considered a breaking change.

예: 라는 사용자 테이블을 만드는 경우 syslanguages 사용자-데이터베이스에서 SQL Server 2008에서는 문이 SELECT * from dbo.syslanguages; 사용자 테이블에서 값을 반환 합니다을 해당 데이터베이스에 있습니다.Example: If a user creates a user-table called syslanguages in a user-database, in SQL Server 2008, the statement SELECT * from dbo.syslanguages; in that database would return the values from the user table. SQL Server 2012부터,이 연습에서에서 데이터가 반환 됩니다 시스템 뷰 sys.syslanguages합니다.Beginning in SQL Server 2012, this practice will return data from the system view sys.syslanguages.

관련 항목:See Also

카탈로그 뷰(Transact-SQL) Catalog Views (Transact-SQL)
시스템 뷰 ( 시스템 테이블 매핑 Transact SQL )Mapping System Tables to System Views (Transact-SQL)