SQL Server 2005 联机丛书 - 兼容性视图 (Transact-SQL)

来源:互联网 发布:虾米音乐网络异常 编辑:程序博客网 时间:2024/06/06 14:19

现在,SQL Server 早期版本中的许多系统表已作为 SQL Server 2005 中的一组视图实现。这些视图称为兼容性视图,专用于实现向后兼容。兼容性视图显示的元数据是 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 中,可以创建 32,767 个以上的用户和数据类型。因此,兼容性视图中存储用户 ID 和类型 ID 的列可能返回 NULL 或触发算术溢出。下表列出了会出现此溢出的列。

列名 兼容性视图 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

没有此版本的信息。

uid

sysprocesses

没有此版本的信息。

请参阅

参考

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

其他资源

查询 SQL Server 系统目录

帮助和信息

获取 SQL Server 2005 帮助