Systemkompatibilitäts-Sichten (Transact-SQL)System Compatibility Views (Transact-SQL)

GILT FÜR: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: YesSQL Server NoAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

Viele der Systemtabellen aus früheren Versionen von SQL ServerSQL Server sind jetzt als eine Gruppe von Sichten implementiert worden.Many of the system tables from earlier releases of SQL ServerSQL Server are now implemented as a set of views. Diese Sichten werden als Kompatibilitätssichten bezeichnet und sollen ausschließlich für die Abwärtskompatibilität verwendet werden.These views are known as compatibility views, and they are meant for backward compatibility only. Die Kompatibilitätssichten machen die gleichen Metadaten verfügbar wie in SQL Server 2000 (8.x)SQL Server 2000 (8.x).The compatibility views expose the same metadata that was available in SQL Server 2000 (8.x)SQL Server 2000 (8.x). Die Kompatibilitätssichten machen jedoch keine Metadaten bezüglich der in SQL Server 2005 (9.x)SQL Server 2005 (9.x) und höher neu eingeführten Funktionen verfügbar.However, the compatibility views do not expose any of the metadata related to features that are introduced in SQL Server 2005 (9.x)SQL Server 2005 (9.x) and later. Wenn Sie also neue Funktionen, wie z. B. Service BrokerService Broker oder die Partitionierung, verwenden, müssen Sie Katalogsichten verwenden.Therefore, when you use new features, such as Service BrokerService Broker or partitioning, you must switch to using the catalog views.

Ein weiterer Grund für ein Upgrade auf die Katalogsichten besteht darin, dass Kompatibilitätssichtspalten, in denen Benutzer-IDs und Typ-IDs gespeichert werden, evtl. NULL zurückgeben oder arithmetische Überläufe auslösen.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. Dies liegt daran, dass Sie mehr als 32.767 Benutzer, Gruppen und Rollen sowie 32.767 Datentypen erstellen können.This is because you can create more than 32,767 users, groups, and roles, and 32,767 data types. Angenommen, Sie würden 32.768 Benutzer erstellen und folgende Abfrage ausführen: SELECT * FROM sys.sysusers.For example, if you were to create 32,768 users, and then run the following query: SELECT * FROM sys.sysusers. Wenn ARITHABORT auf ON festgelegt ist, schlägt die Abfrage aufgrund eines arithmetischen Überlauffehlers fehl.If ARITHABORT is set to ON, the query fails with an arithmetic overflow error. Wenn ARITHABORT auf OFF festgelegt ist, gibt die UID -Spalte NULL zurück.If ARITHABORT is set to OFF, the uid column returns NULL.

Zur Vermeidung dieser Probleme wird die Verwendung der neuen Katalogsichten empfohlen, die die erhöhte Anzahl von Benutzer-IDs und Typ-IDs verarbeiten können.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. In der folgenden Tabelle sind die Spalten aufgeführt, bei denen es zu einem solchen Überlauf kommen kann.The following table lists the columns that are subject to this overflow.

SpaltennameColumn name KompatibilitätssichtCompatibility view SQL Server 2005-SichtSQL 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
GRANTORgrantor 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
ügid 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

Wenn in einer Benutzerdatenbank auf Sie verwiesen wird, sind Systemtabellen, die in SQL Server 2000 (z. b. syslanguages oder syscacheobjects) als veraltet markiert wurden, nun an die Ansicht der Back Kompatibilität im sys -Schema gebunden.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. Da die SQL Server 2000-Systemtabellen für mehrere Versionen als veraltetet markiert wurden, wird diese Änderung nicht als wichtige Änderung eingestuft.Since the SQL Server 2000 system tables have been deprecated for multiple versions, this change is not considered a breaking change.

Beispiel: Wenn ein Benutzer eine Benutzertabelle namens " syslanguages " in einer Benutzerdatenbank erstellt, würde die-Anweisung SELECT * from dbo.syslanguages; in der-Datenbank in SQL Server 2008 die Werte aus der Benutzertabelle zurückgeben.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. Ab SQL Server 2012 werden Daten aus der Systemsicht " sys. syslanguages" zurückgegeben.Beginning in SQL Server 2012, this practice will return data from the system view sys.syslanguages.

Weitere InformationenSee Also

Katalogsichten (Transact-SQL) Catalog Views (Transact-SQL)
Zuordnung von Systemtabellen zu System Sichten (Transact-SQL-)Mapping System Tables to System Views (Transact-SQL)