Vzpomeňte si na staré dobré časy, kdy byla písmenková polévka zábavným jídlem. Uchovejte si tyto šťastné vzpomínky ve vaší mysli, zatímco ochutnáme databázovou verzi písmenkové polévky. V následujících oddílech najdete základní informace o tom, jak se dostat k databázi pomocí připojovacích řetězců a pomocí rozhraní pro programování databází v kódu jazyka VBA v Accessu.
V tomto článku:
Použití ovladače ODBC nebo zprostředkovatele OLE DB
Programové rozhraní mezi SQL Serverem a Accessem
Použití ovladače ODBC nebo zprostředkovatele OLE DB
Připojovací řetězce jsou tady již dlouho. Formátovaný připojovací řetězec můžete definovat buď v uživatelském rozhraní aplikace Access, nebo v kódu jazyka VBA. Připojovací řetězec (bez ohledu na to, jestli řetězec rozhraní ODBC nebo OLE DB) předává informace přímo do databáze, například umístění serveru, název databáze, typ zabezpečení a další užitečné možnosti. Například:
ODBC;DRIVER=SQL Server;SERVER="MyServer";DATABASE="MyHRdb";TRUSTED_CONNECTION=Yes
Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyHRdb; Integrated Security=SSPI;
Nejdřív byla služba SQL Server Native Client (SNAC), samostatná knihovna, která obsahovala technologie ODBC a OLEDB a je stále k dispozici pro SQL Server verze 2005 až 2012. Spousta starších verzí aplikace používalo službu SNAC, která je pořád podporovaná kvůli zpětné kompatibilitě, ale nedoporučujeme ji používat pro vývoj nových aplikací. Měli byste použít pozdější, jednotlivé verze ovladačů ODBC, které můžete stáhnout.
Ovladače ODBC
Rozhraní ODBC (Open Database Connectivity) je protokol sloužící k připojení databáze Accessu k externímu zdroji dat, třeba k Microsoft SQL Serveru. Obvykle se používají souborové zdroje dat (taky nazývané soubory DSN) k přidání připojovacího řetězce a v takovém případě se v připojovacím řetězci používá klíčové slovo FILEDSN, nebo jsou uloženy v registru a v takovém případě se použije klíčové slovo DSN. Alternativně můžete použít jazyk VBA k nastavení těchto vlastností pomocí připojovacího řetězce bez DSN.
V průběhu let se ovladače ODBC dodávaly ve třech fázích:
-
Před rokem 2005 se ovladače ODBC dodávaly se součástmi Windows Data Access Components (WDAC), které měly původně název Microsoft Data Access Components (MDAC). Tyto součásti se kvůli zpětné kompatibilitě pořád dodávají se systémem Windows. Další informace najdete v článku Součásti pro přístup k datům Microsoftu nebo systému Windows.
-
Ovladače ODBC se dodávaly se službou SNAC pro SQL Server 2005 až SQL Server 2012.
-
Po SQL Serveru 2012 se ovladače ODBC dodávají jednotlivě a obsahují podporu pro nové funkce SQL Serveru.
V případě nového vývoje se vyhněte použití ovladačů ODBC z prvních dvou fází a použijte ovladače ODBC ze třetí fáze.
Zprostředkovatelé OLE DB
Rozhraní OLE DB (Object Linking and Embedding, Database) je novější protokol sloužící k připojení databáze Accessu k externímu zdroji dat, třeba k Microsoft SQL Serveru. Technologie OLE DB nepotřebuje DSN a poskytuje úplný přístup ke zdrojům dat a ovladačům ODBC.
Tip Obvykle můžete k přidání připojovacího řetězce OLE DB použít dialogové okno Vlastnosti datového propojení. I když z Accessu nemůžete otevřít dialogové okno Vlastnosti datového propojení, můžete v Průzkumníkovi Windows vytvořit prázdný soubor .txt, změnit typ souboru na .udl a pak na soubor poklepat. Po vytvoření připojovacího řetězce změňte typ souboru zpět na .txt.
V průběhu let se zprostředkovatelé OLE DB dodávaly ve třech fázích:
-
Před rokem 2005 se zprostředkovatelé OLE DB dodávaly se součástmi Windows Data Access Components (WDAC), které měly původně název Microsoft Data Access Components (MDAC).
-
Zprostředkovatelé OLE DB se dodávaly se servery SQL Server 2005 až SQL Server 2017. Jsou zastaralé od roku 2011.
-
V roce 2017 se stal zprostředkovatel SQL Serveru OLE DB opět aktuálním.
Aktuálně doporučenou verzí pro nový vývoj řešení je ovladač OLE DB 18 pro SQL Server.
Jak optimalizovat výkon s připojovacím řetězcem ODBC
Abyste dosáhli optimálního výkonu, minimalizujte síťový provoz a omezte přístup více uživatelů k databázi SQL Serveru, použijte k tomu co nejmíň připojovacích řetězců pomocí sdílení připojovacích řetězců přes více sad záznamů. I když položka řízení přístupu (ACE) jednoduše projde v připojovacím řetězci na server, rozpozná a použije následující klíčová slova: DSN, DATABASE, UID, PWD a DRIVER k minimalizaci komunikace klienta a serveru.
Poznámka Pokud se ztratí připojení ODBC k externímu zdroji dat, pokusí se k němu Access automaticky znovu připojit. Pokud bude opětovný pokus úspěšný, můžete pokračovat v práci. Pokud opětovný pokus selže, můžete stále dál pracovat s objekty, které se nespoléhají na připojení. Pokud se chcete znovu připojit, zavřete a znova otevřete Access.
Doporučení při použití rozhraní ODBC i OLE DB
Vyhněte se míchání připojovacího řetězce a technologie pro přístup k databázím. Pro rozhraní DAO použijte připojovací řetězec ODBC. Pro rozhraní ADO použijte připojovací řetězec OLE DB. Pokud vaše aplikace obsahuje kód jazyka VBA, který používá rozhraní DAO i ADO, použijte ovladač ODBC pro rozhraní DAO a zprostředkovatele OLE DB pro rozhraní ADO. Snažte se získat nejnovější funkce a podpory pro obě rozhraní, ODBC i OLEDB.
Rozhraní ODBC používá termín ovladač a technologie OLE DB používá termín zprostředkovatel. Termíny popisují stejný typ softwarové komponenty, ale v syntaxi připojovacího řetězce se nedají zaměňovat. Použijte správnou hodnotu, jak je uvedeno v dokumentaci.
Programové rozhraní mezi SQL Serverem a Accessem
Existují dva základní způsoby, jak programově vytvořit rozhraní mezi databází SQL Serveru a Accessem.
DAO
Objekt pro přístup k datům (DAO) poskytuje abstraktní rozhraní databáze. Rozhraní Microsoft DAO (Microsoft Data Access Objects) je nativní objektový model programování, díky kterému se dostanete ke klíčovým funkcím Accessu a SQL Serveru – vytváření, odstraňování, úpravy a zobrazení seznamů objektů, tabulek, polí, indexů, relací, dotazů, vlastností a externích databází.
Další informace najdete v článku Odkaz na objekty přístupu dat Microsoftu.
ADO
Objekty ADO (ActiveX Data Objects) poskytují model programování na vysoké úrovni a je k dispozici v Accessu pomocí odkazu na knihovnu třetích stran. Objekty ADO se dají jednoduše naučit a umožňují klientským aplikacím přistupovat k datům a pracovat s nimi z různých zdrojů, včetně Accessu a SQL Serveru. Hlavní výhody jsou jednoduchost použití, vysoká rychlost, nízká režie paměti a malé využití disku. ADO také podporuje klíčové funkce pro sestavování a webové aplikace.
Další informace najdete v článku Odkazy na objekty Microsoft ADO a Objekty Microsoft ADO (ActiveX Data Objects).
Který byste měli použít?
V řešení v Accessu, které používá kód jazyka VBA, můžete jako technologii databázového rozhraní použít rozhraní DAO, ADO nebo obojí. DAO je i nadále výchozím nastavením Accessu. Například všechny formuláře, sestavy a dotazy v Accessu používají rozhraní DAO. Když ale migrujete na SQL Server, zvažte použití rozhraní ADO, aby bylo vaše řešení efektivnější. Tady jsou obecné pokyny, které vám pomůžou při rozhodování, kdy použít rozhraní DAO nebo ADO.
Použijte rozhraní DAO, když chcete:
-
Vytvořit vázaný formulář pro čtení i zápis bez použití jazyka VBA.
-
Zadat dotaz na místní tabulky.
-
Stáhnout data do dočasných tabulek.
-
Použít předávací dotazy jako zdroje dat pro sestavy nebo formuláře v režimu jen pro čtení.
-
Definovat a použít objekt TableDef nebo Querydef v jazyce VBA.
Použijte rozhraní ADO, když chcete:
-
Využít další způsoby optimalizace, jako je provedení asynchronních operací.
-
Spustit předávací dotazy DDL a DML.
-
Přistoupit k datům SQL Serveru přímo přes sadu záznamů v jazyce VBA.
-
Napsat jednodušší kód pro určité úkoly, jako je streamování objektů BLOB.
-
Přímo zavolat uloženou proceduru s parametry pomocí objektu příkazu v jazyce VBA.
Shrnutí verzí ovladačů ODBC
V následující tabulce najdete souhrn důležitých informací o verzích ovladačů ODBC, umístěních pro stahování a podpoře funkcí. Ujistěte se, že používáte správnou bitovou verzi (64bitová nebo 32bitová) ovladače založeného na systému Windows a ne na Office. Pokud máte 32bitovou aplikaci Access na 64bitovom systému Windows, nainstalujte 64bitové ovladače, které obsahují 32bitové komponenty potřebné pro Access.
Další informace najdete v článku Použití klíčových slov připojovacího řetězce s SQL Server Native Client, Poznámky k verzi pro rozhraní ODBC a SQL Server v systému Windows (V17) a Funkce ovladače Microsoft ODBC pro SQL Server v systému Windows(V13, 11).
Shrnutí verzí zprostředkovatelů OLE DB
V následující tabulce najdete souhrn důležitých informací o verzích zprostředkovatelů OLE DB, umístěních pro stahování a podpoře funkcí. Ujistěte se, že používáte správnou bitovou verzi (64bitová nebo 32bitová) ovladače založeného na systému Windows a ne na Office. Pokud máte 32bitovou aplikaci Access na 64bitovom systému Windows, nainstalujte 64bitové ovladače, které obsahují 32bitové komponenty potřebné pro Access.
Další informace najdete v článku Použití klíčových slov připojovacího řetězce s SQL Server Native Client.
Zprostředkovatel OLE DB |
Verze |
Stažení |
Nové funkce |
Ovladač OLE DB 18.2.1 (MSOLEDBSQL) |
SQL Server 2017 |
Přečtěte si článek Ovladač OLE DB pro funkce SQL Serveru a Poznámky k verzi pro ovladač Microsoft OLE DB pro SQL Server |
|
SQL Server Native Client (SQLNCLI) |
SQL Server 2005 až 2012 |
Zastaralé, nepoužívejte |
|
Ovladač OLE DB (SQLOLEDB) |
Zastaralé, nepoužívejte |
Shrnutí klíčových slov ODBC
V následující tabulce najdete souhrn klíčových slov rozhraní ODBC rozpoznaných SQL Serverem a jejich účel. Access rozpozná jenom podmnožinu.
Klíčové slovo |
Popis |
Addr |
Síťová adresa serveru, na kterém běží instance SQL Serveru. |
AnsiNPW |
Určuje použití chování definovaného standardem ANSI při zpracování porovnávání s hodnotou NULL, odsazení znakových dat, upozornění a zřetězení hodnot NULL (ano nebo ne). |
APP |
Název aplikace, která volá příkaz SQLDriverConnect. |
ApplicationIntent |
Deklaruje typ pracovního vytížení aplikace při připojování k serveru (pouze pro čtení nebo pro čtení a zápis). |
AttachDBFileName |
Název primárního souboru připojitelné databáze. |
AutoTranslate |
Určuje, jestli se mezi klientem nebo serverem posílají znakové řetězce ANSI nebo přeloženy do kódu Unicode (ano nebo ne). |
Database |
Název databáze. Popis Účel připojení. Ovladač Název ovladače vrácený pomocí SQLDrivers. |
DSN |
Název existujícího uživatele ODBC nebo systémového zdroje dat. Šifrování Určete, jestli se mají data před jejich odesláním po síti zašifrovat (ano nebo ne). |
Failover_Partner |
Název partnerského serveru pro převzetí služeb při selhání, který se použije, pokud nemůže být vytvořeno připojení k primárnímu serveru. |
FailoverPartnerSPN |
Hlavní název služby pro partnerský server pro převzetí služeb při selhání. |
Fallback |
Zastaralé klíčové slovo. |
FileDSN |
Název existujícího souborového zdroje dat ODBC. Jazyk Jazyk SQL Serveru. |
MARS_Connection |
Určuje více aktivních sad výsledků připojení k SQL Serveru 2005 (9.x) nebo novější (ano nebo ne). |
MultiSubnetFailover |
Určuje, jestli se má připojit k naslouchacímu procesu skupiny dostupnosti SQL Serveru nebo instance clusteru s podporou převzetí služeb při selhání (ano nebo ne). |
Net |
dbnmpntw označuje pojmenované kanály a dbmssocn označuje TCP/IP. |
PWD |
Heslo k přihlášení k SQL Serveru. |
QueryLog_On |
Určuje protokolování dlouho běžících dotazů (ano nebo ne). |
QueryLogFile |
Úplná cesta a název souboru, který se má použít k protokolování dat na dlouho běžících dotazech. |
QueryLogTime |
Řetězec numerických znaků určující mezní hodnotu (v milisekundách) pro protokolování dlouho běžících dotazů. |
QuotedId |
Určuje, jestli SQL Server používá pravidla ISO týkající se používání uvozovek v příkazech SQL (ano nebo ne). |
Regional |
Určuje, jestli ovladač ODBC SQL Server Native Client používá nastavení klienta při převodu dat měny, data nebo času na znakové údaje (ano nebo ne). |
SaveFile |
Název souboru zdroje dat ODBC, do kterého jsou uloženy atributy aktuálního připojení, pokud je připojení úspěšné. |
Server |
Název instance SQL Serveru: Server v síti, IP adresa nebo alias Správce konfigurace. |
ServerSPN |
Hlavní název služby pro server. |
StatsLog_On |
Umožňuje zachytávat data výkonu SQL Server Native Client. |
StatsLogFile |
Úplná cesta a název souboru, který se používá k zaznamenávání statistik výkonu ovladače ODBC SQL Server Native Client. |
Trusted_Connection |
Určuje, jestli se pro ověřování přihlášení používá režim ověřování systému Windows nebo uživatelské jméno nebo heslo k SQL Serveru (ano nebo ne). |
TrustServerCertificate |
Když se používá s šifrováním, povolí šifrování pomocí certifikátu serveru podepsaného svým držitelem. |
UID |
Přihlašovací jméno k SQL Serveru. |
UseProcForPrepare |
Zastaralé klíčové slovo. |
WSID |
Identifikátor pracovní stanice, síťový název počítače, na kterém je aplikace umístěna. |
Shrnutí klíčových slov OLE DB
Následující tabulka shrnuje klíčová slova OLE DB rozpoznaná SQL Serverem a jejich účel. Access rozpozná jenom podmnožinu.
Klíčové slovo |
Popis |
Addr |
Síťová adresa serveru, na kterém běží instance SQL Serveru. |
APP |
Řetězec identifikující aplikaci. |
ApplicationIntent |
Deklaruje typ pracovního vytížení aplikace při připojování k serveru (pouze pro čtení nebo pro čtení a zápis). |
AttachDBFileName |
Název primárního souboru připojitelné databáze. |
AutoTranslate |
Konfiguruje překlad znaků OEM/ANSI (pravda nebo nepravda). |
Connect Timeout |
Doba čekání na dokončení inicializace zdroje dat (v sekundách). |
Current Language |
Název jazyka SQL Serveru. |
Data Source |
Název instance SQL Serveru v organizaci. |
Database |
Název databáze. |
DataTypeCompatibility |
Číslo označující režim zpracování datového typu, který se bude používat. |
Šifrování |
Určete, jestli se mají data před jejich odesláním po síti zašifrovat (ano nebo ne). |
FailoverPartner |
Název serveru s podporou převzetí služeb při selhání. |
FailoverPartnerSPN |
Hlavní název služby pro partnerský server pro převzetí služeb při selhání. |
Initial Catalog |
Název databáze. |
Initial File Name |
Název primárního souboru (uveďte i úplný název cesty) pro připojitelné databáze. |
Integrated Security |
Používá se pro ověřování systému Windows (SSPI). |
Jazyk |
Jazyk SQL Serveru. |
MarsConn |
Určuje více aktivních sad výsledků připojení k SQL Serveru 2005 (9.x) nebo novější (ano nebo ne). |
Net |
Síťová knihovna používaná k vytvoření připojení k instanci SQL Serveru v organizaci. |
Network Address |
Síťová adresa instance SQL Serveru v organizaci. |
PacketSize |
Velikost síťového paketu. Výchozí hodnota je 4096. |
Persist Security Info |
Určuje, jestli se povolí trvalé zabezpečení (pravda nebo nepravda). |
PersistSensitive |
Určuje, jestli se povolí možnost trvalé citlivosti (pravda nebo nepravda). |
Provider |
V případě SQL Server Native Client by měl být SQLNCLI11. |
PWD |
Heslo k přihlášení k SQL Serveru. |
Server |
Název instance SQL Serveru: Server v síti, IP adresa nebo alias Správce konfigurace. |
ServerSPN |
Hlavní název služby pro server. |
Timeout |
Doba čekání na dokončení inicializace zdroje dat (v sekundách). |
Trusted_Connection |
Určuje, jestli se pro ověřování přihlášení používá režim ověřování systému Windows nebo uživatelské jméno nebo heslo k SQL Serveru (ano nebo ne). |
TrustServerCertificate |
Určuje, jestli se certifikát serveru ověří (pravda nebo nepravda). |
UID |
Přihlašovací jméno k SQL Serveru. |
Use Encryption for Data |
Určete, jestli se mají data před jejich odesláním po síti zašifrovat (pravda nebo nepravda). |
UseProcForPrepare |
Zastaralé klíčové slovo. |
WSID |
Identifikátor pracovní stanice, síťový název počítače, na kterém je aplikace umístěna. |