Поставщик Oracle для OLE DB

Поставщик Oracle Provider для OLE DB (8.1.7.3.0) позволяет распределенным запросам обращаться к базам данных Oracle. Ниже представлена поддержка поставщика Oracle для OLE DB.

Oracle (32-разрядная версия)

Только внепроцессный

Oracle (64-разрядная версия)

Нет

Создание связанного сервера для доступа к экземпляру базы данных Oracle

  1. Убедитесь, что клиентское программное обеспечение Oracle на сервере, где запущен Microsoft SQL Server, соответствует уровню, который требуется поставщику. Поставщику Oracle для OLE DB (8.1.7.3.0) требуется клиент Oracle 8.1.7.0.

  2. Создайте псевдоним на сервере, где запущен SQL Server, указывающий на экземпляр базы данных Oracle. Дополнительные сведения см. в документации по Oracle.

  3. Выполните хранимую процедуру sp_addlinkedserver, чтобы создать связанный сервер, указав OraOLEDB.Oracle в качестве provider_name и псевдоним для базы данных Oracle в качестве data_source.

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

    exec sp_addlinkedserver @server='OrclDB', 
        @srvproduct='Oracle',
        @provider='OraOLEDB.Oracle', 
        @datasrc='DQORA8'
    
    Примечание по безопасностиПримечание по безопасности

    В этом примере проверка подлинности Windows не применяется. Пароли передаются в незашифрованном виде. Пароли могут быть видны в определениях источника данных и сценариях, сохраненных на диске и в составе резервных копий, а также в файлах журналов. Никогда не используйте для таких соединений пароль администратора. За инструкциями по безопасности среды обратитесь к сетевому администратору.

  4. При помощи процедуры sp_addlinkedsrvlogin свяжите имена входа SQL Server с именами входа Oracle.

    Следующий пример связывает имя входа SQL ServerJoe со связанным сервером, определенным на шаге 3, используя имя входа и пароль Oracle OrclUsr и OrclPwd.

    sp_addlinkedsrvlogin @rmtsrvname = 'OrclDB', 
       @useself = 'false', 
       @locallogin = 'Joe', 
       @rmtuser = 'OrclUsr', 
       @rmtpassword = 'OrclPwd'
    

Ссылаясь на таблицы связанного сервера Oracle, пользуйтесь следующими правилами.

  • Если имена таблиц и столбцов были созданы в Oracle без использования заключенных в кавычки идентификаторов, используйте имена, состоящие из прописных букв.

  • Если имена таблиц и столбцов были созданы в Oracle с использованием заключенных в кавычки идентификаторов, используйте во всех именах строчные и прописные буквы соответственно написанию, с которым они были созданы в Oracle.

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

  • Этот поставщик не поддерживает прямую передачу литералов datetime в виде аргументов в следующем формате:

    EXEC 'string' '<datetime-literal>' AT <oraclelinkedserver>
    

    Например, следующий способ использования литерала '14-sep-94' типа datetime не поддерживается:

    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', '14-sep-94', 5) AT OrclDB
    

    Вместо этого создайте переменную datetime, присвойте ей значение литерала и выполните функцию EXEC, указав переменную в качестве аргумента.

    DECLARE @v1 datetime
    SET @v1 = CONVERT(datetime,'14-sep-94')
    EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) 
       VALUES (?, ?, ?, ?)', '6380', '6871', @v1, 5) AT OrclDB
    

Ограничения

SQL Server не позволяет использовать статистическую функцию AVG при обращении к таблицам Oracle, поскольку поставщик Oracle возвращает OLE DB тип DBTYPE_VARNUMERIC. SQL Server не поддерживает тип DBTYPE_VARNUMERIC. В следующем примере кода возвращается ошибка.

SELECT AVG(QTY)
FROM ORA..RPUBS.SALES

Чтобы избежать ошибки, используйте инструкцию OPENQUERY. Например:

SELECT *
FROM OPENQUERY(ORA,
   'SELECT CAST (AVG(QTY) AS numeric)
   FROM ORA..RPUBS.SALES')

Разделы реестра

Чтобы поставщик OLE DB для Oracle мог работать с клиентским программным обеспечением Oracle, необходимо внести изменения в реестр клиентского компьютера. Для этого необходимо открыть файл реестра из командной строки. Не следует запускать несколько экземпляров клиентского программного обеспечения одновременно. Эти файлы перечислены в следующей таблице и находятся в том же дереве каталогов, которое содержит установку компонентов доступа к данным (MDAC). Обычно они находятся в папке «C:\Program Files\Common Files\System Files\OLE DB».

Клиент Oracle

Windows NT или 9x

Windows 2000

7.x

mtxoci7x_winnt.reg

mtxoci7x_win2k.reg

8.0

mtxoci80_winnt.reg

mtxoci80_win2k.reg

8.1

mtxoci81_winnt.reg

mtxoci81_win2k.reg