Разплитане на новите Microsoft SQL Server ODBC и OLEDB драйвери
Някои от вас може би вече знаят, че Microsoft се отказа от планираното оттегляне на OLEDB и предостави нов драйвер за OLEDB. Въпреки това, може да е проблем, за да разберете какво трябва да използвате. Когато използвахме SQL Server Native Client, беше доста лесно - Native Client имаше както OLEDB, така и ODBC, изпратени в един DLL файл, което улесняваше инсталирането. Всичко, което трябваше да се уверите, че използвате правилната версия на Native Client.
Тъй като SQL Server вече е наличен в Linux, вече няма смисъл да разпространявате Native Client, тъй като Linux като цяло не поддържа OLEDB, което е предимно технология само за Windows, използвана главно от продуктите на Microsoft. Поради тази причина Microsoft не е избрала да комбинира ODBC и OLEDB в една DLL. Ако приложението ви съдържа VBA код, който използва както DAO, така и ADO, тогава ще трябва да инсталирате два различни доставчици, за да получите най-новата функция и поддръжка съответно за ODBC и OLEDB.
Конвенцията за именуване може да бъде малко объркваща, защото много хора свободно ще наричат различни драйвери просто „ODBC драйвер“ или „OLEDB доставчик“. Така че нека изясним имената. Ще започнем с идентифициране на оттеглените версии и след това ще разгледаме текущите версии.
Остарени версии
По подразбиране всички версии на Windows идват с две предварително инсталирани клиентски библиотеки за достъп до данни на SQL Server:
Microsoft OLE DB доставчик за SQL Server (известен също като SQLOLEDB)
Microsoft SQL Server ODBC драйвер (известен също като SQLODBC)
Това е много важно е да се отбележи, че те са ОТРЕДАЛИ . Те са насочени към SQL Server 2000 и нямат нови функции, въведени оттогава. Windows не изпращайте нови драйвери или ги актуализирайте чрез неговата Windows Update. В бъдеще вие, разработчикът на приложението, трябва да предоставите драйверите на подходяща версия, която да използвате с вашето приложение, вместо да разчитате на тези, предоставени от Windows. НЕ използвайте тези в текущото си развитие.
Текущи версии
Като изключим това, нека разгледаме правилния ODBC драйвер и доставчика на OLEDB, които може да искаме да използваме.
ODBC драйвер 17 за SQL сървър
Към момента на писане ODBC драйверът 17 за SQL Server е най-новият драйвер и може да бъде изтеглен от предоставената връзка. Низът за свързване изглежда така:
ODBC;DRIVER=ODBC Driver 17 for SQL Server;SERVER=myServer;DATABASE=myDatabase;
OLE DB драйвер 18 за SQL сървър
Към момента на писане, OLEDB драйверът 18 е най-новият драйвер. Въпреки че версията е една по-висока, наборът от функции е еквивалентен на ODBC драйвер 17 за SQL Server. Низът за свързване изглежда така:
Provider=MSOLEDBSQL;Server=myServer; Database=myDataBase;
32-битова или 64-битова?
Един често срещан въпрос, който възниква, е дали човек трябва да инсталира 64-битовата или 32-битовата версия на драйвера. Отговорът е един и същ, независимо кои версии обсъждаме и винаги зависи от операционната система, а не от Office. Следователно, ако използвате 32-битов Access на 64-битов Windows, бихте искали да инсталирате 64-битови драйвери. Това ще включва 32-битовите компоненти, необходими за работа с 32-битовия достъп.
Мога ли да използвам SQL Server Native Client?
Официално SQL Server Native Client се поддържа до SQL Server 2012. Все пак можете да го използвате, за да се свържете с по-нови версии на SQL Server. Има няколко функции, които липсват на Native Client. С течение на времето те ще стават все по-неподходящи за вашите нужди, особено с технологията Azure. Въпреки че може да сте в състояние да продължите да го използвате за съществуващите си приложения, препоръчваме да планирате нови разработки, като използвате отделните ODBC и OLEDB драйвери и да мигрирате съществуващите си приложения, когато е възможно. Трябва да мигрирате, когато има нужда да използвате нови технологии, които се поддържат само от тези по-нови драйвери (примерите включват функцията Azure Authentication или Always Encrypted).
Имам ли нужда и от двете?
Само ако използвате както DAO, така и ADO. Най-общо казано, всички формуляри и отчети и заявки за достъп винаги използват DAO. Единственият път, когато може да използвате ADO, е в кода на VBA. Така че, ако не използвате ADO, можете да се измъкнете само с ODBC драйвера и това би трябвало да е достатъчно за вашите нужди. Това означава, че когато обикновено свързвате своите таблици, ще използвате код, подобен на следния:
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Задайте db =CurrentDb
Задайте tdf =db.CreateTableDef
tdf.Name =“MyRemoteTable”
tdf.SourceTableName =“dbo.MyRemoteTable”
tdf.Connect =“ODBC;DRIVER=ODBC Driver 17 за SQL Server;SERVER=myServer;DATABASE=myDatabase;”
db.TableDefs.Добавяне
Синтаксисът, използван за tdf.Connect, работи за прехвърляне на querydef или дори за свойството Connect на метода DAO.Workspace.OpenDatabase.
Законно е да отваряте ADO връзки с помощта на ODBC, но недостатъкът е, че преминавате през повече слоеве, защото ще използвате доставчик на OLEDB за ODBC, за да се свържете с ODBC драйвер 17 за SQL Server. Ако все пак предпочитате да използвате ODBC, можете да използвате следния код, за да използвате ODBC над OLEDB:
Dim con As ADODB.Connection
Задайте con =New ADODB.Connection
con.ConnectionString =“DRIVER=ODBC Driver 17 за SQL Server;SERVER=myServer;DATABASE=myDatabase;”
con.Open
По-добре е да избягвате допълнителния слой и да използвате директно OLEDB. Можете да използвате този код, за да постигнете най-добра производителност с вашия ADO код:
Dim con As ADODB.Connection
Задайте con =New ADODB.Connection
con.ConnectionString =“Доставчик=MSOLEDBSQL;Server=myServer; Database=myDataBase;”
con.Open
По този начин единственият път, когато действително ще се нуждаете и използвате новия OLEDB драйвер за SQL Server, е когато имате ADO код в приложението си и искате да използвате пълните възможности на ADO, което трябва да бъде активирано от основния OLEDB драйвер.
Допълнителна справка
Пътна карта за технологията за достъп до данни на Microsoft