Sdílet prostřednictvím


Certifikace kompatibility

platí pro: SQL Server Azure SQL DatabaseAzure SQL Managed Instance

Certifikace kompatibility umožňuje firmám upgradovat a modernizovat databázi SQL Serveru místně, v cloudu a na hraničních zařízeních a eliminovat tak rizika kompatibility aplikací.

Stejný databázový stroj využívá SQL Server i Azure SQL Database (včetně služby Azure SQL Managed Instance). Tento sdílený databázový stroj znamená, že uživatelskou databázi je možné bezproblémově přesouvat mezi místním SQL Serverem a službou Azure SQL Database, zatímco kód aplikace, který se spouští v databázi jako Transact-SQL bude dál fungovat stejně jako ve zdrojovém systému.

Pro každou novou verzi SQL Serveru je výchozí úroveň kompatibility nastavená na verzi databázového stroje. Úroveň kompatibility předchozích verzí je však zachována kvůli trvalé kompatibilitě stávajících aplikací. Tuto matici kompatibility si můžete prohlédnout tady. Proto byla aplikace certifikovaná pro práci s danou verzí SQL Serveru ve skutečnosti certifikovaná tak, aby fungovala na výchozí úrovni kompatibility této verze.

Například úroveň kompatibility databáze 130 byla výchozí v SQL Serveru 2016 (13.x). Vzhledem k tomu, že úrovně kompatibility vynucují konkrétní Transact-SQL funkční chování a chování optimalizace dotazů, databáze certifikovaná pro práci na SQL Serveru 2016 (13.x) byla implicitně certifikovaná na úrovni kompatibility databáze 130. Tato databáze může fungovat as-is na novější verzi SQL Serveru (například SQL Server 2019 (15.x) a Azure SQL Database, pokud je úroveň kompatibility databáze zachována jako 130.

Jedná se o základní princip modelu kontinuální integrace služby Microsoft Azure SQL Database. Databázový stroj se průběžně vylepšuje a upgraduje v Azure, ale vzhledem k tomu, že stávající databáze udržují aktuální úroveň kompatibility, budou i nadále fungovat tak, jak jsou navrženy i po upgradu na základní databázový stroj.

Toto je také způsob, jakým se SharePoint Server 2016 a SharePoint Server 2019 certifikují na SQL Serveru a Azure SQL Managed Instance. Pro tyto verze serveru SharePoint Server můžete nasadit libovolný databázový stroj SQL Server, který používá podporované úrovně kompatibility databáze. Další informace najdete v tématu Požadavky na hardware a software pro SharePoint Server 2016a požadavky na hardware a software pro SharePoint Server 2019.

Správa rizika upgradu s certifikací kompatibility

Použití certifikace kompatibility je cenný přístup k modernizaci databáze. Když vývojáři certifikujete na základě úrovně kompatibility, nastavíte technické požadavky na aplikaci, která se má podporovat na SQL Serveru a Azure SQL Database, ale oddělíte životní cyklus aplikace od životního cyklu databázové platformy. To umožňuje společnostem udržovat databázový stroj SQL Serveru upgradovaný podle potřeby zásadami životního cyklu, pomocí nových vylepšení škálovatelnosti a výkonu, které nejsou závislé na kódu, a propojení aplikací udržovat jejich funkční stav prostřednictvím upgradů.

Hlavními rizikovými faktory pro každý upgrade je možnost nežádoucího vlivu na funkčnost a problémy s výkonem. Certifikace kompatibility představuje klid v souvislosti se správou těchto rizik upgradu:

  • V souvislosti s chováním Transact-SQL znamená jakákoli změna, že aplikace musí být znovu certifikované kvůli správnosti. Nastavení úrovně kompatibility databáze však poskytuje zpětnou kompatibilitu se staršími verzemi SQL Serveru pouze pro zadanou databázi, ne pro celý server. Zachování úrovně kompatibility databáze as-is zajišťuje, že stávající dotazy aplikací budou dál zobrazovat stejné chování před upgradem databázového stroje a po jeho upgradu. Další informace o chování Transact-SQL a úrovních kompatibility naleznete v tématu Použití úrovní kompatibility pro zpětnou kompatibilitu.

  • V souvislosti s výkonem, protože vylepšení optimalizátoru dotazů jsou zavedena s každou verzí, lze očekávat, že narazí na rozdíly v plánu dotazů mezi různými verzemi databázového stroje. Rozdíly v plánu dotazů v rozsahu upgradu se obvykle překládají na rizika, pokud je možné, že některé změny můžou být pro daný dotaz nebo úlohu škodlivé. Toto riziko je to, co obvykle řídí potřebu opětovné certifikace aplikací, což může zpozdit upgrady a představovat problémy životního cyklu a podpory.

    Zmírnění rizik upgradu je důvodem, proč jsou vylepšení optimalizátoru dotazů vyřazována na výchozí úroveň kompatibility nové verze (jinými slovy nejvyšší úroveň kompatibility dostupná pro jakoukoli novou verzi). Certifikace kompatibility zahrnuje ochranu obrazců plánu dotazů: pojem, že zachování úrovně kompatibility databáze as-is, okamžitě po upgradu databázového stroje, se přeloží na použití stejného modelu optimalizace dotazů v nové verzi, jak tomu bylo před upgradem, a tvar plánu dotazu by se neměl měnit.

    Další informace najdete v části Proč tvar plánu dotazu? v tomto článku.

Další informace o úrovních kompatibility naleznete v tématu Použití úrovní kompatibility pro zpětnou kompatibilitu.

Pro existující aplikaci, která již byla certifikována pro danou úroveň kompatibility, upgradujte databázový stroj SQL Serveru a udržujte předchozí úroveň kompatibility databáze. V tomto scénáři není nutné znovu certifikovat aplikaci. Další informace najdete v tématu Úrovně kompatibility a upgrady databázového stroje dále v tomto článku.

Pro novou vývojovou práci nebo v případě, že existující aplikace vyžaduje použití nových funkcí, jako je inteligentní zpracování dotazů a některé nové transact-SQL, naplánujte upgrade úrovně kompatibility databáze na nejnovější dostupnou v SQL Serveru a znovu certifikujte aplikaci, aby fungovala s touto úrovní kompatibility. Další informace o upgradu úrovně kompatibility databáze najdete v tématu Osvědčené postupy pro upgrade úrovně kompatibility databáze.

Proč struktura plánu dotazu?

Tvar plánu dotazu odkazuje na vizuální znázornění různých operátorů, které tvoří plán dotazu. To zahrnuje operátory, jako je hledání, prohledávání, spojení a řazení, a také propojení mezi nimi, která označují tok dat a pořadí operací, které se musí spustit, aby se vytvořila zamýšlená sada výsledků. Tvar plánu dotazu určuje optimalizátor dotazů.

Aby byl výkon dotazů předvídatelný během upgradu, jedním ze základních cílů je zajistit, aby se používal stejný tvar plánu dotazů. Toho lze dosáhnout tak, že hned po upgradu nezměníte úroveň kompatibility databáze, i když má základní databázový stroj různé verze. Pokud se v ekosystému spouštění dotazů nic jiného nezměnilo, například významné změny dostupných prostředků nebo distribuce dat v podkladových datech, měl by výkon dotazu zůstat beze změny.

Zachování tvaru plánu dotazů ale není jediným faktorem, který může mít po upgradu vliv na výkon. Pokud přesunete databázi do novějšího databázového stroje a zároveň provedete změny prostředí, můžete zavést faktory, které mají okamžitý vliv na výkon dotazu, i když plán dotazu zachová stejný tvar napříč verzemi. Tyto změny prostředí mohou zahrnovat nový databázový stroj, který má k dispozici více nebo méně prostředků paměti a procesoru, změny možností konfigurace serveru nebo databáze nebo změny distribuce dat, které ovlivňují způsob vytvoření plánu dotazů. Proto je důležité pochopit, že udržování úrovně kompatibility databáze chrání před změnami ve tvaru plánu dotazu, ale nenabízí žádnou ochranu před jinými aspekty prostředí, které ovlivňují výkon dotazů, z nichž některé jsou změny iniciované uživatelem.

Další informace najdete v průvodci architekturou zpracování dotazů.

Výhody certifikace kompatibility

Existuje několik okamžitých výhod certifikace databáze jako přístupu založeného na kompatibilitě, nikoli přístupu pojmenované verze:

  • Oddělte certifikaci aplikace od platformy. Vzhledem ke sdílenému databázovému stroji není potřeba pro aplikace, které potřebují provádět Transact-SQL dotazy, udržovat samostatné certifikační procesy pro Azure a místní prostředí.

  • Snižte rizika upgradu , protože během modernizace databázové platformy je možné cykly upgradu aplikační a databázové platformy oddělit za účelem menšího přerušení a lepší správy změn.

  • Upgradujte beze změn kódu. Upgrade na novou verzi SQL Serveru nebo služby Azure SQL Database je možné provést beze změn kódu tím, že zachová stejnou úroveň kompatibility jako zdrojový systém a nebude nutné provést okamžitou opětovnou certifikaci, dokud aplikace potřebuje použít vylepšení, která jsou k dispozici pouze na vyšší úrovni kompatibility databáze.

  • Vylepšení možností správy a škálovatelnosti bez nutnosti změn aplikací pomocí vylepšení, která nejsou brána na úrovni kompatibility databáze. V SQL Serveru patří například:

Nové databáze jsou stále nastavené na výchozí úroveň kompatibility verze databázového stroje. Pokud se ale databáze obnoví nebo připojí z jakékoli starší verze SQL Serveru k nové verzi SQL Serveru nebo Azure SQL Database, databáze si zachová stávající úroveň kompatibility.

Ověření podporované úrovně kompatibility

Před přesunem databáze do nové verze SQL Serveru nebo Azure SQL Database ověřte, jestli je stále podporovaná úroveň kompatibility databáze. Matice podpory na úrovni kompatibility databáze se dá zobrazit v argumentech úrovně kompatibility ALTER DATABASE.

Při upgradu databáze s nižší úrovní kompatibility než je povolená úroveň (například 90, což byla výchozí hodnota v SQL Serveru 2005 (9.x)) nastavuje databázi na nejnižší povolenou úroveň kompatibility (100).

Pokud chcete zjistit aktuální úroveň kompatibility, zadejte dotaz na compatibility_level sloupec v sys.databases.

Úrovně kompatibility a upgrady databázového stroje

Pokud chcete upgradovat databázový stroj na nejnovější verzi a současně zachovat úroveň kompatibility databáze, která existovala před upgradem a stavem její možnosti podpory, měli byste provést statické ověření oblasti funkčnosti kódu aplikace v databázi (objekty programovatelnosti, jako jsou uložené procedury, funkce, triggery a další) a v aplikaci (pomocí trasování úloh, které zachycuje dynamický kód odesílaný aplikací).

To lze snadno provést pomocí komponenty migrace SQL Serveru v aplikaci SQL Server Management Studio. Nepřítomnost chyb v reportu, ohledně chybějící nebo nekompatibilní funkčnosti, chrání aplikaci před jakoukoli regresí funkčnosti v nové cílové verzi. Pokud se vyžadují změny, aby vaše databáze fungovala v nové verzi, nástroj vám umožní určit, kde jsou potřebné změny, a jaká alternativní řešení jsou k dispozici.

Toto funkční ověřování je zvlášť důležité při přesunu databáze ze starší verze (například SQL Server 2008 R2 (10.50.x) nebo SQL Serveru 2012 (11.x)) do nové verze SQL Serveru nebo Azure SQL Database, protože kód aplikace může používat ukončené Transact-SQL, které nejsou chráněné úrovní kompatibility databáze. Ale při přechodu z novější verze (například SQL Serveru 2016 (13.x)) na SQL Server 2022 (16.x) nebo Azure SQL Database se nemusíte starat o žádné ukončené Transact-SQL. Další informace o ukončení jazyka Transact-SQL naleznete v tématu Použití úrovně kompatibility pro zpětnou kompatibilitu.

Poznámka:

Součást migrace SQL Serveru podporuje úroveň kompatibility databáze 100 a vyšší. SQL Server 2005 (9.x) jako zdrojová verze je vyloučen.

Doporučujeme provést několik minimálních testů, abyste ověřili úspěch upgradu a zachovali předchozí úroveň kompatibility databáze. Měli byste určit, co minimální testování znamená pro vaši vlastní aplikaci a scénář.

Ochrana plánu dotazů

Microsoft poskytuje ochranu struktury plánu dotazů, když:

  • Nová verze SQL Serveru (cíl) běží na hardwaru, který je srovnatelný s hardwarem, na kterém byla spuštěna předchozí verze (zdroj) SQL Serveru.

  • Stejná podporovaná úroveň kompatibility databáze se používá jak na cílovém SQL Serveru, tak na zdrojovém SQL Serveru.

  • Stejná databáze a úloha se používají na cílovém SQL Serveru i na zdrojovém SQL Serveru.

Vyřeší se jakákoli regrese obrazce plánu dotazu (ve srovnání se zdrojovým SQL Serverem), ke kterému dochází za těchto podmínek. V tomto případě se obraťte na zákaznickou podporu Microsoftu.