Rozdělení nových ovladačů ODBC a OLEDB pro Microsoft SQL Server
Někteří z vás už možná vědí, že Microsoft ustoupil od jejich plánovaného ukončení podpory OLEDB a poskytl nový ovladač OLEDB. Může však být těžké zjistit, co byste měli používat. Když jsme používali SQL Server Native Client, bylo to docela snadné – Native Client měl OLEDB i ODBC dodávány v jediném souboru DLL, což usnadnilo instalaci. Jediné, co jste se museli ujistit, že používáte správnou verzi Native Client.
Vzhledem k tomu, že SQL Server je nyní k dispozici na Linuxu, již nemá smysl distribuovat Native Client, protože Linux obecně nepodporuje OLEDB, což je technologie pouze pro Windows, kterou používají hlavně produkty společnosti Microsoft. Z tohoto důvodu se společnost Microsoft nerozhodla kombinovat ODBC i OLEDB do jediné knihovny DLL. Pokud vaše aplikace obsahuje kód VBA, který používá DAO i ADO, budete muset nainstalovat dva různých poskytovatelů, abyste získali nejnovější funkce a podporu pro ODBC a OLEDB.
Konvence pojmenování může být trochu matoucí, protože mnoho lidí bude volně označovat různé ovladače jednoduše jako „ovladač ODBC“ nebo „poskytovatel OLEDB“. Pojďme si tedy ujasnit jména. Začneme identifikací zastaralých verzí a poté se podíváme na aktuální verze.
Zastaralé verze
Ve výchozím nastavení jsou všechny verze Windows dodávány se dvěma předinstalovanými klientskými knihovnami SQL Server pro přístup k datům:
Poskytovatel Microsoft OLE DB pro SQL Server (také známý jako SQLOLEDB)
Ovladač ODBC pro Microsoft SQL Server (také známý jako SQLODBC)
Je to velmi důležité je poznamenat, že tyto položky jsou zastaralé . Ty se zaměřují na SQL Server 2000 a od té doby postrádají nové funkce. Windows nebude odeslat nové ovladače nebo je aktualizovat prostřednictvím služby Windows Update. V budoucnu musíte vy, vývojář aplikace, poskytnout ovladače příslušné verze pro použití s vaší aplikací, spíše než se spoléhat na ovladače poskytované systémem Windows. NE použijte je ve svém současném vývoji.
Aktuální verze
Když to není z cesty, podívejme se na správný ovladač ODBC a poskytovatele OLEDB, které bychom mohli chtít použít.
Ovladač ODBC 17 pro SQL Server
V době psaní tohoto článku je ovladač ODBC 17 pro SQL Server nejnovější ovladač a lze jej stáhnout z poskytnutého odkazu. Připojovací řetězec vypadá takto:
ODBC;DRIVER=ODBC Driver 17 for SQL Server;SERVER=myServer;DATABASE=myDatabase;
Ovladač OLE DB 18 pro SQL Server
V době psaní tohoto článku je ovladač OLEDB 18 nejnovějším ovladačem. Přestože je verze o jednu vyšší, sada funkcí je ekvivalentní ovladači ODBC Driver 17 pro SQL Server. Připojovací řetězec vypadá takto:
Provider=MSOLEDBSQL;Server=myServer; Database=myDataBase;
32bitový nebo 64bitový?
Jednou z běžných otázek, které se objevují, je, zda je třeba nainstalovat 64bitovou nebo 32bitovou verzi ovladače. Odpověď je stejná bez ohledu na to, o kterých verzích diskutujeme, a vždy závisí na OS, nikoli na Office. Pokud tedy používáte 32bitový Access v 64bitovém systému Windows, budete chtít nainstalovat 64bitové ovladače. To bude zahrnovat 32bitové komponenty potřebné pro běh 32bitového Accessu.
Mohu použít SQL Server Native Client?
Oficiálně je SQL Server Native Client podporován až do SQL Server 2012. Stále jej však můžete používat pro připojení k novějším verzím SQL Server. V Native Client chybí několik funkcí. Postupem času budou stále více nevyhovující pro vaše potřeby, zejména s technologií Azure. I když jej možná budete moci nadále používat pro své stávající aplikace, doporučujeme, abyste plánovali nový vývoj pomocí samostatných ovladačů ODBC a OLEDB a migrovali své stávající aplikace, kdykoli je to možné. Musíte migrovat, když je potřeba využívat nové technologie, které jsou podporovány pouze těmito novějšími ovladači (příklady zahrnují Azure Authentication nebo funkci Always Encrypted).
Potřebuji obojí?
Pouze pokud používáte DAO i ADO. Obecně řečeno, všechny formuláře a sestavy a dotazy Access vždy používají DAO. Jediný případ, kdy můžete použít ADO, je v kódu VBA. Pokud tedy nepoužíváte ADO, vystačíte si pouze s ovladačem ODBC a to by pro vaši potřebu mělo stačit. To znamená, že když normálně propojujete své tabulky, použijete kód podobný následujícímu:
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Nastavit db =CurrentDb
Nastavit tdf =db.CreateTableDef
tdf.Name =“MyRemoteTable”
tdf.SourceTableName =“dbo.MyRemoteTable”
tdf.Connect =“ODBC;DRIVER=ODBC Driver 17 for SQL Server;SERVER=myServer;DATABASE=myDatabase;”
db.TableDefs.Append
Syntaxe použitá pro tdf.Connect funguje pro pass-through querydef nebo dokonce pro vlastnost Connect metody DAO.Workspace.OpenDatabase.
Je legální otevírat připojení ADO pomocí ODBC, ale nevýhodou je, že nakonec procházíte více vrstvami, protože byste pro připojení k ovladači ODBC 17 pro SQL Server používali poskytovatele OLEDB pro ODBC. Pokud byste přesto raději používali ODBC, můžete k použití ODBC přes OLEDB použít následující kód:
Dim con As ADODB.Connection
Set con =New ADODB.Connection
con.ConnectionString =“DRIVER=ODBC Driver 17 for SQL Server;SERVER=myServer;DATABASE=myDatabase;”
con.Open
Je lepší se vyhnout další vrstvě a použít přímo OLEDB. Tento kód můžete použít k dosažení nejlepšího výkonu s kódem ADO:
Dim con As ADODB.Connection
Set con =New ADODB.Connection
con.ConnectionString =“Provider=MSOLEDBSQL;Server=myServer; Database=myDataBase;”
con.Open
Jediný okamžik, kdy budete skutečně potřebovat a používat nový ovladač OLEDB pro SQL Server, je, když máte ve své aplikaci kód ADO a chcete využívat plnou kapacitu ADO, kterou je třeba povolit základním ovladačem OLEDB.
Další reference
Plán pro Microsoft Data Access Technology