Vues de compatibilité de système (Transact-SQL)System Compatibility Views (Transact-SQL)

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server (à partir de la version 2012)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Une grande partie des tables système des versions antérieures de SQL ServerSQL Server sont maintenant implémentées sous la forme d'un ensemble de vues.Many of the system tables from earlier releases of SQL ServerSQL Server are now implemented as a set of views. Ces vues sont connues sous le nom de vues de compatibilité car elles ont été exclusivement conçues à des fins de compatibilité descendante.These views are known as compatibility views, and they are meant for backward compatibility only. Elles exposent les mêmes métadonnées que celles qui étaient disponibles dans SQL Server 2000SQL Server 2000.The compatibility views expose the same metadata that was available in SQL Server 2000SQL Server 2000. En revanche, elles n'exposent pas les métadonnées liées aux fonctionnalités introduites dans SQL Server 2005SQL Server 2005 et versions ultérieures.However, the compatibility views do not expose any of the metadata related to features that are introduced in SQL Server 2005SQL Server 2005 and later. Par conséquent, lorsque vous utilisez une nouvelle fonctionnalité (comme Service BrokerService Broker ou le partitionnement), vous devez impérativement utiliser les affichages catalogue.Therefore, when you use new features, such as Service BrokerService Broker or partitioning, you must switch to using the catalog views.

Il existe une autre raison justifiant la mise à niveau vers les affichages catalogue : les colonnes des vues de compatibilité qui stockent les ID d'utilisateur et de type peuvent retourner la valeur NULL ou déclencher des dépassements arithmétiques.Another reason for upgrading to the catalog views is that compatibility view columns that store user IDs and type IDs may return NULL or trigger arithmetic overflows. Vous pouvez en effet créer plus de 32 767 utilisateurs, groupes, rôles et types de données.This is because you can create more than 32,767 users, groups, and roles, and 32,767 data types. Imaginons par exemple que vous devez créer 32 768 utilisateurs, puis exécuter la requête suivante : SELECT * FROM sys.sysusers.For example, if you were to create 32,768 users, and then run the following query: SELECT * FROM sys.sysusers. Si l'option ARITHABORT est activée (ON), la requête échoue en raison d'une erreur de dépassement arithmétique.If ARITHABORT is set to ON, the query fails with an arithmetic overflow error. Si l’option ARITHABORT est désactivée (OFF), la uid colonne renvoie la valeur NULL.If ARITHABORT is set to OFF, the uid column returns NULL.

Pour éviter ces problèmes, nous vous recommandons d'utiliser les nouveaux affichages catalogue qui peuvent gérer le nombre accru d'ID d'utilisateur et d'ID de type.To avoid these problems, we recommend that you use the new catalog views that can handle the increased number of user IDs and type IDs. Le tableau suivant recense les colonnes sujettes à ce dépassement.The following table lists the columns that are subject to this overflow.

Nom de colonneColumn name Vue de compatibilitéCompatibility view Vue SQL Server 2005SQL Server 2005 view
xusertypexusertype syscolumnssyscolumns sys.columnssys.columns
usertypeusertype syscolumnssyscolumns sys.columnssys.columns
memberuidmemberuid sysmemberssysmembers sys.database_role_memberssys.database_role_members
groupuidgroupuid sysmemberssysmembers sys.database_role_memberssys.database_role_members
UIDuid sysobjectssysobjects sys.objectssys.objects
UIDuid sysprotectssysprotects sys.database_permissionssys.database_permissions

sys.server_permissionssys.server_permissions
fournisseur d’autorisationsgrantor sysprotectssysprotects sys.database_permissionssys.database_permissions

sys.server_permissionssys.server_permissions
xusertypexusertype systypessystypes sys.typessys.types
UIDuid systypessystypes sys.typessys.types
UIDuid sysuserssysusers sys.database_principalssys.database_principals
altuidaltuid sysuserssysusers sys.database_principalssys.database_principals
GIDgid sysuserssysusers sys.database_principalssys.database_principals
UIDuid syscacheobjectssyscacheobjects sys.dm_exec_plan_attributessys.dm_exec_plan_attributes
UIDuid sysprocessessysprocesses sys.dm_exec_requestssys.dm_exec_requests

Lors de la référence à une base de données utilisateur, des tables système qui ont été annoncées comme déconseillées dans SQL Server 2000 (telles que syslanguages ou syscacheobjects), sont maintenant liées à la vue de compatibilité descendante dans le sys schéma.When referenced in a user database, system tables which were announced as deprecated in SQL Server 2000 (such as syslanguages or syscacheobjects), are now bound to the back-compatibility view in the sys schema. Les tables SQL Server 2000 étant déconseillées depuis plusieurs versions, cette modification n'est pas considérée comme une modification avec rupture.Since the SQL Server 2000 system tables have been deprecated for multiple versions, this change is not considered a breaking change.

Exemple : Si un utilisateur crée une table utilisateur appelée syslanguages dans une base de données utilisateur, dans SQL Server 2008, l’instruction SELECT * from dbo.syslanguages; dans cette base de données retourne les valeurs de la table utilisateur.Example: If a user creates a user-table called syslanguages in a user-database, in SQL Server 2008, the statement SELECT * from dbo.syslanguages; in that database would return the values from the user table. À compter de SQL Server 2012, cette pratique retourne des données à partir de la vue système sys.syslanguages.Beginning in SQL Server 2012, this practice will return data from the system view sys.syslanguages.

Voir aussiSee Also

Affichages catalogue (Transact-SQL) Catalog Views (Transact-SQL)
Mappage des Tables système pour les vues système ( Transact-SQL )Mapping System Tables to System Views (Transact-SQL)