Спомнете си за безоблачните дни на детството, когато сте се забавлявали със супа с буквички. Пазете тези щастливи мисли, докато ние опитваме версии с различните вкусове на супа с буквички, но за бази данни. В следващите раздели се обясняват основите на бази данни с низове за връзка и използването на програмен интерфейс за бази данни във вашия VBA код на Access.
В тази статия
Използване на ODBC драйвер или доставчик на OLE бази данни
Програмен интерфейс за SQL Server от Access
Резюме на версиите на ODBC драйвери
Резюме на версиите на доставчици на OLE бази данни
Използване на ODBC драйвер или доставчик на OLE бази данни
Низовете за връзките не са нещо ново. Можете да дефинирате форматиран низ за връзка или в потребителския интерфейс на Access, или във VBA код. Низът за връзка (независимо дали е за ODBC, или за OLE DB) предава информация директно в базата данни – местоположение на сървъра, име на базата данни, тип на защитата и други полезни опции. Например:
ODBC;DRIVER=SQL Server;SERVER="MyServer";DATABASE="MyHRdb";TRUSTED_CONNECTION=Yes
Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyHRdb; Integrated Security=SSPI;
Началото е с SQL Server Native Client (SNAC) – самостоятелна библиотека, която съдържа ODBC и OLEDB технологии и все още се предлага за версии на SQL Server от 2005 до 2012. Много от наследените приложения използват SNAC и все още се поддържат за обратна съвместимост, но не препоръчваме да използвате това за разработване на нови приложения. Трябва да използвате по-нови, индивидуални версии на ODBC драйвери, които могат да се изтеглят.
ODBC драйвери
Open Database Connectivity (ODBC) е протокол, който можете да използвате за свързване на база данни на Access с външен източник на данни, като например Microsoft SQL Server. Обикновено използвате файлови източници на данни (наричани още DSN файлове), за да добавите низ за връзка, в който случай ключовата дума FILEDSN се използва в низа за връзка, или е съхранена в системния регистър, в който случай се използва ключовата дума DSN. Вместо това можете да използвате VBA, за да зададете тези свойства, като използвате низ на връзка "DSN-less".
През годините, ODBC драйверите са се доставяли на три фази:
-
Преди 2005 година, ODBC драйверите включваха компоненти за WDAC (компоненти за достъп до данни на Windows), които първоначално се наричаха MDAC (компоненти за достъп до данни на Microsoft). Тези компоненти все още се предоставят с Windows за обратна съвместимост. За повече информация вж. Компоненти за достъп до данни на Microsoft или Windows.
-
ODBC драйвери се предоставяха с SNAC за SQL Server 2005 до SQL Server 2012.
-
След SQL Server 2012, ODBC драйверите се предоставят отделно и съдържат поддръжка за новите функции на SQL Server.
За нови разработки трябва да избягвате използването на ODBC драйвери от първите две фази, а да използвате ODBC драйвери от третата фаза.
Доставчици на OLE бази данни
Object Linking and Embedding, Database (OLE DB) е протокол, който можете да използвате за свързване на база данни на Access с външен източник на данни, като например Microsoft SQL Server. OLE DB не изисква DSN, а също предоставя и пълен достъп до ODBC източници на данни и ODBC драйвери.
Съвет Обикновено използвате диалоговия прозорец Свойства на връзките с данни, за да добавите низ за връзка към OLE DB. Въпреки че няма начин от Access да се отвори диалоговият прозорец Свойства на връзките с данни, в Windows Explorer можете да създадете празен .txt файл, да промените типа на файла на .udl и след това да щракнете двукратно върху файла. След като създадете низ на връзка, променете типа на файла обратно на .txt.
През годините, доставчиците на OLE бази данни са се предоставяли на три фази:
-
Преди 2005 година, доставчиците на OLE бази данни включваха компоненти за WDAC (компоненти за достъп до данни на Windows), които първоначално се наричаха MDAC (компоненти за достъп до данни на Microsoft).
-
Доставчици на OLE бази данни се предоставяха с SNAC за SQL Server 2005 до SQL Server 2017. Това беше прекратено през 2011 г.
-
През 2017 г. доставчикът на OLE база данни за SQL Server беше възстановен.
Препоръчваната в момента версия за разработване на нови решения е OLE DB драйвер 18 за SQL Server.
Как да оптимизирате производителността с низ за връзка за ODBC
За да оптимизирате производителността, да минимизирате мрежовия трафик и да намалите достъпа на много потребители до базата данни на SQL Server, използвайте колкото е възможно повече низове за свързване, като споделяте низове за връзка в множество набори от записи. Въпреки че Ace просто предава низ за връзка към сървъра, той разбира и използва следните ключови думи: DSN, DATABASE, UID, PWD и DRIVER, за да помогне за минимизирането на комуникацията клиент-сървър.
Забележка Ако се загуби връзка на ODBC към външен източник на данни, Access автоматично се опитва да се свърже отново към него. Ако повторният опит е успешен, можете да продължите да работите. Ако повторният опит е неуспешен, все още можете да работите с обекти, които не разчитат на връзката. За да се свържете повторно, затворете и отворете отново Access.
Препоръки при използване както на ODBC, така и на OLE DB
Избягвайте смесването на технологии с низове за връзка и с достъп до бази данни. За DAO използвайте низ за връзка на ODBC. За ADO използвайте низ за връзка на OLE DB. Ако вашето приложение съдържа VBA код, който използва както DAO, така и ADO, използвайте ODBC драйвера за DAO и за доставчика на OLE DB за ADO. Стремете се да получавате най-новите функции и поддръжка както за ODBC, така и за OLE DB.
За ODBC се използва терминът "драйвер", а за OLE DB се използва терминът "доставчик". Термините описват един и същ тип софтуерен компонент, но не са взаимозаменяеми в синтаксиса на низа за връзка. Използвайте правилната стойност, както е дадено в документацията.
Програмен интерфейс за SQL Server от Access
Има два основни начина за свързване с програмен интерфейс към база данни на SQL Server от Access.
DAO
Обектът за достъп до данни (DAO) предоставя абстрактен интерфейс към база данни. Обектите за достъп до данни на Microsoft (DAO) са основен модел на програмни обекти, който ви позволява да влезете в Access и SQL Server, за да създавате, изтривате, променяте и изброявате обекти, таблици, полета, индекси, релации, заявки, свойства и външни бази данни.
За повече информация вж. Справка за обекти за достъп до данни на Microsoft.
ADO
ActiveX обектите с данни (ADO) предоставят програмен модел от високо ниво и са налични в Access чрез препратка към библиотека на друг доставчик. ADO са лесни за научаване и дават на клиентските приложения достъп възможност за манипулиране с данни от различни източници, включително Access и SQL Server. Техните основни предимства са лесно използване, висока скорост, ниска потребявана памет и малко място на диска. ADO поддържат и основни функции за изграждане и уеб-базирани приложения.
За повече информация вж. Справка за обекти за достъп до данни на Microsoft и Microsoft ActiveX обектите с данни (ADO).
Кое от тях трябва да използвате?
В решение на Access, което използва VBA код, можете да използвате като технология за интерфейс към бази данни DAO, ADO или и двете. DAO продължава да бъде обект по подразбиране в Access. Например всички формуляри, отчети и заявки на Access използват DAO. Но когато мигрирате към SQL Server, помислете дали да не използвате ADO, за да направите вашето решение по-ефективно. Ето общите насоки, които ще ви помогнат да решите кога да използвате DAO и кога – ADO.
Използвайте DAO, когато искате:
-
Да създадете формуляр за четене/запис, обвързан формуляр без използване на VBA.
-
Да търсите в локални таблици.
-
Да изтегляте данни във временни таблици.
-
Да използвате транзитни заявки като източници на данни за отчети или формуляри в режим "само за четене".
-
Да дефинирате и използвате обект TableDef или Querydef във VBA.
Използвайте ADO, когато искате:
-
Да се възползвате от допълнителни начини за оптимизиране, като напр. извършване на асинхронни операции.
-
Да изпълнявате транзитни заявки на DDL и DML.
-
Да достигате до данните на SQL Server директно чрез набори записи във VBA.
-
Да пишете по-прост код за определени задачи, като например поточно предаване на BLOB обекти.
-
Да извиквате съхранена процедура директно и с параметри, като използвате команден обект във VBA.
Резюме на версиите на ODBC драйвери
Следващата таблица обобщава важна информация за версии на драйвери на ODBC, местоположения за изтегляне и поддръжка на функции. Уверете се, че използвате правилната версия (64-битова или 32-битова) на драйвера, съответстваща на Windows, а не на Office. Ако изпълнявате 32-битов Access на 64-битова версия на Windows, инсталирайте 64-битови драйвери, които включват и 32-битовите компоненти, необходими за Access.
За повече информация вижте Използване на ключови думи за низ за връзка с SQL Server Native Client, Бележки по изданието за ODBC към SQL Server на Windows (V17) и Функции на Microsoft ODBC драйвер за SQL Server в Windows (V13,11).
Резюме на версиите на доставчици на OLE бази данни
Следващата таблица обобщава важна информация за версии на OLE DB доставчици, местоположения за изтегляне и поддръжка на функции. Уверете се, че използвате правилната версия (64-битова или 32-битова) на драйвера, съответстваща на Windows, а не на Office. Ако изпълнявате 32-битов Access на 64-битова версия на Windows, инсталирайте 64-битови драйвери, които включват и 32-битовите компоненти, необходими за Access.
За повече информация вижте Използване на ключови думи за низ за връзка с SQL Server Native Client.
Доставчик на OLE DB |
Версия |
Изтегляне |
Нови функции |
OLE DB драйвер 18.2.1 (MSOLEDBSQL) |
SQL Server 2017 |
Функция на OLE DB драйвер за SQL Server и Бележки по изданието за Microsoft OLE DB драйвер за SQL Server |
|
SQL Server Native Client (SQLNCLI) |
SQL Server 2005 до 2012 |
Прекратен, да не се използва |
|
Драйвер за OLE DB (SQLOLEDB) |
Прекратен, да не се използва |
Резюме на ключовите думи за ODBC
Таблицата по-долу обобщава ключовите думи за ODBC, разпознавани от SQL Server, и предназначението им. Само част от тях се разпознават от Access.
Ключова дума |
Описание |
Addr |
Мрежовият адрес на сървъра, на който се изпълнява екземпляр на SQL Server. |
AnsiNPW |
Указва употребата на дефинирани по ANSI поведения за обработка на NULL сравнения, допълване на знакови данни, предупреждения и съединяване на NULL (Yes или No). |
APP |
Име на приложението, което се извиква SQLDriverConnect. |
ApplicationIntent |
Декларира типа на работното натоварване на приложението при свързване към сървър (ReadOnly или ReadWrite). |
AttachDBFileName |
Име на първичния файл на база данни за прикачване. |
AutoTranslate |
Указва дали ANSI низовете знаци се изпращат между клиента и сървъра, или се транслират в Unicode (Yes или No). |
Database |
Името на базата данни. Description Предназначението на връзката. Driver Име на драйвера, както е върнато от SQLDrivers. |
DSN |
Име на съществуващ ODBC потребител или системен източник на данни. Encrypt Указва дали данните трябва да бъдат шифровани преди изпращането им по мрежата (Yes или No). |
Failover_Partner |
Име на партньора за преместване при отказ, който трябва да се използва, ако не може да се направи връзка към основния сървър. |
FailoverPartnerSPN |
SPN за партньора за преместване при отказ. |
Fallback |
Отхвърлена ключова дума. |
FileDSN |
Име на съществуващ ODBC източник на данни за файлове. Language Езикът на SQL Server. |
MARS_Connection |
Указва, че има няколко активни набора с резултати (MARS) за връзката за SQL Server 2005 (9.x) или по-нова версия (Yes или No). |
MultiSubnetFailover |
Указва дали да се свързвате към слушателя на група за наличност в група за наличност на SQL Server, или към екземпляр на клъстер за преминаване при отказ (Yes или No). |
Net |
dbnmpntw показва наименовани канали, а dbmssocn показва TCP/IP. |
PWD |
Паролата за влизане в SQL Server. |
QueryLog_On |
Указва регистриране на дългосрочни заявки (Yes или No). |
QueryLogFile |
Пълният път и име на файла, който да се използва за регистриране на данни при дългосрочни заявки. |
QueryLogTime |
Цифров низ от знаци, задаващ прага (в милисекунди) за регистриране на дългосрочни заявки. |
QuotedId |
Указва дали SQL Server използва правилата на ISO относно използването на кавички в SQL декларации (Yes или No). |
Regional |
Указва дали ODBC драйверът за SQL Server Native Client използва клиентските настройки при конвертиране на данни за валута, дата или час в знакови данни (Yes или No). |
SaveFile |
Име на файл за ODBC източник на данни, в който се записват атрибутите на текущата връзка, ако връзката е успешна. |
Server |
Името на екземпляра на SQL Server: Сървър в мрежата, IP адрес или псевдоним на диспечера за конфигуриране. |
ServerSPN |
SPN за сървъра. |
StatsLog_On |
Разрешава заснемането на данни за производителността на ODBC драйвера за SQL Server Native Client. |
StatsLogFile |
Пълният път и име на файла, който се използва за записване на статистиката за производителността на ODBC драйвера за SQL Server Native Client. |
Trusted_Connection |
Указва дали за проверка на влизането се използва режим на удостоверяване на Windows или потребителско име или парола за SQL Server (Yes или No). |
TrustServerCertificate |
Когато се използва с Encrypt, разрешава шифроване с помощта на самоподписан сертификат на сървър. |
UID |
Името за влизане в SQL Server. |
UseProcForPrepare |
Отхвърлена ключова дума. |
WSID |
Идентификатор на работната станция – името на мрежата на компютъра, на който се намира приложението. |
Резюме на ключовите думи за OLE бази данни
Таблицата по-долу обобщава ключовите думи за OLE DB, разпознавани от SQL Server, и предназначението им. Само част от тях се разпознават от Access.
Ключова дума |
Описание |
Addr |
Мрежовият адрес на сървъра, на който се изпълнява екземпляр на SQL Server. |
APP |
Низът, идентифициращ приложението. |
ApplicationIntent |
Декларира типа на работното натоварване на приложението при свързване към сървър (ReadOnly или ReadWrite). |
AttachDBFileName |
Име на първичния файл на база данни за прикачване. |
AutoTranslate |
Конфигурира ОЕМ/ANSI транслиране на знаци (TRUE или FALSE). |
Connect Timeout |
Времето (в секунди), което трябва да се изчака за завършване на инициализацията на източника на данни. |
Current Language |
Името на езика на SQL Server. |
Data Source |
Името на екземпляра на SQL Server в организацията. |
Database |
Името на базата данни. |
DataTypeCompatibility |
Число, показващо режима за обработка на типа данни, който ще се използва. |
Encrypt |
Указва дали данните трябва да бъдат шифровани преди изпращането им по мрежата (Yes или No). |
FailoverPartner |
Името на сървъра за преминаване при отказ, използван за дублиране на бази данни. |
FailoverPartnerSPN |
SPN за партньора за преместване при отказ. |
Initial Catalog |
Името на базата данни. |
Initial File Name |
Името на първичния файл (включващо пълното име на път) на база данни, която може да се прикачва. |
Integrated Security |
Използва се за удостоверяване на Windows (SSPI). |
Language |
Езикът на SQL Server. |
MarsConn |
Указва, че има няколко активни набора с резултати (MARS) за връзката за SQL Server 2005 (9.x) или по-нова версия (Yes или No). |
Net |
Мрежовата библиотека, използвана за установяване на връзка към екземпляр на SQL Server в организацията. |
Network Address |
Мрежовият адрес на екземпляр на SQL Server в организацията. |
PacketSize |
Размер на пакет на мрежата. Стойността по подразбиране е 4096. |
Persist Security Info |
Указва дали е разрешена защита при продължаване (TRUE или FALSE). |
PersistSensitive |
Указва дали е разрешена чувствителност към продължаване (TRUE или FALSE). |
Provider |
За SQL Server Native Client това трябва да бъде SQLNCLI11. |
PWD |
Паролата за влизане в SQL Server. |
Server |
Името на екземпляра на SQL Server: Сървър в мрежата, IP адрес или псевдоним на диспечера за конфигуриране. |
ServerSPN |
SPN за сървъра. |
Timeout |
Времето (в секунди), което трябва да се изчака за завършване на инициализацията на източника на данни. |
Trusted_Connection |
Указва дали за проверка на влизането се използва режим на удостоверяване на Windows или потребителско име или парола за SQL Server (Yes или No). |
TrustServerCertificate |
Указва дали е валидиран сертификат на сървър (TRUE или FALSE). |
UID |
Името за влизане в SQL Server. |
Use Encryption for Data |
Указва дали данните трябва да бъдат шифровани преди изпращането им по мрежата (TRUE или FALSE). |
UseProcForPrepare |
Отхвърлена ключова дума. |
WSID |
Идентификатор на работната станция – името на мрежата на компютъра, на който се намира приложението. |