Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Med kompatibilitetscertifiering kan företag uppgradera och modernisera en SQL Server-databas lokalt, i molnet och på gränsen, vilket eliminerar riskerna för programkompatibilitet.
Samma databasmotor driver både SQL Server och Azure SQL Database (inklusive Azure SQL Managed Instance). Den här delade databasmotorn innebär att en användardatabas kan flyttas sömlöst mellan lokal SQL Server och Azure SQL Database, medan programkoden som körs i databasen som Transact-SQL fortsätter att fungera som den skulle i källsystemet.
För varje ny version av SQL Server är standardkompatibilitetsnivån inställd på databasmotorns version. Men kompatibilitetsnivån för tidigare versioner bevaras för fortsatt kompatibilitet för befintliga program. Den här kompatibilitetsmatrisen visas här. Därför har ett program som har certifierats för att fungera med en viss SQL Server-version i själva verket certifierats för att fungera på den versionens standardkompatibilitetsnivå.
Till exempel var databaskompatibilitetsnivå 130 standard i SQL Server 2016 (13.x). Eftersom kompatibilitetsnivåer tvingar fram specifika Transact-SQL funktions- och frågeoptimeringsbeteenden har en databas som är certifierad att fungera på SQL Server 2016 (13.x) implicit certifierats på databaskompatibilitetsnivå 130. Den här databasen kan fungera as-is på en nyare version av SQL Server (till exempel SQL Server 2019 (15.x)) och Azure SQL Database, så länge databaskompatibilitetsnivån hålls som 130.
Det här är en grundläggande princip för den kontinuerliga integreringsmodellen för Microsoft Azure SQL Database. Databasmotorn förbättras och uppgraderas kontinuerligt i Azure, men eftersom befintliga databaser behåller sin aktuella kompatibilitetsnivå fortsätter de att fungera som de är utformade även efter uppgraderingar till den underliggande databasmotorn.
Det är också så SharePoint Server 2016 och SharePoint Server 2019 certifierar på SQL Server och Azure SQL Managed Instance. Du kan distribuera valfri SQL Server-databasmotor som använder databaskompatibilitetsnivåer som stöds för dessa SharePoint Server-versioner. Mer information finns i Maskinvaru- och programvarukrav för SharePoint Server 2016 och maskinvaru- och programvarukrav för SharePoint Server 2019.
Hantera uppgraderingsrisk med kompatibilitetscertifiering
Att använda kompatibilitetscertifiering är en värdefull metod för databasmodernisering. När utvecklare certifierar baserat på kompatibilitetsnivå anger du de tekniska kraven för att ett program ska stödjas på SQL Server och Azure SQL Database, men frikoppla programlivscykeln från databasplattformens livscykel. Detta gör det möjligt för företag att hålla SQL Server Database Engine uppgraderad efter behov av livscykelprinciper, med hjälp av nya skalbarhets- och prestandaförbättringar som inte är kodberoende och anslutande program behåller sin funktionsstatus genom uppgraderingar.
De viktigaste riskfaktorerna för en uppgradering är möjligheten att påverka funktioner och prestandaproblem negativt. Kompatibilitetscertifiering representerar sinnesfrid när det gäller att hantera dessa uppgraderingsrisker:
I det som rör Transact-SQL beteende innebär alla ändringar att ett program måste omcertifieras för korrekthet. Inställningen för databaskompatibilitetsnivå ger dock bakåtkompatibilitet med tidigare versioner av SQL Server endast för den angivna databasen, inte för hela servern. Om du behåller databasens kompatibilitetsnivå as-is ser du till att befintliga programfrågor fortsätter att visa samma beteende före och efter en uppgradering av databasmotorn. Mer information om Transact-SQL beteende- och kompatibilitetsnivåer finns i Använda kompatibilitetsnivåer för bakåtkompatibilitet.
När det gäller prestanda, eftersom förbättringar i Frågeoptimeraren introduceras med varje version, kan det förväntas stöta på frågeplansskillnader mellan olika databasmotorversioner. Frågeplansskillnader i omfånget för en uppgradering innebär vanligtvis risk, när det finns potential att vissa ändringar kan vara skadliga för en viss fråga eller arbetsbelastning. I sin tur är den här risken det som vanligtvis driver behovet av programomcertifiering, vilket kan fördröja uppgraderingar och utgöra livscykel- och supportutmaningar.
Att minska uppgraderingsriskerna är anledningen till att förbättringar av Frågeoptimeraren är kopplade till standardkompatibilitetsnivån för en ny version (med andra ord den högsta tillgängliga kompatibilitetsnivån för alla nya versioner). Kompatibilitetscertifiering innehåller formskydd för frågeplan: tanken att upprätthållande av en databaskompatibilitetsnivå as-is, omedelbart efter en uppgradering av databasmotorn, översätts till att använda samma frågeoptimeringsmodell i den nya versionen som den var före uppgraderingen, och frågeplansformen bör inte ändras.
För mer information, se avsnittet Varför frågeplansform? i den här artikeln.
Mer information om kompatibilitetsnivåer finns i Använda kompatibilitetsnivåer för bakåtkompatibilitet.
För ett befintligt program som redan har certifierats för en viss kompatibilitetsnivå uppgraderar du SQL Server Database Engine och underhåller den tidigare databaskompatibilitetsnivån. Du behöver inte omcertifiera ett program i det här scenariot. Mer information finns i Kompatibilitetsnivåer och Uppgraderingar av databasmotorn senare i den här artikeln.
För nytt utvecklingsarbete, eller när ett befintligt program kräver användning av nya funktioner som Intelligent frågebearbetning och några nya Transact-SQL, planerar du att uppgradera databasens kompatibilitetsnivå till den senaste tillgängliga i SQL Server och omcertifiera ditt program så att det fungerar med den kompatibilitetsnivån. Mer information om hur du uppgraderar databasens kompatibilitetsnivå finns i Metodtips för uppgradering av databaskompatibilitetsnivå.
Varför frågeplanens utformning?
Frågeplansform refererar till den visuella representationen av de olika operatorer som utgör en frågeplan. Detta omfattar operatorer som söker, genomsöker, kopplar och sorterar, samt anslutningarna mellan dem som anger flödet av data och ordningen på de åtgärder som måste köras för att skapa den avsedda resultatuppsättningen. Frågeplansformen bestäms av frågeoptimeraren.
För att hålla frågeprestandan förutsägbar under en uppgradering är ett av de grundläggande målen att se till att samma frågeplansform används. Detta kan uppnås genom att inte ändra databasens kompatibilitetsnivå omedelbart efter en uppgradering, även om den underliggande databasmotorn har olika versioner. Om inget annat har ändrats i frågekörningens ekosystem, till exempel betydande ändringar i tillgängliga resurser eller datadistribution i underliggande data, bör en frågas prestanda förbli oförändrad.
Men att behålla en frågeplans form är inte den enda faktorn som kan få prestandakonsekvenser efter en uppgradering. Om du flyttar databasen till en nyare databasmotor och även gör miljöändringar kan du introducera faktorer som har en omedelbar effekt på en frågas prestanda, även om frågeplanen behåller samma form mellan olika versioner. Dessa miljöändringar kan vara att den nya databasmotorn har mer eller mindre minne och processorresurser tillgängliga, ändringar i server- eller databaskonfigurationsalternativ eller ändringar i datadistributionen som påverkar hur en frågeplan skapas. Därför är det viktigt att förstå att upprätthållande av databasens kompatibilitetsnivå skyddar mot ändringar i frågeplanens form, men erbjuder inget skydd mot andra miljöaspekter som påverkar frågeprestanda, varav vissa är användarinitierade ändringar.
Mer information finns i arkitekturguiden för frågebearbetning.
Fördelar med kompatibilitetscertifiering
Det finns flera omedelbara fördelar med databascertifiering som en kompatibilitetsbaserad metod i stället för en metod med namngivna versioner:
Frikoppla programcertifiering från plattformen. På grund av den delade databasmotorn behöver du inte underhålla separata certifieringsprocesser för Azure och lokalt för program som bara behöver köra Transact-SQL frågor.
Minska uppgraderingsriskerna eftersom uppgraderingscyklerna för program- och databasplattformslager under moderniseringen av databasplattformen kan separeras för mindre avbrott och förbättrad ändringshantering.
Uppgradera utan kodändringar. Du kan uppgradera till en ny version av SQL Server eller Azure SQL Database utan kodändringar genom att behålla samma kompatibilitetsnivå som källsystemet, och du behöver inte omedelbart åtgärda det förrän programmet behöver använda förbättringar som endast är tillgängliga på en högre databaskompatibilitetsnivå.
Förbättra hanterbarheten och skalbarheten utan att kräva programändringar, med hjälp av förbättringar som inte är begränsade av databasens kompatibilitetsnivå. I SQL Server omfattar dessa till exempel:
Omfattande förbättringar av övervakning och felsökning med nya vyer för dynamisk systemhantering, utökade händelser och automatisk justering.
Förbättrad skalbarhet, till exempel med automatisk mjuk-NUMA, accelererad databasåterställning eller minnesoptimerade tempdb-metadata.
Nya databaser är fortfarande inställda på standardkompatibilitetsnivån för databasmotorversionen. Men när en databas återställs eller kopplas från en tidigare version av SQL Server till en ny version av SQL Server eller Azure SQL Database behåller databasen sin befintliga kompatibilitetsnivå.
Kontrollera kompatibilitetsnivån som stöds
Innan du flyttar en databas till en ny version av SQL Server eller Azure SQL Database kontrollerar du om databasens kompatibilitetsnivå fortfarande stöds. Stödmatrisen för databaskompatibilitetsnivå visas i ALTER DATABASE-kompatibilitetsnivåargument.
Om du uppgraderar en databas med en kompatibilitetsnivå som är lägre än den tillåtna nivån (till exempel 90 som var standard i SQL Server 2005 (9.x)) anger databasen till den lägsta tillåtna kompatibilitetsnivån (100).
Om du vill fastställa den aktuella kompatibilitetsnivån frågar du compatibility_level kolumnen i sys.databases.
Kompatibilitetsnivåer och uppgraderingar av databasmotorn
Om du vill uppgradera databasmotorn till den senaste versionen bör du, samtidigt som databaskompatibilitetsnivån som fanns före uppgraderingen och dess supportstatus, utföra statisk funktionell ytvalidering av programkoden i databasen (programmeringsobjekt som lagrade procedurer, funktioner, utlösare och andra) och i programmet (med hjälp av en arbetsbelastningsspårning som fångar den dynamiska kod som skickas av programmet).
Detta kan enkelt göras med hjälp av SQL Server-migreringskomponenten i SQL Server Management Studio. Avsaknaden av fel i rapportens utdata, om saknade eller inkompatibla funktioner, skyddar programmet från eventuella funktionella regressioner på den nya målversionen. Om ändringar krävs för att säkerställa att databasen fungerar i den nya versionen kan du med verktyget se var ändringar behövs och vilka lösningar som är tillgängliga.
Den här funktionsverifieringen är särskilt viktig när du flyttar en databas från en äldre version (till exempel SQL Server 2008 R2 (10.50.x) eller SQL Server 2012 (11.x)) till en ny version av SQL Server eller Azure SQL Database, eftersom programkoden kanske använder avbrutna Transact-SQL som inte skyddas av databasens kompatibilitetsnivå. Men när du flyttar från en nyare version (till exempel SQL Server 2016 (13.x)) till SQL Server 2022 (16.x) eller Azure SQL Database, finns det ingen utgående Transact-SQL att oroa dig för. Mer information om utgående Transact-SQL finns i Använda kompatibilitetsnivå för bakåtkompatibilitet.
Anmärkning
SQL Server-migreringskomponenten stöder databaskompatibilitetsnivå 100 och senare. SQL Server 2005 (9.x) som källversion undantas.
Vi rekommenderar att du utför några minimala tester för att verifiera att en uppgradering lyckades, samtidigt som den tidigare databasens kompatibilitetsnivå bibehålls. Du bör bestämma vad minimal testning innebär för ditt eget program och scenario.
Skydd av frågeplan
Microsoft tillhandahåller formskydd för frågeplan när:
Den nya SQL Server-versionen (mål) körs på maskinvara som är jämförbar med maskinvaran där den tidigare SQL Server-versionen (källan) kördes.
Samma databaskompatibilitetsnivå som stöds används på både SQL Server-målservern och SQL Server-källan.
Samma databas och arbetsbelastning används på både sql-målservern och sql-källservern.
Alla frågeplansformregressioner (jämfört med källans SQL Server) som inträffar under dessa villkor kommer att åtgärdas. Kontakta Microsofts kundsupport i det här fallet.