Представления совместимости (Transact-SQL)

Большинство системных таблиц из ранних версий SQL Server реализованы как набор представлений в SQL Server 2005. Эти представления известны как представления совместимости, и они предназначены только для обратной совместимости. Представления совместимости содержат метаданные, которые были доступны в SQL Server 2000. Однако представления совместимости не содержат метаданных, связанных с возможностями, появившимися в SQL Server 2005. Поэтому при использовании этих возможностей, таких как компонент Service Broker или секционирование, следует применять представления каталогов.

Еще одной причиной добавления обновлений в представления каталога является тот факт, что столбцы представлений совместимости, хранящие идентификаторы пользователей и типов, могут возвращать значение NULL или арифметические переполнения триггера. Это происходит потому, что в SQL Server 2005 возможно создание более 32 767 пользователей, групп и ролей, а также 32 767 типов данных. Например, если создать 32 768 пользователей, после чего выполнить следующий запрос: SELECT * FROM sys.sysusers. Этот запрос завершится ошибкой арифметического переполнения, если значение параметра ARITHABORT равно ON. Если значение параметра ARITHABORT равно OFF, столбец uid возвращает значение 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

sys.dm_exec_plan_attributes

uid

sysprocesses

sys.dm_exec_requests

См. также

Справочник

Представления каталога (Transact-SQL)
Соответствия между системными таблицами SQL Server 2000 и системными представлениями SQL Server 2005

Другие ресурсы

Запрос к системному каталогу сервера SQL Server

Справка и поддержка

Получение помощи по SQL Server 2005