Compartir a través de


Proveedor OLE DB SQL Server Native Client

El MicrosoftSQL Server proveedor OLE DB de SQL Native Client proporciona una interfaz OLE DB a las bases de datos de MicrosoftSQL Server 2005. Este proveedor Native Client OLE DB SQL Serverpermite que las consultas distribuidas de SQL Server puedan consultar datos de instancias remotas de SQL Server.

Para crear un servidor vinculado que obtenga acceso a una base de datos de SQL Server

  • Ejecute sp_addlinkedserver para crear el servidor vinculado, especificando el nombre de red del servidor que ejecuta la instancia remota de SQL Server como data_source. En el caso de servidores vinculados de SQL Server, especificar el proveedor SQLNCLI es opcional. (El uso de SQLNCLI y SQL Server redirigirá a la última versión del proveedor OLE DB de SQL Server Native Client).

    Por ejemplo, para crear un servidor vinculado denominado LinkSQLSrvr que funcione en la instancia de SQL Server que se ejecuta en el servidor cuyo nombre de red es NetSQLSrvr, ejecute alguna de las siguientes opciones:

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

    Como alternativa, puede definir un servidor SQL Server vinculado como su nombre de red, como se muestra en el ejemplo siguiente:

    sp_addlinkedserver N'NetSQLSrvr'
    

Cuando se ejecutan consultas distribuidas en un servidor que ejecuta una instancia de SQL Server 2000, se recomienda aplicar el Service Pack 4 (SP4) de SQL Server 2000. Si no se ha aplicado el SP4, es preciso ejecutar elscript Instcat.sql que se incluye en el SP4 para actualizar los procedimientos almacenados del catálogo.

Cuando se ejecutan consultas distribuidas en un servidor que tiene instalado SQL Server o una versión anterior, es necesario actualizar los procedimientos almacenados del catálogo de la versión anterior para garantizar el correcto funcionamiento de las consultas distribuidas. Por ejemplo, si un servidor ejecuta una instancia de SQL Server 7.0, los procedimientos almacenados del catálogo del servidor se deben actualizar a SQL Server 2008 para que se pueda hacer referencia a él en una consulta distribuida desde un servidor que ejecute una instancia de SQL Server 2008.

Cuando se actualiza una tabla remota de SQL Server, el servidor local o cliente no recibe ningún conjunto de resultados ni mensajes como resultado de los desencadenadores activados para esa actualización.

Cuando use nombres de cuatro partes, especifique siempre el nombre del esquema. Si no se especifica un nombre de esquema en una consulta distribuida, OLE DB no puede encontrar las tablas. Cuando se hace referencia a tablas locales, SQL Server usa los valores predeterminados si no se especifica ningún nombre de propietario. La siguiente instrucción SELECT generaría un error 7314, incluso si el inicio de sesión del servidor vinculado estaba asignado a un usuario dbo en la base de datos AdventureWorks del servidor vinculado:

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

El ejemplo siguiente define un servidor vinculado y un servidor remoto que obtienen acceso al mismo equipo cuyo nombre de red es othersite. La definición del servidor vinculado utiliza el mismo nombre que el nombre de red del servidor remoto; la definición del servidor remoto utiliza otro nombre.

/* 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 estos nombres se puede hacer referencia en consultas distribuidas o en llamadas de procedimientos remotos.

/* 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

El mecanismo de asignación de inicios de sesión es diferente para los procedimientos almacenados ejecutados a través del servidor vinculado y los procedimientos almacenados ejecutados a través de servidores remotos. Para obtener más información, vea Vincular servidores.

Consideraciones sobre transacciones con consultas distribuidas

El proveedor OLE DB de MicrosoftSQL Server SQL Native Client no admite transacciones anidadas. Por tanto, se debe establecer XACT_ABORT en ON para las operaciones de modificación de datos dentro de una transacción que implique varias instrucciones Transact-SQL y para operaciones de modificación de datos en vistas con particiones distribuidas.