Migrace databáze Accessu na SQL Server

Migrace databáze Accessu na SQL Server

Všichni máme omezení a accessová databáze není výjimkou. Accessová databáze má například limit velikosti 2 GB a nepodporuje víc než 255 souběžných uživatelů. Takže až nastane čas, kdy vaše databáze Accessu půjde na vyšší úroveň, můžete migrovat na SQL Server. SQL Server (místní nebo v cloudu Azure) podporuje větší objem dat, více souběžných uživatelů a má větší kapacitu než databázový stroj JET/ACE. Tento průvodce vám poskytne hladký začátek práce na SQL Serveru, pomáhá zachovat vytvořená front-end řešení Accessu a snad vás motivuje k používání Accessu pro budoucí databázová řešení. Průvodce přenesením byl v Accessu 2013 odebraný, takže teď můžete použít Microsoft SQL Server Migration Assistant (SSMA). K úspěšné migraci 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.

Rozdělené databáze

Všechny databázové objekty Accessu mohou být buď v jednom souboru databáze, nebo je můžete uložit do dvou databázových souborů: front-end databáze a back-end databáze. Tomu se říká rozdělení databáze a jeho účelem je usnadnit sdílení v síťovém prostředí. Soubor back-end databáze musí obsahovat pouze tabulky a relace. Front-end soubor musí obsahovat jenom všechny ostatní objekty, včetně formulářů, sestav, dotazů, maker, modulů VBA a propojených tabulek s back-end databází. Při migraci databáze Accessu se databáze podobá rozdělené databázi v tom, že SQL Server pracuje jako nový back-end pro data, která jsou teď umístěná na serveru.

V důsledku toho můžete pořád udržovat front-end accessovou databázi s propojenými tabulkami na tabulky SQL Serveru. Efektivně můžete odvozovat výhody rychlého vývoje aplikací, které poskytuje databáze Accessu, a škálovatelnost SQL Serveru.

Výhody SQL Serveru

Potřebujete ještě něco udělat pro migraci na SQL Server? Tady jsou některé další výhody, které je dobré si promyslet:

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

  • Vyšší dostupnost    S SQL Serverem můžete dynamicky zálohovat po přírůstkové nebo dokončené databázi, zatímco 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 výkonuje lépe než databáze Accessu, zejména u velké databáze v terabajtech. SQL Server taky zpracovává dotazy mnohem rychleji a efektivně díky paralelnímu zpracovávání dotazů pomocí několika nativních vláken v rámci jediného procesu pro zpracování uživatelských požadavků.

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

  • Okamžitá zotavení     Pokud dojde k chybě operačního systému nebo vypadne proud, MŮŽE SQL Server automaticky obnovit databázi do konzistentního stavu během několika minut a bez zásahu správce databáze.

  • Použití sítě VPN    Spolu nemusí vycházet z přístupu a virtuálních privátních sítí (VPN). Ale se SQL Serverem mohou vzdálení uživatelé dál používat front-end databázi Accessu na ploše a back-end SQL Serveru umístěný za bránou VPN Firewall.

  • Azure SQL Server    Kromě výhod SQL Serveru nabízí dynamické škálovatelnost bez výpadku, inteligentní optimalizaci, globální škálovatelnost a dostupnost, vylučování nákladů na hardware a sníženou správu.

Volba nejlepší možnosti Azure SQL Serveru

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

  • Single database/pružné fondy    Tato možnost má vlastní sadu prostředků spravovaných prostřednictvím serveru SQL Database. Jedna databáze je jako obsažená databáze na SQL Serveru. Můžete také přidat pružný fond, což je kolekce databází se sdílenou sadu prostředků spravovaných přes server SQL Database. Nejčastěji používané funkce SQL Serveru jsou k dispozici s integrovanými zálohováním, opravami a obnovením. Není ale zaručena přesně doba údržby a migrace z SQL Serveru může být obtížné.

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

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

Další informace najdete v článku Volba cesty migrace databáze do Azure a Volba správné možnosti SQL Serveru v Azure.

První kroky

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

  • Přidání indexů tabulky a primárních klíčů    Zkontrolujte, že každá accessová tabulka má index a primární klíč. SQL Server vyžaduje, aby všechny tabulky měly aspoň jeden index, a pokud je možné tabulku aktualizovat, vyžaduje propojenou tabulku s primárním klíčem.

  • Kontrola relací primárního a cizího klíče    Ujistěte se, že tyto relace jsou založeny 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 omezení cizích klíčů.

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

Než spustíte SSMA, udělejte 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 databázi také zavřou.

  3. Pokud je databáze ve formátu souboru .mdb,odeberte uživatelskou úroveň zabezpečení.

  4. Zálohujte databázi. Další informace najdete v článku Ochrana dat pomocí procesů zálohování a obnovení.

Tip    Zvažte možnost Microsoft SQL Server edici Express, která podporuje až 10 GB a je to bezplatný a jednodušší způsob, jak migrací projít a zkontrolovat. Po připojení použijte jako instanci databáze databázi LocalDB.

Tip    Pokud je to možné, použijte samostatnou verzi Accessu. Pokud můžete použít jenom Microsoft 365, použijte k migraci databáze Accessu při použití SSMA databázový stroj Accessu 2010. Další informace najdete v článku Microsoft Access Database Engine 2010 Redistributable.

Spuštění SSMA

Microsoft nabízí Microsoft SQL Server Migration Assistant (SSMA), který migraci usnadňuje. SSMA především migruje tabulky a výběrové dotazy bez parametrů. Formuláře, sestavy, makra a moduly jazyka VBA se nekonvertuje. Průzkumník metadat SQL Serveru zobrazí vaše databázové objekty Accessu a objekty SQL Serveru, které vám umožní zkontrolovat aktuální obsah obou databází. Tato dvě připojení se uloží do souboru migrace, pokud se v budoucnu rozhodnete přenést další objekty.

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

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

  2. Po instalaci SSMA ho otevřete na počítači, ideálně na počítači se souborem databáze Accessu.

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

  3. Podle počátečních pokynů ve SSMA zadejte základní informace, jako je umístění SQL Serveru, databáze Accessu a objekty, které se mají migrovat, informace o připojení a 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 Nástroje revize > Projectu > Obecné.

    Pole rowversion pomáhá předejít konfliktům záznamů. Access používá toto pole rowversion v propojené tabulce SQL Serveru k určení toho, kdy se záznam naposledy aktualizoval. Pokud přidáte pole rowversion do dotazu, Access ho použije k opětovnému výběru řádku po operaci aktualizace. Pomáhá to zlepšit efektivitu tím, že se vyhnete chybám konfliktu při 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 se může vyskytnout s datovými typy čísel s plovoucí desetinnou čárkou a aktivovat úpravy sloupců. Vyhněte se ale použití pole rowversion ve formulářích, sestavách nebo kódu jazyka VBA. Další informace najdete v článku rowversion.

    Poznámka:    Vyhněte se rowversion s časovou 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 časového razítka položky dat.

  5. Pokud chcete nastavit přesné datové typy, vyberte Nástroje revize > Nastavení projektu > Typ mapování. Pokud například ukládáte jenom anglický text, můžete místo datového typu nvarchar použít datový typ varchar.

Převod objektů

SSMA převede objekty Accessu na objekty SQL Serveru, ale objekty se hned nekopírují. SSMA obsahuje 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 s nulovou délkou, ověřovací pravidlo sloupce, ověření tabulky)

Jako osvědčený postup použijte zprávu testu SSMA, která zobrazuje výsledky převodu, včetně chyb, upozornění, informačních zpráv, odhadů času provedení migrace a jednotlivých kroků oprav chyb, které je dobré provést předtím, než objekty skutečně přesunete.

Převod databázových objektů přebírá definice objektů z metadat Accessu, převede je na ekvivalentní syntax Transact-SQL (T-SQL)a pak načte tyto informace do projektu. Objekty SQL Serveru nebo SQL Azure a jejich vlastnosti pak můžete zobrazit 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 této příručky.

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

Propojení tabulek

Místo nativních ovladačů SQL Serveru dodácích s Windows zvažte místo použití nativních ovladačů SQL Serveru, které jsou součástí Windows, instalaci nejnovější verze ovladačů SQL Server OLE DB a ODBC. Novější ovladače jsou nejen rychlejší, ale podporují nové funkce v Azure SQL, které předchozí ovladače ne. Ovladače můžete nainstalovat na každý počítač, na kterém se používá převedená databáze. Další informace najdete v ovladači Microsoft OLE DB 18 pro SQL Server a ovladač Microsoft ODBC 17 pro SQL Server.

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

Poznámka:    Pokud vytvoříte název zdroje dat ODBC při propojování s databází SQL Serveru během procesu propojení, buď vytvořte stejný název zdroje dat 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ématu Propojení nebo import dat z databáze Azure SQL Serveru a Import nebo propojení dat v databázi SQL Serveru.

Tip   Nezapomeňte v Accessu použít Správce propojených tabulek, který vám pohodlně aktualizuje tabulky a znovu je propojí. 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 způsob jejich řešení.

Dotazy

Převedou se jenom výběrové dotazy. Jiné dotazy to nejsou, včetně výběrových dotazů, které mají parametry. Některé dotazy se nemusí převést úplně a SSMA hlásí chyby dotazu během procesu převodu. Objekty, které se ne convertou, můžete upravit ručně pomocí syntaxe T-SQL. K chybám syntaxe může také být nutné ručně převést funkce a datové typy Accessu na SQL Server. 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 uvědomte si následující potenciální problémy.

Velké číslo    Datový typ Velké číslo uloží nehotovou čí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 to použití formátu souboru databáze .accdb (16.0.7812 nebo novější) v Accessu 16 (16.0.7812 nebo novější) a s 64bitovou verzí Accessu to jde lépe. Další informace najdete v článku Použití datového typu Velké číslo a Volba mezi 64bitovou nebo 32bitovouverzí Office.

Ano/Ne    Ve výchozím nastavení se sloupec Accessu s oprávněními ano/ne převede na pole bitové verze SQL Serveru. Abyste se vyhnuli zamykání záznamů, ujistěte se, že je v poli bitů nastavené zakázání hodnot NULL. IN SSMA, you can select the bit column to set the Allow Nulls property to NO. V TSQL použijte příkazy CREATE TABLE nebo ALTER TABLE.

Datum a čas    Je 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ů data a času2, může tabulka ve výsledcích #deleted zprávu. Další informace najdete v propojené tabulce Accessu, která SQL-Server vrátí #deleted.

  • Pomocí datového typu Datum a čas v Accessu můžete namapovat datový typ datum a čas. Pomocí datového typu Rozšířené datum a čas v Accessu můžete namapovat datový typ datetime2 s větším rozsahem data a času. Další informace najdete v tématu Použití datového typu Rozšířené datum a čas.

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

    • Datum v pořadí od 1. 1. 2019 do 31. 1. 2019 nemusí obsahovat všechny objednávky.

    • DateOrdered Between 1/1/19 00:00:00 AM And 1/31/19 11:59:59 PM does include all orders.

Příloha   Datový typ Příloha uloží soubor do databáze Accessu. Na SQL Serveru máte několik možností, které je dobré vzít v úvahu. Soubory můžete extrahovat z databáze Accessu a potom zvážit ukládání odkazů na soubory v databázi SQL Serveru. K uložení příloh do databáze SQL Serveru můžete také použít FILESTREAM, FileTables nebo vzdálené úložiště objektů BLOB (RBS).

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

Pole s více hodnotami    Pole s více hodnotami v Accessu se převede na SQL Server jako pole ntext, 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 nekonvertuje a v Accessu 2010 se ukončit nebude.

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

Visual Basic

Jazyk VBA sice SQL Server nepodporuje, ale berte na vědomí následující možné problémy:

Funkce jazyka VBA v dotazech    Dotazy Accessu podporují funkce jazyka VBA u dat ve sloupci dotazu. Dotazy Accessu, které používají funkce jazyka VBA, ale není možné spustit na SQL Serveru, a proto se všechna požadovaná data předá do Microsoft Accessu pro zpracování. Ve většině případů by tyto dotazy měly být převedeny na předávkovací dotazy.

Funkce definované uživatelem v dotazech    Dotazy Microsoft Accessu podporují použití funkcí definovaných v modulech jazyka VBA ke zpracování předáovaných dat. Dotazy mohou být samostatné dotazy, příkazy SQL ve zdrojích záznamů formulářů nebo sestav, zdroje dat polí se seznamem a seznamy ve formulářích, sestavách a polích tabulek a výrazy výchozích nebo ověřovacích pravidel. SQL Server nemůže spustit tyto funkce definované uživatelem. Možná bude potřeba ručně předělat tyto funkce a převést je na uložené procedury na SQL Serveru.

Optimalizace výkonu

Nejdůležitějším způsobem, jak optimalizovat výkon pomocí nového back-end SQL Serveru, je rozhodně, kdy použít místní nebo vzdálené dotazy. Při migraci dat na SQL Server se také přesouváte ze souborového serveru na databázový model klientského serveru. Postupujte podle těchto obecných pokynů:

  • Pokud chcete získat rychlý přístup, spusťte na klienta malé dotazy jen pro čtení.

  • Pokud chcete využít vyšší výkon zpracování, spusťte na serveru dlouhé dotazy pro čtení i zápis.

  • Minimalizujte síťový provoz pomocí filtrů a agregací, abyste převe dne přenesou jenom data, která potřebujete.

Optimalizace výkonu v modelu databáze klientského serveru

Další informace najdete v článku o vytvoření předazdív informačního dotazu.

Tady jsou další doporučené pokyny.

Put logic on the server     Aplikace může také používat zobrazení, uživatelem definované funkce, uložené procedury, počítaná pole a aktivační události k centralizaci a sdílení logiky aplikace, obchodních pravidel a zásad, složitých dotazů, ověřování dat a kódu referenční integrity na serveru místo na straně klienta. Zeptejte se sami sebe, může se tento dotaz nebo úkol provádět na serveru lépe a rychleji? Nakonec každý dotaz otestujte, abyste zajistili optimální výkon.

Použití zobrazení ve formulářích a sestavách    V Accessu proveďte následující kroky:

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

  • U sestav použijte jako zdroj záznamů zobrazení SQL. Pro každou sestavu ale můžete vytvořit samostatné zobrazení, abyste mohli snadněji aktualizovat určitou sestavu, aniž by to ovlivnilo jiné sestavy.

Minimalizace načítání dat ve formuláři nebo sestavě    Data nezobrazovat, dokud o to uživatel nevyžádá. Když třeba vlastnost zdroje záznamů nechat prázdnou, nechte uživatele, aby ve formuláři vyfiltrovat a potom tuto vlastnost pro zdroj záznamů naplnit filtrem. Nebo pomocí klauzule where u DoCmd.OpenForm a DoCmd.OpenReport zobrazíte přesné záznamy potřebné uživatelem. Zvažte vypnutí navigace záznamem.

Pozor na nesourodé dotazy   Nepoužívejte dotaz, který kombinuje místní accessové tabulky a propojenou tabulku SQL Serveru, někdy nazývanou hybridní dotaz. Tento typ dotazu přesto vyžaduje, aby Access stáhl všechna data SQL Serveru do místního počítače a potom spouštěl dotaz, nespouštěl dotaz na SQL Serveru.

Kdy používat místní tabulky    Zvažte použití místních tabulek pro data, která se mění jen zřídka, například seznam států nebo krajů v zemi nebo oblasti. Statické tabulky se často používají k filtrování a jejich výkon na front-end Accessu.

Další informace najdete v článku Poradcepro optimalizaci databázových strojů, optimalizace accessové databáze pomocí Průvodce analýzou výkonu a optimalizaci aplikací Microsoft Office Access propojených s SQL Serverem.

Podívejte se také na

Průvodce migrací na databáze Azure

Blog Microsoftu pro migraci

Migrace, převod

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

Potřebujete další pomoc?

Rozšiřte své dovednosti s Office
Projít školení
Získejte nové funkce jako první
Připojte se k účastníkům programu Office Insiders

Byly tyto informace užitečné?

Děkujeme vám za zpětnou vazbu.

Děkujeme vám za váš názor! Pravděpodobně bude užitečné, když vás spojíme s některým z našich agentů podpory Office.

×