Vistas de compatibilidad del sistema (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento 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)