Представления совместимости (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 |
|
grantor |
sysprotects |
|
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