Vistas de compatibilidad del sistema (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Muchas de las tablas del sistema de versiones anteriores de SQL Server ahora se implementan 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 disponibles en SQL Server 2000 (8.x). Sin embargo, las vistas de compatibilidad no exponen ninguno de los metadatos relacionados con las características que se presentan en SQL Server 2005 (9.x) y versiones posteriores. Por lo tanto, al usar nuevas características, como Service Broker o la creación de particiones, debe cambiar al uso 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 ARITHABORT se establece en OFF, la columna uid devuelve 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 la 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 sys.database_permissions

sys.server_permissions
Otorgante 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

Cuando se hace referencia a en una base de datos de usuario, las tablas del sistema que se anunciaron como en desuso en SQL Server 2000 (como syslanguages o syscacheobjects), ahora están enlazadas a la vista de compatibilidad inversa en el esquema sys . Dado que las tablas del sistema de SQL Server 2000 están en desuso en múltiples versiones, no se considera que este cambio sea una novedad.

Ejemplo: si un usuario crea una tabla de usuario denominada syslanguages en una base de datos de usuario, en SQL Server 2008, la instrucción SELECT * from dbo.syslanguages; de esa 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.

Consulte también

Vistas de catálogo (Transact-SQL)
Asignar tablas del sistema a vistas del sistema (Transact-SQL)