Compartilhar via


Provedor OLE DB do SQL Server Native Client

O provedor OLE DB do Microsoft SQL Server Native Client fornece uma interface OLE DB para bancos de dados Microsoft SQL Server. Usando o Provedor OLE DB do SQL Server Native Client, as consultas distribuídas do SQL Server podem consultar dados em instâncias remotas do SQL Server.

Para criar um servidor vinculado para acessar um banco de dados do SQL Server.

  • Execute sp_addlinkedserver para criar o servidor vinculado especificando o nome da rede do servidor que está executando a instância remota do SQL Server como data_source. Para servidores vinculados do SQL Server, a especificação do provedor (SQLNCLI) é opcional. (Use SQLNCLI e o SQL Server redirecionará para a última versão do provedor OLE DB do SQL Server Native Client.)

    Por exemplo, para criar um servidor vinculado nomeado LinkSQLSrvr que opera em relação à instância do SQL Server que executa no servidor cujo nome de rede é NetSQLSrvr, execute o seguinte:

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

    Como alternativa, você pode definir um servidor vinculado do SQL Server como seu nome de rede, conforme mostrado no exemplo a seguir:

    sp_addlinkedserver N'NetSQLSrvr'
    

Quando consultas distribuídas são executadas em relação a um servidor que está executando uma instância do SQL Server 2000, recomendamos aplicar o SQL Server 2000 Service Pack 4 (SP4). Se o SP4 não foi aplicado, execute o script Instcat.sql que é incluído com o SP4 para atualizar os procedimentos armazenados do catálogo.

Quando consultas distribuídas são executadas em relação a um servidor que executa o SQL Server versão 7.0 ou anterior, os procedimentos armazenados do catálogo da versão anterior devem ser atualizados para garantir operação adequada das consultas distribuídas. Por exemplo, se um servidor estiver executando uma instância do SQL Server 7.0, os procedimentos armazenados do catálogo no servidor devem ser atualizados para o SQL Server 2008 para que possam ser referidos em uma consulta distribuída em um servidor que executa uma instância do SQL Server 2008.

Quando uma tabela remota do SQL Server é atualizada, o cliente ou servidor local não receberá nenhum conjunto de resultados ou mensagens resultantes dos gatilhos acionados para aquela atualização.

Ao usar nomes de quatro vozes, sempre especifique o nome do esquema. A não especificação do nome de um esquema em uma consulta distribuída impede que o OLE DB localize tabelas. Ao fazer referência a tabelas locais, o SQL Server usará padrões se um nome de proprietário não for especificado. A instrução SELECT a seguir gerará um erro 7314, mesmo que o logon do servidor vinculado mapeado para um usuário do dbo no banco de dados AdventureWorks2008R2 no servidor vinculado:

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

O exemplo a seguir define um servidor vinculado e um servidor remoto que os dois acessam no mesmo computador cujo nome de rede é othersite. A definição do servidor vinculado usa o mesmo nome da rede do servidor remoto. A definição do servidor remoto usa outro nome.

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

Esses nomes podem ser referidos em consultas distribuídas ou chamadas de procedimento remotas.

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

Existem diferenças no mecanismo de mapeamento de logon entre procedimentos armazenados executados através do servidor vinculado e dos procedimentos armazenados executados por meio de servidores remotos. Para obter mais informações, consulte Vinculando servidores.

Considerações sobre transações com consultas distribuídas

O Provedor OLE DB do Microsoft SQL Server Native Client não oferece suporte a transações aninhadas. Portanto XACT_ABORT deve ser definido como ON para operações de modificação de dados dentro de uma transação que envolve várias instruções Transact-SQL e para operações de modificação de dados em relação a exibições particionadas distribuídas.