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
Met compatibiliteitscertificering kunnen bedrijven on-premises, in de cloud en aan de rand een SQL Server-database upgraden en moderniseren, waardoor de risico's van toepassingscompatibiliteit worden geëlimineerd.
Dezelfde database-engine voert zowel SQL Server als Azure SQL Database uit (inclusief Azure SQL Managed Instance). Deze gedeelde database-engine betekent dat een gebruikersdatabase naadloos kan worden verplaatst tussen on-premises SQL Server en Azure SQL Database, terwijl de toepassingscode die in de database wordt uitgevoerd als Transact-SQL blijft werken zoals in het bronsysteem.
Voor elke nieuwe versie van SQL Server is het standaardcompatibiliteitsniveau ingesteld op de versie van de database-engine. Maar het compatibiliteitsniveau van eerdere versies blijft behouden voor continue compatibiliteit van bestaande toepassingen. Deze compatibiliteitsmatrix is hier te zien. Daarom is een toepassing die is gecertificeerd om met een bepaalde SQL Server-versie te werken, in feite gecertificeerd om te werken aan het standaardcompatibiliteitsniveau van die versie.
Databasecompatibiliteitsniveau 130 was bijvoorbeeld de standaardwaarde in SQL Server 2016 (13.x). Omdat compatibiliteitsniveaus specifieke Transact-SQL functioneel en queryoptimalisatiegedrag afdwingen, is een database die is gecertificeerd voor gebruik op SQL Server 2016 (13.x) impliciet gecertificeerd op databasecompatibiliteitsniveau 130. Deze database kan werken as-is op een recentere versie van SQL Server (zoals SQL Server 2019 (15.x)) en Azure SQL Database, zolang het databasecompatibiliteitsniveau wordt bewaard als 130.
Dit is een fundamenteel principe voor het continue integratiebewerkingsmodel van Microsoft Azure SQL Database. De database-engine wordt voortdurend verbeterd en bijgewerkt in Azure, maar omdat bestaande databases hun huidige compatibiliteitsniveau behouden, blijven ze werken zoals ontworpen, zelfs na upgrades naar de onderliggende database-engine.
Dit is ook hoe SharePoint Server 2016 en SharePoint Server 2019 certificeren op SQL Server en Azure SQL Managed Instance. U kunt elke SQL Server-database-engine implementeren die gebruikmaakt van de ondersteunde databasecompatibiliteitsniveaus voor die SharePoint Server-versies. Zie hardware- en softwarevereisten voor SharePoint Server 2016 en hardware- en softwarevereisten voor SharePoint Server 2019 voor meer informatie.
Upgraderisico's beheren met compatibiliteitscertificering
Het gebruik van compatibiliteitscertificering is een waardevolle benadering voor het moderniseren van databases. Wanneer ontwikkelaars certificeren op basis van compatibiliteitsniveau, stelt u de technische vereisten in voor een toepassing die wordt ondersteund op SQL Server en Azure SQL Database, maar koppelt u de levenscyclus van de toepassing los van de levenscyclus van het databaseplatform. Hierdoor kunnen bedrijven de SQL Server Database Engine zo nodig upgraden op basis van levenscyclusbeleid, gebruikmakend van nieuwe schaalbaarheids- en prestatieverbeteringen die niet afhankelijk zijn van de code, terwijl toepassingen hun functionele status behouden tijdens upgrades.
De belangrijkste risicofactoren voor een upgrade zijn de mogelijkheid om de functionaliteit en prestatieproblemen nadelig te beïnvloeden. Compatibiliteitscertificering staat voor rust in termen van het beheren van deze upgraderisico's:
Met betrekking tot Transact-SQL-gedrag betekent elke wijziging dat een toepassing moet worden hergecertificeerd voor juistheid. De instelling voor databasecompatibiliteitsniveau biedt echter alleen achterwaartse compatibiliteit met eerdere versies van SQL Server voor de opgegeven database, niet voor de hele server. Het compatibiliteitsniveau van de database behouden as-is zorgt ervoor dat bestaande toepassingsquery's hetzelfde gedrag blijven weergeven vóór en na een upgrade van de database-engine. Voor meer informatie over Transact-SQL-gedrag en compatibiliteitsniveaus, zie Compatibiliteitsniveaus gebruiken voor achterwaartse compatibiliteit.
In wat betrekking heeft op prestaties, omdat verbeteringen in de queryoptimalisatie worden geïntroduceerd bij elke versie, kan worden verwacht dat er verschillen in het queryplan optreden tussen verschillende database-engineversies. Verschillen in queryplannen binnen het bereik van een upgrade worden meestal omgezet in risico's wanneer er mogelijk wijzigingen kunnen optreden die nadelig kunnen zijn voor een bepaalde query of workload. Op zijn beurt drijft dit risico meestal de noodzaak tot hercertificering van toepassingen, wat upgrades kan vertragen en uitdagingen in de levenscyclus en ondersteuning kan veroorzaken.
Het beperken van upgraderisico's is waarom verbeteringen van Query Optimizer worden beperkt tot het standaardcompatibiliteitsniveau van een nieuwe release (met andere woorden het hoogste compatibiliteitsniveau dat beschikbaar is voor elke nieuwe versie). Compatibiliteitscertificering omvat shapebeveiliging voor queryplannen: het idee dat het onderhouden van een databasecompatibiliteitsniveau as-is, direct na een upgrade van een database-engine, wordt omgezet in het gebruik van hetzelfde queryoptimalisatiemodel in de nieuwe versie als vóór de upgrade en de shape van het queryplan mag niet worden gewijzigd.
Zie voor meer informatie de sectie Waarom de vorm van het queryplan? in dit artikel.
Voor een bestaande toepassing die al is gecertificeerd voor een bepaald compatibiliteitsniveau, voert u een upgrade uit van de SQL Server Database Engine en onderhoudt u het vorige databasecompatibiliteitsniveau. In dit scenario hoeft u geen toepassing opnieuw tecertificeren. Zie compatibiliteitsniveaus en upgrades van database-engine verderop in dit artikel voor meer informatie.
Voor nieuwe ontwikkelwerkzaamheden of wanneer voor een bestaande toepassing nieuwe functies, zoals Intelligente queryverwerking, en een aantal nieuwe Transact-SQL-toepassingen zijn vereist, moet u het databasecompatibiliteitsniveau upgraden naar het meest recente dat beschikbaar is in SQL Server en uw toepassing opnieuwcertificeren om met dat compatibiliteitsniveau te werken. Zie Aanbevolen procedures voor het upgraden van databasecompatibiliteitsniveau voor meer informatie over het upgraden van het databasecompatibiliteitsniveau.
Waarom de vorm van het queryplan?
De shape van het queryplan verwijst naar de visuele weergave van de verschillende operators waaruit een queryplan bestaat. Dit omvat operators zoals zoekacties, scans, joins en sorteringen, evenals de verbindingen tussen deze operators die de gegevensstroom aangeven en de volgorde van de bewerkingen die moeten worden uitgevoerd om de beoogde resultatenset te produceren. De shape van het queryplan wordt bepaald door de queryoptimalisatie.
Als u de prestaties van query's voorspelbaar wilt houden tijdens een upgrade, is een van de fundamentele doelen om ervoor te zorgen dat dezelfde shape voor het queryplan wordt gebruikt. Dit kan worden bereikt door het compatibiliteitsniveau van de database niet direct na een upgrade te wijzigen, ook al heeft de onderliggende database-engine verschillende versies. Als er niets anders is gewijzigd in het ecosysteem voor queryuitvoering, zoals belangrijke wijzigingen in beschikbare resources of gegevensdistributie in de onderliggende gegevens, blijven de prestaties van een query ongewijzigd.
Het behouden van de shape van een queryplan is echter niet de enige factor die mogelijk gevolgen heeft voor de prestaties na een upgrade. Als u de database verplaatst naar een nieuwere database-engine en ook omgevingswijzigingen aanbrengt, kunt u factoren introduceren die direct van invloed zijn op de prestaties van een query, zelfs als het queryplan dezelfde vorm behoudt in verschillende versies. Deze omgevingswijzigingen kunnen bestaan uit de nieuwe database-engine met meer of minder geheugen- en CPU-resources, wijzigingen in server- of databaseconfiguratieopties of wijzigingen in gegevensdistributie die van invloed zijn op de wijze waarop een queryplan wordt gemaakt. Daarom is het belangrijk om te begrijpen dat het onderhoud van het databasecompatibiliteitsniveau beschermt tegen wijzigingen in de shape van het queryplan, maar biedt geen bescherming tegen andere omgevingsaspecten die invloed hebben op de queryprestaties, waarvan sommige door de gebruiker geïnitieerde wijzigingen zijn.
Zie de architectuurhandleiding voor queryverwerking voor meer informatie.
Voordelen van compatibiliteitscertificering
Er zijn verschillende directe voordelen voor databasecertificering als een op compatibiliteit gebaseerde benadering in plaats van een benadering met een benoemde versie:
Koppel toepassingscertificering los van het platform. Vanwege de gedeelde database-engine hoeft voor toepassingen die alleen Transact-SQL query's moeten uitvoeren, geen afzonderlijke certificeringsprocessen voor Azure en on-premises te onderhouden.
Verminder upgraderisico's omdat tijdens de modernisering van het databaseplatform, upgradecycli voor toepassingen en databases platformen kunnen worden gescheiden voor minder onderbrekingen en verbeterd wijzigingsbeheer.
Upgrade zonder codewijzigingen. Upgraden naar een nieuwe versie van SQL Server of Azure SQL Database kan zonder codewijzigingen worden uitgevoerd door hetzelfde compatibiliteitsniveau als het bronsysteem te behouden en u hoeft pas onmiddellijk opnieuw te worden gecertificeerd wanneer de toepassing verbeteringen moet gebruiken die alleen beschikbaar zijn in een hoger compatibiliteitsniveau voor databases.
Verbeter de beheerbaarheid en schaalbaarheid zonder dat toepassingswijzigingen nodig zijn, met behulp van verbeteringen die niet worden beperkt door het compatibiliteitsniveau van de database. In SQL Server zijn dit bijvoorbeeld:
Uitgebreide verbeteringen voor bewaking en probleemoplossing, met nieuwe dynamische systeembeheerweergaven, uitgebreide gebeurtenissen en automatisch afstemmen.
Verbeterde schaalbaarheid, bijvoorbeeld met automatische soft-NUMA, versneld databaseherstel of tempdb-metagegevens die zijn geoptimaliseerd voor geheugen.
Nieuwe databases zijn nog steeds ingesteld op het standaardcompatibiliteitsniveau van de database-engineversie. Maar wanneer een database wordt hersteld of gekoppeld vanuit een eerdere versie van SQL Server aan een nieuwe versie van SQL Server of Azure SQL Database, behoudt de database het bestaande compatibiliteitsniveau.
Ondersteund compatibiliteitsniveau controleren
Voordat u een database naar een nieuwe versie van SQL Server of Azure SQL Database verplaatst, controleert u of het compatibiliteitsniveau van de database nog steeds wordt ondersteund. De ondersteuningsmatrix voor databasecompatibiliteitsniveaus kan worden weergegeven in ALTER DATABASE compatibiliteitsniveau-argumenten.
Een database upgraden met een compatibiliteitsniveau dat lager is dan het toegestane niveau (bijvoorbeeld 90, de standaardwaarde in SQL Server 2005 (9.x)), stelt de database in op het laagste compatibiliteitsniveau dat is toegestaan (100).
Als u het huidige compatibiliteitsniveau wilt bepalen, voert u een query uit op de compatibility_level
kolom in sys.databases.
Compatibiliteitsniveaus en upgrades van database-engine
Als u de database-engine wilt upgraden naar de nieuwste versie, terwijl u het compatibiliteitsniveau van de database behoudt dat vóór de upgrade en de ondersteuningsstatus ervan bestond, moet u statische functionele surface area-validatie uitvoeren van de toepassingscode in de database (programmeerobjecten zoals opgeslagen procedures, functies, triggers en andere) en in de toepassing (met behulp van een workloadtracering waarmee de dynamische code wordt vastgelegd die door de toepassing wordt verzonden).
Dit kan eenvoudig worden gedaan met behulp van het SQL Server-migratieonderdeel in SQL Server Management Studio. Het ontbreken van fouten in de rapportuitvoer, over ontbrekende of incompatibele functionaliteit, beschermt de toepassing tegen functionele regressies op de nieuwe doelversie. Als er wijzigingen nodig zijn om ervoor te zorgen dat uw database werkt in de nieuwe versie, kunt u met het hulpprogramma bepalen waar wijzigingen nodig zijn en welke tijdelijke oplossingen beschikbaar zijn.
Deze functionele validatie is vooral belangrijk bij het verplaatsen van een database van een verouderde versie (zoals SQL Server 2008 R2 (10.50.x) of SQL Server 2012 (11.x)) naar een nieuwe versie van SQL Server of Azure SQL Database, omdat uw toepassingscode mogelijk wordt stopgezet Transact-SQL die niet wordt beveiligd door databasecompatibiliteitsniveau. Maar wanneer u overstapt van een recentere versie (zoals SQL Server 2016 (13.x)) naar SQL Server 2022 (16.x) of Azure SQL Database, hoeft u zich geen zorgen te maken over Transact-SQL. Voor meer informatie over stopgezette Transact-SQL, zie Het gebruik van compatibiliteitsniveau voor achterwaartse compatibiliteit.
Opmerking
Het SQL Server-migratieonderdeel ondersteunt databasecompatibiliteitsniveau 100 en hoger. SQL Server 2005 (9.x) als bronversie wordt uitgesloten.
Het is raadzaam om een aantal minimale tests uit te voeren om het succes van een upgrade te valideren, terwijl het vorige compatibiliteitsniveau van de database behouden blijft. U moet bepalen wat minimale test betekent voor uw eigen toepassing en scenario.
Beveiliging van queryplannen
Microsoft biedt vormbescherming voor de queryplannen wanneer:
De nieuwe SQL Server-versie (doel) wordt uitgevoerd op hardware die vergelijkbaar is met de hardware waarop de vorige SQL Server-versie (bron) werd uitgevoerd.
Hetzelfde ondersteunde databasecompatibiliteitsniveau wordt gebruikt op zowel de doel-SQL Server als de bron-SQL Server.
Dezelfde database en werkbelasting worden gebruikt op zowel de doel-SQL Server als de bron-SQL Server.
Elke regressie in de vorm van een queryplan (vergeleken met de oorspronkelijke SQL Server) die onder deze voorwaarden plaatsvindt, zal worden aangepakt. Neem in dit geval contact op met de klantondersteuning van Microsoft.