Propojení aplikací Accessu s SQL Serverem – Azure SQL Database (AccessToSQL)
Pokud chcete použít stávající aplikace accessu s SQL Serverem, můžete původní tabulky Accessu propojit s migrovanými tabulkami SQL Serveru nebo SQL Azure. Propojení upraví Accessovou databázi tak, aby dotazy, formuláře, sestavy a stránky pro přístup k datům používaly data v SQL Serveru nebo Azure SQL Database místo dat v Accessové databázi.
Poznámka
Tabulky Accessu zůstanou v Accessu, ale neaktualizují se společně s SQL Serverem nebo aktualizacemi SQL Azure. Po propojení tabulek a ověření funkčnosti můžete chtít odstranit tabulky Accessu.
Propojení tabulek Accessu a SQL Serveru
Když propojete accessovou tabulku s sql Serverem nebo tabulkou SQL Azure, databázový stroj Jet ukládá informace o připojení a metadata tabulek, ale data jsou uložená v SQL Serveru nebo SQL Azure. Toto propojení umožňuje aplikacím accessu pracovat s tabulkami Accessu, i když jsou skutečné tabulky a data v SQL Serveru nebo SQL Azure.
Poznámka
Pokud používáte ověřování SQL Serveru, vaše heslo se uloží ve formátu prostého textu v propojených accessových tabulkách. Doporučujeme použít ověřování systému Windows.
Propojení tabulek
V Průzkumníku metadat Accessu vyberte tabulky, které chcete propojit.
Klepněte pravým tlačítkem myši na Tabulkya potom zvolte Propojit.
SQL Server Migration Assistant (SSMA) pro Access zálohuje původní accessovou tabulku a vytvoří propojenou tabulku.
Po propojení tabulek se tabulky v SSMA zobrazí s malou ikonou odkazu. V Accessu se tabulky zobrazí s ikonou „propojenou,“ což je glóbus se šipkou, která k němu ukazuje.
Když otevřete tabulku v Accessu, data se načtou pomocí kurzoru sady klíčů. V důsledku toho se u velkých tabulek najednou nenačtou všechna data. Při procházení tabulky ale Access podle potřeby načte další data.
Důležitý
Pokud chcete propojit přístupové tabulky s databází Azure, potřebujete SQL Server Native Client (SNAC) verze 10.5 nebo vyšší.
Nejnovější verzi SNAC můžete získat z Microsoft SQL Server 2008 R2 Feature Pack.
Zrušení propojení tabulek aplikace Access
Když zrušíte propojení accessové tabulky s SQL Serverem nebo tabulkou SQL Azure, aplikace SSMA obnoví původní accessovou tabulku a její data.
Zrušení propojení tabulek
V Průzkumníku metadat Accessu vyberte tabulky, které chcete odpojit.
Klepněte pravým tlačítkem myši na Tabulkya potom vyberte Zrušit propojení.
Propojení tabulek s jiným serverem
Pokud jste propojili accessové tabulky s jednou instancí SQL Serveru a později chcete změnit propojení na jinou instanci, musíte tabulky znovu propojit.
Propojit tabulky s jiným serverem
V Průzkumníku metadat Accessu vyberte tabulky, které chcete odpojit.
Klikněte pravým tlačítkem na tabulky a pak vyberte Odpojit.
Klikněte na tlačítko Znovu připojit k SQL Serveru.
Připojte se k instanci SQL Serveru nebo SQL Azure, ke které chcete propojit tabulky Accessu.
V Průzkumníku metadat Accessu vyberte tabulky, které chcete propojit.
Klepněte pravým tlačítkem myši na Tabulkya potom vyberte Propojit.
Aktualizace propojených tabulek
Pokud se změní definice tabulek SQL Serveru nebo SQL Azure, můžete tabulky v SSMA zrušit a znovu propojit pomocí postupů uvedených výše v tomto tématu. Tabulky můžete také aktualizovat pomocí Accessu.
Aktualizace propojených tabulek pomocí Accessu
Otevřete databázi Access.
V seznamu Objekty klepněte na Tabulky.
Pravým tlačítkem myši klikněte na propojenou tabulku a vyberte Správce propojených tabulek.
Zaškrtněte políčko vedle každé propojené tabulky, kterou chcete aktualizovat, a klepněte na tlačítko OK.
Možné problémy po migraci
Následující části obsahují seznam problémů, ke kterým může dojít v existujících aplikacích Accessu po migraci databází z Accessu na SQL Server nebo SQL Azure, a pak propojte tabulky spolu s příčinami a řešeními.
Pomalý výkon s propojenými tabulkami
příčina: Některé dotazy můžou být po přenesení pomalé z následujících důvodů:
Aplikace závisí na funkcích, které neexistují v SQL Serveru nebo SQL Azure, což způsobí, že Jet stáhne tabulky místně, aby spustil dotaz SELECT.
Dotazy, které aktualizují nebo odstraňují mnoho řádků, jsou odesílány Jet jako parametrizovaný dotaz pro každý řádek.
řešení: převeďte pomalé dotazy na předávací dotazy, uložené procedury nebo zobrazení. Převod na předávací dotazy má následující problémy:
Předávací dotazy nelze upravit. Chcete-li upravit výsledek dotazu nebo přidat nové záznamy, musíte to udělat alternativním způsobem, například pomocí explicitních tlačítek Upravit nebo Přidat na vašem formuláři, který je vázán na dotaz.
Některé dotazy vyžadují vstup uživatele, ale předávací dotazy nepodporují vstup uživatele. Uživatelský vstup lze získat pomocí kódu jazyka VBA (Visual Basic for Applications), který vyzve k zadání parametrů, nebo formulářem, který se používá jako vstupní ovládací prvek. V obou případech kód jazyka VBA odešle dotaz se vstupem uživatele na server.
Sloupce automatického přírůstku nebudou aktualizovány, dokud nebude záznam aktualizován.
Příčina: Po volání RecordSet.AddNew v Jet je sloupec automatického přírůstku dostupný před aktualizací záznamu. To neplatí v SQL Serveru nebo SQL Azure. Nová hodnota sloupce identity je k dispozici až po uložení nového záznamu.
řešení: před přístupem k poli identity spusťte následující kód jazyka Visual Basic for Applications (VBA):
Recordset.Update
Recordset.Move 0,
Recordset.LastModified
Nové záznamy nejsou k dispozici.
Příčina: Když přidáte záznam do tabulky SQL Serveru nebo SQL Azure pomocí jazyka VBA, pokud má jedinečné indexové pole tabulky výchozí hodnotu a nepřiřazujete k ho ho, nový záznam se nezobrazí, dokud tabulku znovu neotevřete v SQL Serveru nebo SQL Azure. Pokud se pokusíte získat hodnotu z nového záznamu, zobrazí se následující chybová zpráva:
Run-time error '3167' Record is deleted.
řešení: Při otevření tabulky SQL Serveru nebo SQL Azure pomocí kódu jazyka VBA uveďte možnost dbSeeChanges
, jak je znázorněno v následujícím příkladu:
Set rs = db.OpenRecordset("TestTable", dbOpenDynaset, dbSeeChanges)
Po migraci některé dotazy nepovolí uživateli přidat nový záznam.
Příčina: Pokud dotaz neobsahuje všechny sloupce zahrnuté v jedinečném indexu, nemůžete pomocí dotazu přidat nové hodnoty.
řešení: Ujistěte se, že jsou součástí dotazu všechny sloupce zahrnuté alespoň v jednom jedinečném indexu.
Schéma propojené tabulky nelze upravit pomocí Accessu.
Příčina: Po migraci dat a propojení tabulek nemůže uživatel změnit schéma tabulky v Accessu.
řešení: upravit schéma tabulky pomocí aplikace SQL Server Management Studio a pak aktualizovat odkaz v Accessu.
Funkce hypertextového odkazu se po migraci dat ztratí.
Příčina: Po migraci dat ztratí hypertextové odkazy ve sloupcích svoji funkčnost a stanou se jednoduchými nvarchar(max) sloupci.
rozlišení: Žádné.
Access nepodporuje některé datové typy SQL Serveru.
příčina: Pokud později aktualizujete sql Server nebo tabulky SQL Azure tak, aby obsahovaly datové typy, které Access nepodporuje, nemůžete tabulku otevřít v Accessu.
řešení: Můžete definovat dotaz accessu, který vrátí pouze řádky s podporovanými datovými typy.