Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric
Veel van de systeemtabellen uit eerdere versies van SQL Server zijn nu geïmplementeerd als een set views. Deze weergaven staan bekend als compatibiliteitsweergaven en zijn uitsluitend bedoeld voor achterwaartse compatibiliteit. De compatibiliteitsweergaven tonen dezelfde metadata die beschikbaar was in SQL Server 2000 (8.x). De compatibiliteitsweergaven tonen echter geen metadata met betrekking tot functies die zijn geïntroduceerd in SQL Server 2005 (9.x) en later. Daarom moet je, wanneer je nieuwe functies gebruikt, zoals Service Broker of partitioneren, overstappen op catalogusweergaven.
Een andere reden om te upgraden naar catalogusweergaven is dat kolommen in compatibiliteitsweergaven die gebruikers-ID's en type-ID's opslaan, NULL kunnen teruggeven of rekenkundige overflows kunnen veroorzaken. Dit komt doordat je meer dan 32.767 gebruikers, groepen en rollen kunt aanmaken, en 32.767 datatypes. Als je bijvoorbeeld 32.768 gebruikers aanmaakt en vervolgens de volgende query uitvoert: SELECT * FROM sys.sysusers. Als ARITHABORT op AAN is gezet, faalt de query met een rekenkundige overflowfout. Als ARITHABORT op UIT staat, geeft de uid-kolom NULL terug.
Om deze problemen te voorkomen, raden we aan om de nieuwe catalogusweergaven te gebruiken die het toegenomen aantal gebruikers-ID's en type-ID's aankunnen. De volgende tabel geeft een overzicht van de kolommen die aan deze overloop onderhevig zijn.
| Kolomnaam | Compatibiliteitsweergave | SQL Server 2005-weergave |
|---|---|---|
| xusertype | syscolumns | sys.columns |
| usertype | syscolumns | sys.columns |
| liduid | Sysmembers | sys.database_role_members |
| Groupuid | Sysmembers | sys.database_role_members |
| Uid | Sysobjects | sys.objects |
| Uid | sysprotects |
sys.database_permissions sys.server_permissions |
| Schenker | 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 |
Wanneer in een gebruikersdatabase wordt verwezen, zijn systeemtabellen die in SQL Server 2000 als verouderd werden aangekondigd (zoals syslanguages of syscacheobjects), nu gebonden aan de back-compatibiliteitsweergave in het sys-schema . Aangezien de SQL Server 2000-systeemtabellen voor meerdere versies zijn verouderd, wordt deze wijziging niet als een breaking change beschouwd.
Voorbeeld: Als een gebruiker een gebruikerstabel genaamd syslanguages aanmaakt in een gebruikersdatabase, zou de instructie SELECT * from dbo.syslanguages; in die database in SQL Server 2008 de waarden uit de gebruikerstabel teruggeven. Vanaf SQL Server 2012 zal deze praktijk gegevens teruggeven uit de systeemweergave sys.syslanguages.
Zie ook
Catalogusweergaven (Transact-SQL)
Systeemtabellen toewijzen aan systeemweergaven (Transact-SQL)