Vistas de compatibilidad (Transact-SQL)
Muchas de las tablas del sistema de versiones anteriores de SQL Server se implementan ahora como un conjunto de vistas. Se conocen como vistas de compatibilidad y solo se proporcionan por compatibilidad con versiones anteriores. Las vistas de compatibilidad exponen los mismos metadatos que estaban disponibles en SQL Server 2000. No obstante, las vistas de compatibilidad no exponen ninguno de los metadatos relacionados con las características incluidas en SQL Server 2005 y versiones posteriores. Por tanto, cuando utilice estas nuevas características, como Service Broker o las particiones, deberá cambiar a la utilización de las vistas de catálogo.
Otro motivo para actualizar a las vistas de catálogo es que es posible que las columnas de vista de compatibilidad que almacenan los Id. de usuario y de tipo devuelvan valores NULL o activen desbordamientos aritméticos. Esto se debe a que se pueden crear más de 32.767 usuarios, grupos y roles, y 32.767 tipos de datos. Por ejemplo, si fuera a crear 32.768 usuarios y después ejecutara la siguiente consulta: SELECT * FROM sys.sysusers. Si ARITHABORT está establecido en ON, la consulta provocará un error de desbordamiento aritmético. Si el valor de ARITHABORT es OFF, la columna uid devolverá valores NULL.
Para evitar estos problemas, se recomienda utilizar las nuevas vistas de catálogo, que pueden procesar ese mayor número de identificadores de usuario y de tipo. La tabla siguiente indica las columnas que pueden presentar este desbordamiento.
Nombre de columna |
Vista de compatibilidad |
Vista de 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 |
Cuando tienen una referencia en una base de datos de usuario, las tablas del sistema indicadas como obsoletas en SQL Server 2000 (como por ejemplo syslanguages o syscacheobjects), ahora están vinculadas a la vista de compatibilidad regresiva en el esquema sys. Desde que las tablas de sistema de SQL Server 2000 quedaron obsoletas para varias versiones no se considera que este cambio sea brusco.
Ejemplo: Si un usuario crea una tabla de usuario llamada syslanguages en una base de datos de usuario, en SQL Server 2008, la instrucción SELECT * from dbo.syslanguages; en dicha base de datos devolvería los valores de la tabla de usuario. A partir de SQL Server 2012, esta práctica devolverá datos de la vista del sistema sys.syslanguages.
Vea también
Referencia
Vistas de catálogo (Transact-SQL)
Asignar tablas del sistema a vistas del sistema (Transact-SQL)