Compartilhar via


Considerações sobre servidor vinculado em um SQL Server clusterizado

Quando servidores vinculados são configurados em um SQL Server clusterizado em relação a provedores OLE DB que não são fornecidos com o SQL Server, verifique se os provedores OLE DB estão instalados em todos os nós do cluster. Além disso, todas as propriedades que definem o servidor vinculado devem ter transparência de local. Elas não devem conter informações que assumem que o SQL Server está sempre em execução em um nó específico do cluster.

O exemplo a seguir define um servidor vinculado em relação a um servidor que executa o SQL Server e faz referência a uma das tabelas remotas usando um nome de quatro partes em uma instrução SELECT. (Use SQLNCLI e o SQL Server redirecionará para a última versão do provedor OLE DB do SQL Server Native Client.)

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

Servidores vinculados de loopback

Servidores vinculados podem ser definidos para apontar novamente (loopback) para o servidor no qual eles são definidos. Servidores de loopback são mais úteis ao testar um aplicativo que usa consultas distribuídas em uma única rede de servidores.

Por exemplo, a execução do seguinte procedimento armazenado sp_addlinkedserver em um servidor nomeado MyServer define um servidor de loopback vinculado:

sp_addlinkedserver @server = N'MyLink',
    @srvproduct = N' ',
    @provider = N'SQLNCLI', 
    @datasrc = N'MyServer', 
    @catalog = N'AdventureWorks'
GO

Instruções Transact-SQL que usam MyLink como o nome do servidor executam loop por meio do provedor SQLNCLI e novamente para o servidor local.

Servidores de loopback vinculados não podem ser usados em uma transação distribuída. A tentativa de executar uma consulta distribuída em relação a um servidor de loopback vinculado de dentro de uma transação distribuída provoca um erro, como o erro 3910: "[Microsoft][Driver ODBC do SQL Server][SQL Server]O contexto da transação está sendo usado por outra sessão." Essa restrição não se aplica quando uma instrução INSERT...EXECUTE, emitida por uma conexão sem vários conjuntos de resultados ativos (MARS) habilitados, é executada em um servidor de loopback vinculado. Observe que a restrição ainda se aplica quando MARS é habilitado em uma conexão.