Поделиться через


Поставщик OLE DB для собственного клиента SQL

Изменения: 5 декабря 2005 г.

Поставщик OLE DB для собственного клиента SQL (Microsoft) обеспечивает интерфейс OLE DB к базам данных Microsoft SQL Server 2005. Используя поставщик OLE DB для собственного клиента SQL, распределенные запросы SQL Server могут обращаться к данным в удаленных экземплярах SQL Server.

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

  1. Чтобы создать связанный сервер, следует выполнить хранимую процедуру sp_addlinkedserver, указав сетевое имя сервера, на котором работает удаленный экземпляр SQL Server как data_source. Для связанных серверов SQL Server необязательно указывать поставщика SQLNCLI.

    Например, чтобы создать связанный сервер с именем LinkSQLSrvr, который функционирует с экземпляром SQL Server, работающим на сервере с сетевым именем NetSQLSrvr, следует выполнить следующее:

    sp_addlinkedserver N'LinkSQLSrvr', ' ', N'SQLNCLI', N'NetSQLSrvr'
    sp_addlinkedserver N'LinkSQLSrvr', ' ', ' ', N'NetSQLSrvr'
    

    Иначе можно определить связанный сервер SQL Server как сетевое имя, как показано в следующем примере:

    sp_addlinkedserver N'NetSQLSrvr'
    

При выполнении распределенных запросов к серверу, на котором запущен экземпляр SQL Server 2000, для SQL Server 2000 рекомендуется установить пакет обновления 4 (SP4). Если пакет обновления 4 (SP4) не установлен, необходимо запустить сценарий Instcat.sql, поставляемый с пакетом обновления 4 (SP4), чтобы обновить хранимые процедуры каталога.

Если распределенные запросы выполняются на сервере, работающем с SQL Server версии 7.0 или более поздней версии, то хранимые процедуры каталога прежней версии должны быть обновлены, чтобы обеспечить корректное выполнение распределенных запросов. Например, если на сервере работает экземпляр SQL Server 7.0, то хранимые процедуры каталога должны быть обновлены до версии SQL Server 2005, прежде чем на них можно будет ссылаться в распределенном запросе с сервера, на котором работает экземпляр SQL Server 2005.

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

При использовании имени из четырех частей всегда следует указывать имя схемы. Если в распределенном запросе не указано имя схемы, то OLE DB не найдет таблиц. При ссылке на локальные таблицы в SQL Server используются значения по умолчанию, если имя владельца не указано. Следующая инструкция SELECT вызывает ошибку 7314, даже если имя входа связанного сервера сопоставлено пользователю dbo в базе данных AdventureWorks на связанном сервере:

sp_addlinkedserver @server = N'LinkServer',
    @srvproduct = N' ',
    @provider = N'SQLNCLI', 
    @datasrc = N'ServerNetName', 
    @catalog = N'AdventureWorks'
GO
SELECT *
FROM LinkServer.AdventureWorks.dbo.Vendor

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

/* Create a linked server definition to othersite. */
EXEC sp_addlinkedserver 'othersite', N'SQL Server'

/* Create a remote server definition using a
   fictitious name. */
EXEC sp_addserver 'RPCothersite'

/* Set the fictitious name to the network name far away. */
EXEC sp_setnetname 'RPCothersite', 'othersite'

На эти имена можно ссылаться в распределенных запросах и вызовах удаленных процедур.

/* A distributed query referencing othersite. */
SELECT *
FROM othersite.Northwind.dbo.Employees
/* A remote procedure call to the same server. */
EXEC RPCothersite.master.dbo.sp_who
/* Distributed queries can be used to execute
   stored procedures on the other server. */
EXEC othersite.master.dbo.sp_who

Существуют различия в механизме сопоставления имен входа между хранимыми процедурами, выполняемыми через связанный сервер, и хранимыми процедурами, выполняемыми через удаленные серверы. Дополнительные сведения см. в разделе Связь серверов.

Особенности транзакций с распределенными запросами

Поставщик OLE DB для собственного клиента SQL (Microsoft) не поддерживает вложенные транзакции. Поэтому параметру XACT_ABORT должно быть присвоено значение ON для операций изменения данных внутри транзакции с несколькими инструкциями Transact-SQL и для операций изменения данных в распределенных секционированных представлениях.

См. также

Основные понятия

Соображения об использовании связанных серверов в кластеризованном сервере SQL Server
Распределенные запросы для нескольких экземпляров SQL Server
Распределенные запросы
Распределенные запросы и распределенные транзакции

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Новое содержимое
  • Добавлена рекомендация использования пакета обновления 4 (SP4) для SQL Server 2000 на серверах, где запущен экземпляр SQL Server 2000.