兼容性视图 (Transact-SQL)

在 SQL Server 2005 中,许多 SQL Server 早期版本中的系统表现在都以视图集的形式实现。这些视图称为兼容性视图,仅用于向后兼容。兼容性视图显示的元数据在 SQL Server 2000 中也提供。但是,兼容性视图不显示与 SQL Server 2005 功能相关的任何元数据。因此,当您使用新功能(例如 Service Broker 或分区)时,必须切换到使用目录视图。

升级到目录视图的另一个原因是,存储用户 ID 和类型 ID 的兼容性视图列可能返回 NULL 或触发算术溢出。这是因为在 SQL Server 2005 中,可以创建 32,767 多个用户、组和角色,以及 32,767 种数据类型。例如,如果要创建 32,768 个用户,则可运行以下查询:SELECT * FROM sys.sysusers。如果 ARITHABORT 设置为 ON,则查询会失败,并出现算术溢出错误。如果 ARITHABORT 设置为 OFF,则 uid 列返回 NULL。

若要避免这些问题,建议您使用新增的目录视图,这些视图可以处理增加的用户 ID 和类型 ID 数目。下表列出了会出现此溢出的列。

列名 兼容性视图 SQL Server 2005 视图

xusertype

syscolumns

sys.columns

usertype

syscolumns

sys.columns

memberuid

sysmembers

sys.database_role_members

groupuid

sysmembers

sys.database_role_members

uid

sysobjects

sys.objects

uid

sysprotects

  • sys.database_permissions
  • sys.server_permissions

grantor

sysprotects

  • sys.database_permissions
  • sys.server_permissions

xusertype

systypes

sys.types

uid

systypes

sys.types

uid

sysusers

sys.database_principals

altuid

sysusers

sys.database_principals

gid

sysusers

sys.database_principals

uid

syscacheobjects

sys.dm_exec_plan_attributes

uid

sysprocesses

sys.dm_exec_requests

请参阅

参考

目录视图 (Transact-SQL)
将 SQL Server 2000 系统表映射到 SQL Server 2005 系统视图

其他资源

查询 SQL Server 系统目录

帮助和信息

获取 SQL Server 2005 帮助