Migrace databáze Accessu na SQL Server
Applies ToAccess pro Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Všichni máme omezení a databáze Accessu není výjimkou. Například databáze Accessu má limit velikosti 2 GB a nemůže podporovat více než 255 souběžných uživatelů. Takže když je čas, aby vaše databáze Accessu přešla na další úroveň, můžete migrovat na SQL Server. SQL Server (místní nebo v cloudu Azure) podporuje větší objemy dat, více souběžných uživatelů a má větší kapacitu než databázový stroj JET/ACE. Tato příručka vám poskytne hladký začátek cesty k SQL Serveru, pomůže zachovat front-endová řešení Accessu, která jste vytvořili, a doufejme, že vás motivuje k používání Accessu pro budoucí databázová řešení. K úspěšné migraci použijte Nástroj Microsoft SQL Server Migration Assistant (SSMA). Postupujte podle těchto fází.

Fáze migrace databáze na SQL Server

Než začnete

Následující části obsahují základní informace a další informace, které vám pomůžou začít.

Informace o rozdělených databázích

Všechny databázové objekty Accessu mohou být buď v jednom databázovém souboru, nebo mohou být uložené ve dvou databázových souborech: front-endové databázi a back-endové databázi. To se nazývá rozdělení databáze a je navržené tak, aby usnadnilo sdílení v síťovém prostředí. Soubor back-endové databáze smí obsahovat pouze tabulky a relace. Front-endový soubor musí obsahovat pouze všechny ostatní objekty, včetně formulářů, sestav, dotazů, maker, modulů VBA a propojených tabulek back-endové databáze. Když migrujete databázi Accessu, podobá se rozdělené databázi v tom, že SQL Server funguje jako nový back-end pro data, která se teď nacházejí na serveru.

V důsledku toho můžete i nadále udržovat databázi front-end Accessu s propojenými tabulkami s tabulkami SQL Serveru. Ve skutečnosti můžete odvodit výhody rychlého vývoje aplikací, který accessová databáze poskytuje, spolu se škálovatelností SQL Serveru.

Výhody SQL Serveru

Potřebujete k migraci na SQL Server nějaké přesvědčivé informace? Tady jsou některé další výhody, o nichž je potřeba přemýšlet:

  • Více souběžných uživatelů    SQL Server dokáže zpracovat mnohem více souběžných uživatelů než Access a minimalizuje požadavky na paměť při přidání dalších uživatelů.

  • Zvýšená dostupnost    S SQL Serverem můžete dynamicky zálohovat databázi, ať už přírůstkovou, nebo úplnou, když se používá. Není proto třeba nutit uživatele k zavření databáze, aby bylo možné vytvořit zálohu dat.

  • Vysoký výkon a škálovatelnost    Databáze SQL Serveru obvykle funguje lépe než databáze Accessu, zejména s velkou databází o velikosti terabajtů. SQL Server také zpracovává dotazy mnohem rychleji a efektivně tím, že dotazy zpracovává paralelně, přičemž k zpracování požadavků uživatelů používá více nativních vláken v rámci jednoho procesu.

  • Vylepšené zabezpečení    Pomocí důvěryhodného připojení se SQL Server integruje se zabezpečením systému Windows, aby poskytoval jediný integrovaný přístup k síti a databázi, přičemž využívá to nejlepší z obou systémů zabezpečení. Díky tomu je správa složitých schémat zabezpečení mnohem jednodušší. SQL Server je ideální úložiště pro citlivé informace, jako jsou čísla sociálního pojištění, údaje o platebních kartách a důvěrné adresy.

  • Okamžitá obnovitelnost     Pokud dojde k chybovému ukončení operačního systému nebo dojde k výpadku napájení, může SQL Server během několika minut automaticky obnovit databázi do konzistentního stavu bez zásahu správce databáze.

  • Použití sítě VPN    Přístup a virtuální privátní sítě (VPN) spolu nefungují. S SQL Serverem ale můžou vzdálení uživatelé dál používat front-end databázi Accessu na počítači a back-end SQL Serveru umístěný za bránou firewall VPN.

  • Azure SQL Server    Kromě výhod SQL Serveru nabízí dynamickou škálovatelnost bez výpadků, inteligentní optimalizaci, globální škálovatelnost a dostupnost, odstranění nákladů na hardware a nižší správu.

Výběr nejlepší možnosti Azure SQL Serveru

Pokud migrujete na Azure SQL Server, můžete si vybrat ze tří možností, z nichž každá má různé výhody:

  • Jednoúčelová databáze nebo elastické fondy    Tato možnost má vlastní sadu prostředků spravovaných prostřednictvím serveru SLUŽBY SQL Database. Jednoúčelová databáze je jako databáze obsažená v SQL Serveru. Můžete také přidat elastický fond, což je kolekce databází se sdílenou sadou prostředků spravovaných přes server SLUŽBY SQL Database. Nejčastěji používané funkce SQL Serveru jsou k dispozici s integrovanými zálohami, opravami a obnovením. Neexistuje ale žádná zaručená přesná doba údržby a migrace z SQL Serveru může být náročná.

  • Spravovaná instance    Tato možnost je kolekce systémových a uživatelských databází se sdílenou sadou prostředků. Spravovaná instance se podobá instanci databáze SQL Serveru, která je vysoce kompatibilní s místním SQL Serverem. Spravovaná instance má integrované zálohy, opravy, obnovení a snadno se migruje z SQL Serveru. Existuje však malý počet funkcí SQL Serveru, které nejsou k dispozici, a není zaručena žádná přesná doba údržby.

  • Azure Virtual Machine    Tato možnost umožňuje spustit SQL Server na virtuálním počítači v cloudu Azure. Máte plnou kontrolu nad modulem SQL Serveru a snadnou cestou migrace. Potřebujete ale spravovat zálohy, opravy a obnovení.

Další informace najdete v tématech Volba cesty migrace databáze do Azure a Co je Azure SQL?.

První kroky

Existuje několik problémů, které můžete vyřešit předem, které vám můžou pomoct zjednodušit proces migrace před spuštěním SSMA:

  • Přidání indexů tabulek a primárních klíčů    Ujistěte se, že každá tabulka Accessu obsahuje index a primární klíč. SQL Server vyžaduje, aby všechny tabulky měly alespoň jeden index, a pokud je možné tabulku aktualizovat, vyžaduje, aby propojená tabulka měla primární klíč.

  • Kontrola vztahů primárního a cizího klíče    Ujistěte se, že jsou tyto relace založené na polích s konzistentními datovými typy a velikostmi. SQL Server nepodporuje spojené sloupce s různými datovými typy a velikostmi v omezeních cizích klíčů.

  • Odebrání sloupce Příloha    SSMA nemigruje tabulky, které obsahují sloupec Příloha.

Před spuštěním nástroje SSMA proveďte následující první kroky.

  1. Zavřete databázi Accessu.

  2. Ujistěte se, že aktuální uživatelé připojení k databázi také databázi zavřeli.

  3. Pokud je databáze ve formátu souboru .mdb, pak odeberte zabezpečení na úrovni uživatele.

  4. Zálohujte databázi. Další informace najdete v tématu Ochrana dat pomocí procesů zálohování a obnovení.

Tip    Zvažte instalaci edice Microsoft SQL Server Express na stolním počítači, která podporuje až 10 GB a představuje bezplatný a jednodušší způsob, jak projít a zkontrolovat migraci. Při připojení použijte jako instanci databáze LocalDB.

Tip    Pokud je to možné, použijte samostatnou verzi Accessu.

Spuštění SSMA

Microsoft poskytuje pomocníka SSMA ( Microsoft SQL Server Migration Assistant ), který usnadňuje migraci. SSMA migruje hlavně tabulky a výběrové dotazy bez parametrů. Formuláře, sestavy, makra a moduly VBA se nepřevedou. Průzkumník metadat SQL Serveru zobrazí objekty databáze Accessu a objekty SQL Serveru, což vám umožní zkontrolovat aktuální obsah obou databází. Pokud se v budoucnu rozhodnete přenést další objekty, uloží se tato dvě připojení do souboru migrace.

Poznámka:    Proces migrace může nějakou dobu trvat v závislosti na velikosti databázových objektů a množství dat, která je potřeba přenést.

  1. Pokud chcete migrovat databázi pomocí nástroje SSMA, nejprve stáhněte a nainstalujte software poklikáním na stažený soubor MSI. Ujistěte se, že jste pro svůj počítač nainstalovali odpovídající 32bitovou nebo 64bitovou verzi.

  2. Po instalaci nástroje SSMA ho otevřete na ploše, nejlépe z počítače se souborem databáze Accessu.

    Můžete ho také otevřít na počítači, který má přístup k databázi Accessu ze sítě ve sdílené složce.

  3. Postupujte podle úvodních pokynů v nástroji SSMA a uveďte základní informace, jako je umístění SQL Serveru, databáze Accessu a migrované objekty, informace o připojení a informace o tom, jestli chcete vytvořit propojené tabulky.

  4. Pokud migrujete na SQL Server 2016 nebo novější a chcete aktualizovat propojenou tabulku, přidejte sloupec rowversion tak, že vyberete Zkontrolovat nástroje > nastavení projektu > Obecné.

    Pole Rowversion pomáhá vyhnout se konfliktům záznamů. Access používá toto pole rowversion v propojené tabulce SQL Serveru k určení, kdy byl záznam naposledy aktualizován. Pokud do dotazu přidáte pole rowversion, Access ho použije k opětovnému výběru řádku po operaci aktualizace. To zvyšuje efektivitu tím, že pomáhá vyhnout se chybám konfliktu zápisu a scénářům odstranění záznamů, ke kterým může dojít, když Access zjistí jiné výsledky než původní odeslání, například u datových typů čísel s plovoucí desetinou čárkou a aktivačních událostí, které upravují sloupce. Nepoužívejte ale pole rowversion ve formulářích, sestavách nebo kódu VBA. Další informace najdete v tématu Rowversion.

    Poznámka:    Vyhněte se záměně rowversion s časovými razítky. I když je časové razítko klíčového slova synonymem pro rowversion na SQL Serveru, nemůžete použít rowversion jako způsob, jak časového razítka položky dat.

  5. Pokud chcete nastavit přesné datové typy, vyberte Zkontrolovat nástroje > nastavení projektu > mapování typů. Pokud například ukládáte pouze anglický text, můžete místo nvarchar použít datový typ varchar.

Převod objektů

SSMA převede objekty Accessu na objekty SQL Serveru, ale nekopíruje je okamžitě. SSMA poskytuje seznam následujících objektů, které se mají migrovat, abyste se mohli rozhodnout, jestli je chcete přesunout do databáze SQL Serveru:

  • Tabulky a sloupce

  • Vyberte Dotazy bez parametrů.

  • Primární a cizí klíče

  • Indexy a výchozí hodnoty

  • Kontrola omezení (povolit vlastnost sloupce nulové délky, ověřovací pravidlo sloupce, ověření tabulky)

Osvědčeným postupem je použít sestavu posouzení SSMA, která zobrazuje výsledky převodu, včetně chyb, upozornění, informačních zpráv, odhadů času pro provedení migrace a jednotlivých kroků opravy chyb, které je potřeba provést, než objekty skutečně přesunete.

Převod databázových objektů převezme definice objektů z metadat Accessu, převede je na ekvivalentní syntaxi jazyka Transact-SQL (T-SQL) a pak tyto informace načte do projektu. Pak můžete zobrazit objekty SQL Serveru nebo SQL Azure a jejich vlastnosti pomocí SQL Serveru nebo Průzkumníka metadat SQL Azure.

Pokud chcete převést, načíst a migrovat objekty na SQL Server, postupujte podle tohoto průvodce.

Tip    Po úspěšné migraci accessové databáze uložte soubor projektu pro pozdější použití, abyste mohli znovu migrovat data pro účely testování nebo konečné migrace.

Propojení tabulek

Zvažte instalaci nejnovější verze ovladačů SQL Server OLE DB a ODBC místo použití nativních ovladačů SQL Serveru, které se dodávají s Windows. Novější ovladače jsou nejen rychlejší, ale také podporují nové funkce v Azure SQL, které předchozí ovladače nepoužívají. Ovladače můžete nainstalovat do každého počítače, ve kterém se používá převedená databáze. Další informace najdete v tématech Ovladač Microsoft OLE DB 18 pro SQL Server a Ovladač Microsoft ODBC 17 pro SQL Server.

Po migraci tabulek Accessu můžete propojit tabulky v SQL Serveru, který teď hostuje vaše data. Propojení přímo z Accessu také nabízí jednodušší způsob zobrazení dat místo použití složitějších nástrojů pro správu SQL Serveru.  Propojená data můžete dotazovat a upravovat v závislosti na oprávněních, která nastavil správce databáze SQL Serveru.

Poznámka:    Pokud při propojení s databází SQL Serveru během procesu propojení vytvoříte název DSN odbc, vytvořte stejný název DSN na všech počítačích, které používají novou aplikaci, nebo programově použijte připojovací řetězec uložený v souboru DSN.

Další informace najdete v tématech Propojení nebo import dat z databáze Azure SQL Serveru a Import nebo propojení dat v databázi SQL Serveru.

Tip   Nezapomeňte použít Správce propojených tabulek v Accessu, abyste mohli tabulky pohodlně aktualizovat a znovu propojit. Další informace najdete v tématu Správa propojených tabulek.

Testování a revize

Následující části popisují běžné problémy, se kterými se můžete setkat během migrace, a popisují, jak se s nimi vypořádat.

Dotazy

Převedou se pouze výběrové dotazy; jiné dotazy nejsou, včetně výběrových dotazů, které přebírají parametry. Některé dotazy se nemusí úplně převést a nástroj SSMA během procesu převodu hlásí chyby dotazů. Objekty, které se nepřevádějí, můžete ručně upravit pomocí syntaxe jazyka T-SQL. Chyby syntaxe mohou také vyžadovat ruční převod funkcí a datových typů specifických pro Access na funkce a datové typy SQL Serveru. Další informace najdete v článku Porovnání Accessového SQL s SQL Serverem TSQL.

Datové typy

Access a SQL Server mají podobné datové typy, ale mějte na paměti následující potenciální problémy.

Velké číslo    Datový typ Velké číslo ukládá nepeněžní číselnou hodnotu a je kompatibilní s datovým typem BIGINT SQL. Tento datový typ můžete použít k efektivnímu výpočtu velkých čísel, ale vyžaduje použití formátu souboru accessu 16 (16.0.7812 nebo novější) .accdb a lepší výkon s 64bitovou verzí Accessu. Další informace najdete v tématech Použití datového typu Velké číslo a Volba mezi 64bitovou nebo 32bitovou verzí Office.

Ano/Ne    Ve výchozím nastavení je sloupec Ano/Ne aplikace Access převeden na bitové pole SQL Serveru. Abyste se vyhnuli zamykání záznamů, ujistěte se, že je bitové pole nastavené tak, aby nepovoluje hodnoty NULL. V nástroji SSMA můžete vybrat bitový sloupec a nastavit vlastnost Allow Nulls na hodnotu NE. V TSQL použijte příkazy CREATE TABLE nebo ALTER TABLE .

Datum a čas    Je potřeba vzít v úvahu několik aspektů data a času:

  • Pokud je úroveň kompatibility databáze 130 (SQL Server 2016) nebo vyšší a propojená tabulka obsahuje jeden nebo více sloupců datetime nebo datetime2, může tabulka vrátit zprávu #deleted ve výsledcích. Další informace najdete v tématu Propojená tabulka accessu pro SQL-Server databáze vrací #deleted.

  • Pomocí datového typu Datum a čas aplikace Access namapujte na datový typ datetime. Pomocí datového typu Rozšířené datum a čas aplikace Access namapujte na datový typ datetime2 , který má větší rozsah data a času. Další informace najdete v tématu Použití datového typu Rozšířené datum a čas.

  • Při dotazování na data v SQL Serveru vezměte v úvahu čas a také datum. Příklady:

    • DateOrdered Between 1/1/19 and 1/31/19 may not include all orders.

    • DateOrdered Between 1/1/19 00:00:00 AM and 31/1/19 23:59:59 PM zahrnuje všechny objednávky.

Příloha   Datový typ Příloha ukládá soubor v accessové databázi. Na SQL Serveru máte několik možností, které je potřeba zvážit. Soubory můžete extrahovat z accessové databáze a pak zvážit uložení odkazů na soubory v databázi SQL Serveru. Alternativně můžete použít FILESTREAM, FileTables nebo Vzdálené úložiště objektů BLOB (RBS) a zachovat přílohy uložené v databázi SQL Serveru.

Hypertextový odkaz    Tabulky Accessu obsahují sloupce hypertextových odkazů, které SQL Server nepodporuje. Ve výchozím nastavení se tyto sloupce v SQL Serveru převedou na sloupce nvarchar(max), ale mapování můžete přizpůsobit a zvolit menší datový typ. V accessovém řešení můžete chování hypertextových odkazů ve formulářích a sestavách používat i v případě, že nastavíte vlastnost Hypertextový odkaz ovládacího prvku na hodnotu true.

Pole s více hodnotami    Pole Accessu s více hodnotami se převede na SQL Server jako ntextové pole, které obsahuje sadu hodnot s oddělovači. Protože SQL Server nepodporuje datový typ s více hodnotami, který modeluje relaci M:N, může být zapotřebí další návrh a převod.

Další informace o mapování datových typů Accessu a SQL Serveru najdete v tématu Porovnání datových typů.

Poznámka:    Pole s více hodnotami se nepřevedou.

Další informace najdete v tématech Typy data a času, Řetězcové a binární typy a Číselné typy.

Visual Basic

I když SQL Server jazyk VBA nepodporuje, mějte na paměti následující možné problémy:

Funkce jazyka VBA v dotazech    Accessové dotazy podporují funkce jazyka VBA u dat ve sloupci dotazu. Dotazy accessu, které používají funkce jazyka VBA, se ale nedají spustit na SQL Serveru, takže všechna požadovaná data se předají do aplikace Microsoft Access ke zpracování. Ve většině případů by se tyto dotazy měly převést na předávací dotazy.

Uživatelem definované funkce v dotazech    Dotazy Microsoft Accessu podporují použití funkcí definovaných v modulech jazyka VBA ke zpracování dat, která jsou jim předána. Dotazy můžou být samostatné dotazy, příkazy SQL ve zdrojích záznamů formuláře nebo sestavy, zdroje dat polí se seznamem a seznamy ve formulářích, sestavy a pole tabulky a výchozí nebo ověřovací výrazy pravidla. SQL Server nemůže spouštět tyto uživatelem definované funkce. Možná budete muset tyto funkce ručně přepracovat a převést je na uložené procedury na SQL Serveru.

Optimalizace výkonu

Zdaleka nejdůležitějším způsobem optimalizace výkonu s novým back-endovým SQL Serverem je rozhodnutí, kdy použít místní nebo vzdálené dotazy. Při migraci dat na SQL Server také přecházíte ze souborového serveru na výpočetní model databáze klient-server. Postupujte podle těchto obecných pokynů:

  • Pro nejrychlejší přístup na klienta spusťte malé dotazy jen pro čtení.

  • Spusťte na serveru dlouhé dotazy pro čtení a zápis, abyste mohli využívat vyšší výpočetní výkon.

  • Minimalizujte síťový provoz pomocí filtrů a agregace, abyste mohli přenášet jenom data, která potřebujete.

Optimalizace výkonu v databázovém modelu klientského serveru

Další informace najdete v tématu Vytvoření předávacího dotazu.

Níže jsou uvedené další doporučené pokyny.

Vložení logiky na server     Vaše aplikace může také používat zobrazení, uživatelem definované funkce, uložené procedury, počítaná pole a triggery k centralizaci a sdílení aplikační logiky, obchodních pravidel a zásad, složitých dotazů, ověřování dat a referenční integrity kódu na serveru, nikoli na klientovi. Zeptejte se sami sebe, je možné tento dotaz nebo úlohu provádět na serveru lépe a rychleji? Nakonec otestujte každý dotaz, abyste zajistili optimální výkon.

Použití zobrazení ve formulářích a sestavách    V Accessu udělejte toto:

  • Pro formuláře použijte zobrazení SQL pro formulář jen pro čtení a indexované zobrazení SQL pro formulář pro čtení a zápis jako zdroj záznamů.

  • Pro sestavy použijte jako zdroj záznamů zobrazení SQL. Pro každou sestavu ale vytvořte samostatné zobrazení, abyste mohli snadněji aktualizovat konkrétní sestavu, aniž by to mělo vliv na jiné sestavy.

Minimalizace načítání dat ve formuláři nebo sestavě    Nezobrazovat data, dokud o to uživatel nepožádá. Například ponechte vlastnost zdroj záznamů prázdnou, nastavte uživatele, aby ve vašem formuláři vybrali filtr a pak naplňte vlastnost zdroj záznamů filtrem. Nebo použijte klauzuli where v souborech DoCmd.OpenForm a DoCmd.OpenReport, abyste zobrazili přesné záznamy, které uživatel potřebuje. Zvažte vypnutí navigace na záznamech.

Buďte opatrní při heterogenních dotazech   Vyhněte se spouštění dotazu, který kombinuje místní accessovou tabulku a propojenou tabulku SQL Serveru, někdy označovanou jako hybridní dotaz. Tento typ dotazu stále vyžaduje, aby Access stáhl všechna data SQL Serveru do místního počítače a pak dotaz spustil, ale nespustí dotaz na SQL Serveru.

Kdy použít místní tabulky    Zvažte použití místních tabulek pro data, která se mění jen zřídka, jako je seznam států nebo provincií v zemi nebo oblasti. Statické tabulky se často používají k filtrování a můžou lépe fungovat na front-endu Accessu.

Další informace najdete v tématech Poradce pro ladění databázového stroje, Použití Analyzátoru výkonu k optimalizaci databáze Accessu a Optimalizace aplikací Microsoft Office Access propojených s SQL Serverem.

Viz také

Průvodce migrací služby Azure Database

Blog o migraci dat Microsoftu

Microsoft Access to SQL Server Migration, Conversion and Upsizing

Způsoby sdílení databáze aplikace Access pro klientské počítače

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.