Ole db driver for sql server это

Обновлено: 04.07.2024

В целях борьбы со склерозом, и чтобы не бегать и не искать документацию, когда в очередной раз требуется подключиться к какой-нибудь базе данных, собрал в этом посте строки подключений к различным источникам данных, которые я чаще всего использую.

Строка подключения:

Server = ip_адрес_или_имя_сервера : номер_порта_сервера; Database=имя_базы; UID = имя_пользователя; PWD=пароль;
  • MaxPoolSize, MinPoolSize - максимальный и минимальный размер пула соединений с БД
  • Pooling=false - отключить обьединение подключений в пул (по умолчанию - true)
  • Connection Lifetime - количество секунд, которое каждое соединение удерживается в пуле подключений.
Provider=DB2OLEDB; Network Transport Library = TCPIP; Network Address=xxx.xxx.xxx.xxx; Initial Catalog = имя_каталога; Package Collection = имя_коллекции; Default Schema = имя_схемы; User Password = пароль;

Строка подключения:

User = логин; Password = пароль; Database = MyDatabase.fdb; DataSource=localhost; Port=3050; Dialect=3; Charset=NONE; Role=; Connection lifetime = 15; Pooling=true; MinPoolSize=0; MaxPoolSize=50; Packet Size=8192; ServerType=0;
  • 0 - Classic или Super Server
  • 1 - Embedded Server
Driver = Firebird/InterBase(r) driver; Uid=логин; Pwd=пароль; DbName = путь_к_fdb_файлу;
Server =адрес_сервера; Database = имя_базы; Uid = логин; Pwd = пароль;
  • Port - номер порта для подключения, если = -1, значит используется протокол named papes.

Строка подключения:

Data Source = имя/адрес_сервера; Initial Catalog = имя_БД; User Password = пароль;

Строка подключения:

Provider = SQLNCLI10; Server = имя/адрес_сервера; Database = имя_БД; Uid = логин; Pwd = пароль;

Microsoft Jet OLE DB 4.0

Строка подключения:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source =путь_к_папке; Extended Properties = dBASE IV; User Password=;

Если база защищена паролем, ID и Password нужно поменять.

Строка подключения:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source=путь_к_папке; Extended Properties = dBASE IV; User Password=;

Строка подключения:

  • UseUTF16Encoding=True - использовать кодировку UTF16
  • Password - пароль для соединения
  • Read Only = true - соединение только для чтения


Microsoft Jet OLE DB 4.0

Строка подключения:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source=C:\mydb.mdb; User Password=;

Для расположенной на расшаренном ресурсе базы:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = \\хост\путь_до_базы\mydb.mdb; User Password=;

Строка подключения:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\mydb.mdb; User Password=;

Access 2007


ACE OLEDB 12.0

Строка подключения:

Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\myfile.accdb; Persist Security Info=False;

Если установлен пароль:

Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\myfile.accdb; Jet OLEDB:Database Password = MyDbPassword;

Строка подключения:

Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\myfile.accdb; Persist Security Info = False;


Другие источники данных:

Excel 97-2003

Microsoft Jet OLE DB 4.0

Строка подключения:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\myfile.xls; Extended Properties="Excel 8.0; HDR=Yes; IMEX=1";

HDR=Yes - указывает, что первая строка содержит имена столбцов, а не данные
IMEX=1 - указывает драйверу читать все данные как текстовые

Драйвер OLE DB для SQL Server — это изолированный прикладной программный интерфейс (API) для доступа к данным, используемый в OLE DB, который появился в SQL Server 2005 (9.x). Драйвер OLE DB для SQL Server предоставляется в формате одной библиотеки динамической компоновки (DLL). Также он предоставляет новые расширенные функциональные возможности, поставляемые компонентами доступа к данным Windows (выделенное административное соединение Windows, ранее — компоненты доступа к данным компонентов MDAC). Драйвер OLE DB для SQL Server может применяться для создания новых или усовершенствования существующих приложений, которым требуется доступ к новым функциям SQL Server 2005 (9.x), таким как множественный активный результирующий набор (MARS), пользовательские типы, уведомления о запросах, изоляция моментальных снимков и поддержка типа данных XML.

Список различий между драйверами OLE DB для SQL Server и Windows DAC, а также сведения о проблемах, которые следует учесть перед переносом приложения Windows DAC на драйвер OLE DB для SQL Server, можно найти в статье Обновление приложения с переходом от MDAC на драйвер OLE DB для SQL Server.

Предыдущие поставщики Microsoft OLE DB для SQL Server (SQLOLEDB) и собственный клиент OLE DB для SQL Server (SQLNCLI) объявляются нерекомендуемыми для новых разработок.

Драйвер OLE DB для SQL Server может использоваться совместно с основными службами OLE DB, поставляемыми с компонентами доступа к данным Windows DAC, но это не является обязательным требованием. Выбор того, использовать или нет основные службы, зависит от требований отдельного приложения (например, требуется ли пул соединений).

Приложения ADO могут использовать драйвер OLE DB для SQL Server, но мы рекомендуем использовать для ADO ключевое слово строки подключения DataTypeCompatibility (или соответствующее свойство DataSource). При использовании драйвера OLE DB для SQL Server приложения ADO могут использовать новые функции, добавленные в SQL Server 2005 (9.x) и доступные в драйвере OLE DB для SQL Server через ключевые слова строки подключения, свойства OLE DB или Transact-SQL. Дополнительные сведения об использовании этих функций с ADO см. в статье Использование объектов ADO с драйвером OLE DB для SQL Server.

Драйвер OLE DB для SQL Server призван обеспечить упрощенный собственный доступ к данным SQL Server через OLE DB. Он позволяет разрабатывать и развивать новые функции доступа к данным без изменения текущих компонентов выделенного административного соединения Windows, которые теперь являются частью платформы Microsoft Windows.

OLE DB Driver for SQL Server использует компоненты доступа к данным Windows DAC, но явно не зависит от их конкретных версий. Драйвер OLE DB для SQL Server можно использовать с любой версией выделенного административного соединения Windows, которая устанавливается операционной системой, поддерживаемой драйвером OLE DB для SQL Server.

Разные поколения драйверов OLE DB

Существует три поколения поставщиков Microsoft OLE DB для SQL Server.

1. Поставщик Microsoft OLE DB для SQL Server (SQLOLEDB)

Поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) по-прежнему поставляется в составе компонентов доступа к данным Windows. Он больше не поддерживается и мы не рекомендуем использовать этот драйвер для разработки новых приложений.

2. SQL Server Native Client (SNAC)

Начиная с версии SQL Server 2005 (9.x), собственный клиент SQL Server (SNAC) включает интерфейс поставщика OLE DB (SQLNCLI) и поставщик OLE DB, который поставляется с SQL Server 2005 (9.x) через SQL Server 2012 (11.x).

С 2011 года он считается устаревшими и мы не рекомендуем использовать этот драйвер для разработки новых приложений. Дополнительные сведения о жизненном цикле SNAC и доступных для скачивания файлах см. в описании жизненного цикла SNAC.

3. Драйвер Microsoft OLE DB для SQL Server (MSOLEDBSQL)

Поддержка OLE DB возобновлена с момента выпуска поставщика в 2018 г.

Новый поставщик OLE DB называется драйвером Microsoft OLE DB для SQL Server (MSOLEDBSQL). Этот новый поставщик будет далее дополняться всеми новыми функциями сервера.

Чтобы использовать новый драйвер Майкрософт OLE DB для SQL Server в существующих приложениях, следует запланировать преобразование строк подключения из форматов SQLOLEDB и SQLNCLI в MSOLEDBSQL.

В этом разделе

OLE DB Driver for SQL Server features (Функции драйвера OLE DB для SQL Server)
Здесь описаны возможности, которые поддерживаются драйвером OLE DB для SQL Server.

Создание приложений с помощью драйвера OLE DB для SQL Server
Представлены общие сведения о разработке с помощью драйвера OLE DB для SQL Server, включая отличия от компонентов доступа к данным Windows DAC, используемые компоненты и способ использования совместно с ADO.

В этом разделе также обсуждается установка и развертывание драйвера OLE DB для SQL Server, в том числе способ распространения библиотеки драйвера OLE DB для SQL Server.

Требования к системе для драйвера OLE DB для SQL Server
Здесь описаны системные ресурсы, которые нужны для использования драйвера OLE DB для SQL Server.

OLE DB Driver for SQL Server programming (Программирование драйвера OLE DB для SQL Server)
Предоставляются сведения об использовании драйвера OLE DB для SQL Server.

Finding more OLE DB Driver for SQL Server information (Дополнительные сведения о драйвере OLE DB для SQL Server)
Предоставляются дополнительные ресурсы со сведениями о драйвере OLE DB для SQL Server, в том числе ссылки на внешние ресурсы и дополнительные сведения.

Скачайте драйвер Microsoft ODBC Driver for SQL Server, чтобы разрабатывать Windows-приложения с подключением к SQL Server и базе данных SQL Azure.

Скачивание

Распространяемый установщик Microsoft OLE DB Driver for SQL Server устанавливает клиентские компоненты, необходимые во время выполнения, чтобы воспользоваться преимуществами функциями нового SQL Server. Начиная с версии 18.3, установщик также включает и устанавливает библиотеку проверки подлинности Microsoft Active Directory (ADAL.dll).

Microsoft OLE DB Driver 18.6 for SQL Server — это последняя общедоступная версия. Если у вас установлена предыдущая версия, Microsoft OLE DB Driver 18 for SQL Server, то при установке версии 18.6 она обновляется до версии 18.6.

Сведения о версии

  • Номер выпуска: 18.6.0
  • Дата выпуска: 4 июня 2021 г.

Если вы открываете локализованную версию этой страницы и хотите просмотреть актуальные материалы, посетите эту страницу на версии сайта на языке US-English. С версии сайта US-English вы можете скачать SSMS на других языках из числа доступных.

Installing and configuring the Microsoft ODBC drivers for SQL Server

From this link, the Microsoft ODBC drivers for SQL Server can be downloaded and installed. Depending on which Windows operating system version (32-bit or 64-bit) is used, there are two versions of the Microsoft ODBC drivers for SQL Server that can be installed:

c-users-marko-appdata-local-microsoft-windows-ine-1.jpg

  • x64msodbcsql.msi is for the Windows 64-bit version
  • x86msodbcsql.msi is for the Windows 32-bit version

In case that the wrong version of the Microsoft ODBC drivers for SQL Server is trying to be installed (e.g. x86msodbcsql.msi on the Windows 64-bit version), the following warning message will appear:

c-users-marko-appdata-local-microsoft-windows-ine-2.jpg

Let’s install the appropriate Microsoft ODBC drivers for SQL Server. The process of installation of the Microsoft ODBC drivers for SQL Server is very simple and straightforward. Double click on the (e.g. msodbcsql.msi ) file and the welcome screen will appear:

c-users-marko-appdata-local-microsoft-windows-ine-3.jpg

Click the Next button to proceed with installation. Under the License Agreement window read the license terms and if you agree, check the “I accept the terms in the license agreement” radio button and click the Next button:

c-users-marko-appdata-local-microsoft-windows-ine-4.jpg

On the Feature Selection window, select the Client Components item and click the Next button:

c-users-marko-appdata-local-microsoft-windows-ine-5.jpg

Click the Install button on the Ready to Install the Program window to begin the installation of the Microsoft ODBC drivers for SQL Server:

c-users-marko-appdata-local-microsoft-windows-ine-6.jpg

In a few seconds, the installation of the Microsoft ODBC drivers for SQL Server finishes. Click the Finish button to close the Microsoft ODBC drivers for SQL Server Setup window:

c-users-marko-appdata-local-microsoft-windows-ine-7.jpg

To confirm that the Microsoft ODBC drivers for SQL Server is installed, go to Control Panel and under the Program and Features find the Microsoft ODBC drivers for SQL Server:

c-users-marko-appdata-local-microsoft-windows-ine-8.jpg

Or open the ODBC Data Source Administrator dialog box:

c-users-marko-appdata-local-microsoft-windows-ine-9.jpg

Under the Drivers tab, check iif the ODBC Driver for SQL Server driver exists:

c-users-marko-appdata-local-microsoft-windows-ine-10.jpg

The ODBC Data Source Administrator dialog box is used to create and manage ODBC data sources. The ODBC Data Source Administrator dialog box is a Windows component.

To open the ODBC Data Source Administrator dialog box, go to the Start menu under Windows Administrative Tools, choose ODBC Data Sources:

c-users-marko-appdata-local-microsoft-windows-ine-11.jpg

In the Control Panel under Administrative Tools, choose appropriate ODBC Data Sources:

c-users-marko-appdata-local-microsoft-windows-ine-12.jpg

Or simpler, in the Windows search box, type the ODBC Data Sources word:

c-users-marko-appdata-local-microsoft-windows-ine-13.jpg

And from the search list, choose appropriate:

c-users-marko-appdata-local-microsoft-windows-ine-14.jpg

As you may notice, there are two versions of the ODBC Data Sources Administrator dialogboxes:one is the ODBC Data Sources Administrator (32-bit) and another is the ODBC Data Sources Administrator (64-bit) version. Since Windows 8 is the operating system, there are two the ODBC Data Sources Administrator dialog boxes, one is for 32-bit ODBC Data Sources and the other is for 64-bit ODBC Data Sources.

Note: If the ODBC Data Sources Administrator (64-bit) dialogfor creating connection with 32-bit data source (e.g.32-bit SQL Server) is used, the following error may appear when a linked server is created:

The linked server has been created but failed a connection test. Do you want to keep the linked server?
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

Cannot initialize the data source object of OLE DB provider “MSDASQL” for linked server “SERVERX86”.
OLE DB provider “MSDASQL” for linked server “SERVERX86” returned message “[Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application”. (Microsoft SQL Server, Error: 7303)

c-users-marko-appdata-local-microsoft-windows-ine-15.jpg

To create a new SQL Server ODBC data source, press the Add button under the User DSN or System DSN tab. Both of these tabs are used to create a connection to ODBC data source, the difference is that the User DSN tab will show data source only for a currently logged user on this computer. While creating data sources under the System DSN, it will be available to any user that is logged on to this computer.

For the purpose of this article, the SQL Server ODBC data source will be created under the System DSN tab. To start creating connection, press the Add button:

c-users-marko-appdata-local-microsoft-windows-ine-16.jpg

This will open the Create New Data Source dialog, from the list, choose a driver for which you want to set up a data source. In our case, that will be ODBC Driver 13 for SQL Server:

c-users-marko-appdata-local-microsoft-windows-ine-17.jpg

After selecting a desired driver, click the Finish button, this will open the Create a New Data Source to SQL Server dialog:

c-users-marko-appdata-local-microsoft-windows-ine-18.jpg

Under the Name box, enter the connection name, the name can be whatever you like (e.g. TestServer). The Description box is optional and it’s for a description of the data source. In the Server field, enter a name of a SQL Server for which you want to connect to (e.g. WIN10SQLEXPRESS):

c-users-marko-appdata-local-microsoft-windows-ine-19.jpg

If a SQL Server instance is the default instance, type the name of the computer that hosts the instance of SQL Server (e.g. WIN10). If SQL Server is a named instance, type the name of the computer and the name of the instance separated by a slash (e.g. WIN10SQLEXPRESS). Otherwise, the following message will appear when testing the SQL Server ODBC data source connection and the name of the SQL Server instance is wrong:

c-users-marko-appdata-local-microsoft-windows-ine-20.jpg

After setting the appropriate Server and connection name, press the Next button. In this dialog, how to connect to SQL Server by using Windows authentication can be specified, including Active Directory authentication or using SQL Server authentication.

For the purpose of this article, SQL Server authentication will be used. Check the With SQL Server authentication using a login ID and password entered by the user radio button and, in the Login ID and Password field, enter appropriate credentials and press the Next button:

c-users-marko-appdata-local-microsoft-windows-ine-21.jpg

On this dialog, set the database that you want to connect to, by checking the Change the default database to check the box and from the combo box, choose a deserted database.

During the change of the default database the following message may appear:

c-users-marko-appdata-local-microsoft-windows-ine-22.jpg

This means that communication link between the driver and the data source to which the driver was attempting to connect failed.

To resolve this, close the ODBC Data Sources Administrator dialogboxand try again to create connection to ODBC data source.

If that isn’t successful, check if Named Pipes under the Protocols for SQL Server for which you want to create a connection to (e. g. SQLEXPRESS) are enabled:

c-users-marko-appdata-local-microsoft-windows-ine-23.jpg

Don’t forget to restart SQL Server under the SQL Server Services after enabling Named Pipes in order to changes have effect.

Make sure that the SQL Server and Windows Authentication mode radio button under the Security tab of the Server Properties dialog is checked:

c-users-marko-appdata-local-microsoft-windows-ine-24.jpg

Also, check if the Allow remote connections to this server check box under the Connections tab is checked:

c-users-marko-appdata-local-microsoft-windows-ine-25.jpg

After these settings are done, under the Change the default database to combo box, available databases will appear, choose a database (e.g. AdventureWorks2014) and click the Next button:

c-users-marko-appdata-local-microsoft-windows-ine-26.jpg

This will open one more dialog with more options to set. These options will be left as it is and click the Finish button:

c-users-marko-appdata-local-microsoft-windows-ine-27.jpg

After, clicking the Finish button, the ODBC Microsoft SQL Server Setup window will appear with configuration information that we set for the ODBC data source. At the bottom of the ODBC Microsoft SQL Server Setup window, there is the Test Data Source button, by clicking on this button, it can be checked if the connection with the data source is established successfully or not:

c-users-marko-appdata-local-microsoft-windows-ine-28.jpg

In case that connection with data source is established successfully, on the SQL Server ODBC Source Test window, the “TESTS COMPLETED SUCCESSFULLY” message will appear:

c-users-marko-appdata-local-microsoft-windows-ine-29.jpg

To confirm that the ODBC data source connection is created, in the ODBC Data Source Administrator dialog box under the System DSN tab, the name of the ODBC data source that was created will appear:

Ни для кого не секрет, что скорость получения данных из Active Directory с помощью штатных средств в сценарии оставляет желать лучшего. Одно из решений проблемы – использовать прилинкованный SQL-сервер.

Теория создания прилинкованного сервера

Прилинкованный сервер можно создать двумя способами – программным и вручную.

Создание прилинкованных серверов вручную

Чтобы создать прилинкованный сервер вручную, необходимо войти в «SQL Server Enterprise Manager -> SQL Server Group -> Сервер -> Sequrity -> Linked Server» и в контекстном меню выбрать «New Linked Server…». В диалоговом окне присутствуют следующие параметры (см. рис. 1):

  • Linked name – произвольное имя создаваемого сервера. Максимальная длина 128 символов.
  • Provider name – имя провайдера выбирается из списка, например Microsoft Jet 4.0 OLE DB Provider. Максимальная длина этого обязательного параметра – 128 символов. Остальным параметрам значения присваиваются по необходимости.
  • Product name – комментарий прилинкованного сервера размером до 128 символов.
  • DataSource – имя источника данных или его IP-адрес. Максимальная длина 4000 символов.
  • Provider String – строка соединения, в которой могут быть заданы имя, пароль и другие характеристики доступа, например – «Encrypt Password=False;Integrated Security=SSPI;». Максимальная длина 4000 символов.

Рисунок 1. Создание прилинкованного сервера

Во второй вкладке – «Security» осуществляется конфигурация безопасности. Для прилинкованного сервера к Active Directory настройки можно оставить по умолчанию: «Be may using the login’s current security context».

Третья вкладка – «Server Options». Удостоверьтесь, что отмечены опции Data Access и Use Remote Collation. Использование RPC в случае соединения с Active Directory не обязательно.

Создание прилинкованного сервера к Active Directory на практике

Для создания прилинкованного к AD сервера используется провайдер OLE DB Provider for Microsot Directory Services (ADsDSOObject). Именно его необходимо выбрать в списке «Provider Name» во вкладке «Settings». В поле «Data Source» указывают adsdatasource. Рекомендуется добавить описание созданного сервера в поле «Product Name», например Active Directory Service Interfaces. Остальные настройки остаются без изменений (см. рис. 2).

Рисунок 2. Прилинкованный к AD сервер

Если по какой-то причине OLE DB Provider for Microsot Directory Services провайдер отсутствует в предлагаемом списке, необходимо изменить значение параметра AllowInProcess (тип DWORD) в ветви HKLM\Software\Microsoft\MSSQLServer\Providers\ADSDSOObject на 1 (см. рис. 3).

Рисунок 3. Провайдер OLE DB Provider for Microsoft Directory Services в реестре

Существует альтернативный вариант прилинкованного сервера с помощью Microsoft Jet 4.0 OLE DB Provider. Все настройки остаются прежними, за исключением Provider String:

Provider=ADsDSOObject;Encrypt Password=False;Integrated Security=SSPI;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648

OLE DB Provider for Microsoft Directory Services" does not provide either the tables or views.

Therefore you will get the error "Error 7301: Could not obtain a required interface from OLEDB provider ADsDSOObject

Не обращайте внимания на него и переходите к созданию запроса.

Программное создание прилинкованного сервера

Для программного создания прилинкованного сервера программным способом используется функция sp_addlinkedserver, у которой следующий синтаксис:

sp_addlinkedserver [ @server = ] 'server'

  • server – имя создаваемого прилинкованного сервера;
  • product_name – его описание;
  • provider_name – имя провайдера, к которому прилинковывается сервер;
  • data_source – источник данных – имя или IP-адрес ресурса;
  • location – местонахождение базы как интерпретатора OLE-DB провайдера;
  • provider_string – строка соединения, содержащая параметры создаваемого соединения, при необходимости;
  • catalog – имя каталога, который будет использоваться как временный во время соединения с провайдером.

На практике запрос, формирующий прилинкованный сервер (см. рис. 2) к Active Directory, следующий:

Использование прилинкованного сервера

Прежде чем рассказывать о чтении данных через прилинкованный сервер, приведу пример получения данных из АD с помощью обычного ADODB-соединения. Рассмотрим задачу формирования списка компьютеров в текущем домене. Листинг на VBScript:

Set objConnection = СreateОbject("ADODB.Connection")

Set objCommand = СreateОbject("ADODB.Command")

objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection

Set sql=objconnection.execute("SELECT cn FROM 'LDAP://DC=firm,DC=ru' WHERE objectClass='Computer'" )

Do Until sql.EOF

В данном и во всех последующих листингах для наглядности имя домена намеренно присутствует в явном виде.

Чтение данных в Query Analyzer осуществляется с помощью:

openquery( linked_server , 'query' )

где linked_server – имя прилинкованного сервера, а query – SQL-запрос, заключенный в кавычки.

Запрос, формирующий список компьютеров, входящих в домен, включает в себя подзапрос, в котором непосредственно идет обращение к AD:

select * from openquery

Замечание: в SQL-запросе «select cn from ''LDAP://DC=firm,DC=ru'' where objectclass=''computer''» имя домена и параметр фильтра заключаются в двойные апострофы, а не в кавычки.

Характеристики, считываемые из Active Directory, могут относиться к одному из следующих типов данных: строка, массив, бинарное значение, число. Создавая более сложные SQL-запросы, учитывайте тип данных считываемой переменной. Используя функцию Convevert, осуществляйте преобразование типов. Она имеет три параметра: type – тип данных, к которому необходимо преобразовать переменную, num – максимальное ограничение количества символов, field – имя поля. При считывании данных из AD данные преобразуются к строке переменной длины: varchar(50). Синтаксис функции выглядит следующим образом:

openquery( linked_server , 'query' )

Рассмотрим характерный пример. Требуется построить таблицу, в которой будет две колонки – UserName и Description. В первую колонку должны попасть все имена пользователей в домене. Им соответствует значение поля cn в AD. Во вторую – должности соответствующих сотрудников, которые зафиксированы в поле Description его учетной записи.

В основном запросе вместо «*» должны быть указаны два поля. Причем данные необходимо преобразовать, а столбцы переименовать. Преобразование типов данных осуществляется с помощью описанной ранее функции convert(), а переименование столбцов – с помощью инструкции OldFieldName as NewFieldName, где OldFieldName – считанное имя поля, а NewFieldName – отображаемое. Таким образом, основной запрос выглядит так:

Select Convert(varchar(50), cn) as UserName,

From openquery (ADSI, '…')

Поскольку желаемое название второго столбца совпадает с именем переменной, то нет необходимости его переименовывать.

С помощью вложенного запроса считываем данные из AD:

Select cn, description from 'LDAP://DC=firm,DC=ru' where objectclass='person' and not objectclass='computer'

Суммируя сказанное, получим следующий запрос:

Select Convert(varchar(50), cn) as UserName,

From openquery (ADSI,

'Select cn, description

where objectclass=''person'' and not objectclass=''computer''

Для подключения к SQL-серверу на VBScript также используется ADODB-соединение, однако связь с AD идет не напрямую через ADsDSOObject, а с помощью прилинкованного сервера.

С помощью функции СreateОbject создают два объекта: Adodb.Сonnection – для соединения с SQL-сервером и Аdodb.Recordset – с прилинкованным к нему сервером. В строке соединения не нужно указывать имя базы, поскольку ни к одной из них подключения не осуществляется:

str_q="select * from ОpenQuery (ADSI, 'select cn from ''LDAP://DC=firm,DC=ru'' where objectclass=''computer'' ')"

rs.open str_q, a, 1, 2, 1

An error occurred while preparing a query for execution against OLE DB provider 'ADsDSOObject'.

Практика использования прилинкованного сервера

Ранее говорилось об ограничении прилинкованного сервера: он может использоваться только для чтения данных. Записать какие-либо параметры в AD с его помощью невозможно. Комбинация чтения данных из AD с помощью прилинкованного сервера и запись их в базу с помощью ADODB позволяют создавать быстро работающие скрипты, которые можно интегрировать в ASP, ASPX-файлы. Предположим, что необходимо анализировать поле telephonenumber всех учетных записей пользователей в Active Directory, и если поле содержит информацию – записать в него «***».

Алгоритм сценария следующий: с помощью прилинкованного сервера сформируем запрос, который будет выводить список пользователей, у которых поле telephonenumber пустое. Прежде чем создавать скрипт на VBScript, настоятельно рекомендуется сформировать запрос к прилинкованному серверу в Query Analyzer. Это позволит ускорить создание скрипта. Для удобства контроля в Query Analyzer сделаем в таблице два поля – имя (UserName) и номер телефона (Tel), которым соответствуют поля cn и telephonenumber. В подзапросе непосредственно к AD укажем оба эти поля.

Теперь нужно правильно сформировать фильтр where. Во-первых, необходимо отфильтровать учетные записи пользователей от всех объектов (см. таблицу).

Читайте также: