Представления совместимости (Transact-SQL)
Многие системные таблицы из предыдущих версий SQL Server в настоящее время реализованы в виде набора представлений. Эти представления известны как представления совместимости, и они предназначены только для обратной совместимости. Представления совместимости содержат метаданные, которые были доступны в SQL Server 2000. Однако представления совместимости не содержат метаданных, связанных с функциями, появившимися в SQL Server 2005 и более поздних версиях. Поэтому при использовании этих возможностей, таких как компонент Service Broker или секционирование, следует применять представления каталогов.
Еще одной причиной добавления обновлений в представления каталога является тот факт, что столбцы представлений совместимости, хранящие идентификаторы пользователей и типов, могут возвращать значение NULL или арифметические переполнения триггера. Это происходит потому, что можно создавать более 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 |
См. также