Compartilhar via


Servidores vinculados (Mecanismo de Banco de Dados)

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

Os servidores vinculados permitem que o Mecanismo de Banco de Dados do SQL Server e a Instância Gerenciada de SQL do Azure leiam dados de fontes de dados remotas e executem comandos em servidores de banco de dados remotos (por exemplo, fontes de dados OLE DB), fora da instância do SQL Server. Normalmente, você configura servidores vinculados para permitir que o Mecanismo de Banco de Dados execute uma instrução Transact-SQL que inclua tabelas em outra instância do SQL Server ou outro produto de banco de dados, como o Oracle. Você pode configurar muitos tipos de fontes de dados OLE DB como servidores vinculados, incluindo provedores de banco de dados de terceiros e Azure Cosmos DB.

Observação

Há servidores vinculados disponíveis no SQL Server e na Instância Gerenciada de SQL do Azure (com algumas restrições). Os servidores vinculados não estão disponíveis no Banco de Dados SQL do Azure.

Quando usar os servidores vinculados?

Os servidores vinculados permitem implementar bancos de dados distribuídos que podem buscar e atualizar dados em outros bancos de dados. Use servidores vinculados em cenários em que você precisa implementar a fragmentação de banco de dados sem criar código de aplicativo personalizado ou carregar diretamente de fontes de dados remotas. Servidores vinculados têm as seguintes vantagens:

  • A capacidade de acessar dados de fora do SQL Server.

  • A capacidade de emitir consultas distribuídas, atualizações, comandos e transações em fontes de dados heterogêneos em toda a empresa.

  • A capacidade de endereçar de forma semelhante diversas fontes de dados.

É possível configurar um servidor vinculado usando o SQL Server Management Studio ou a instrução sp_addlinkedserver. Provedores do OLE DB variam muito no tipo e número de parâmetros requeridos. Por exemplo, alguns provedores exigem que você forneça um contexto de segurança para a conexão usando sp_addlinkedsrvlogin. Alguns provedores OLE DB permitem que o SQL Server atualize dados na origem de OLE DB. Outros fornecem apenas o acesso a dados somente leitura. Para obter informações sobre cada provedor do OLE DB, consulte a documentação desse provedor do OLE DB.

Componentes de servidores vinculados

Uma definição de servidor vinculado especifica os seguintes objetos:

  • Um provedor de OLE DB

  • Uma fonte de dados de OLE DB

Um provedor de OLE DB é uma DLL que gerencia e interage com uma fonte de dados específica. Uma fonte de dados OLE DB identifica o banco de dados específico que você pode acessar por meio do OLE DB. Embora fontes de dados consultadas através de definições de servidores vinculados sejam, ordinariamente, bancos de dados, existem provedores de OLE DB para diversos arquivos e formatos de arquivo. Esses arquivos incluem texto sem formatação, dados de planilha e os resultados de pesquisas de conteúdo de texto completo.

A partir do SQL Server 2019 (15.x), o Driver do Microsoft OLE DB para SQL Server (PROGID: MSOLEDBSQL) é o provedor OLE DB padrão. Em versões anteriores, o SQL Server Native Client (PROGID: SQLNCLI11) era o provedor OLE DB padrão.

Importante

O SQL Server Native Client (geralmente abreviado como SNAC) foi removido do SQL Server 2022 (16.x) e do SSMS (SQL Server Management Studio) 19. O provedor OLE DB do SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o Provedor OLE DB herdado da Microsoft para o SQL Server (SQLOLEDB) não são recomendados para um novo desenvolvimento. Alterne para o novo Driver do Microsoft OLE DB para SQL Server (MSOLEDBSQL) no futuro.

A Microsoft dá suporte a servidores vinculados a fontes do Excel e do Access somente quando você usa o provedor OLE DB microsoft.JET.OLEDB.4.0 de 32 bits.

Observação

As consultas distribuídas do SQL Server funcionam com qualquer provedor OLE DB que implemente as interfaces OLE DB necessárias. No entanto, o SQL Server foi testado no provedor OLE DB padrão.

Detalhes sobre servidores vinculados

A ilustração a seguir mostra os fundamentos básicos de uma configuração de servidores vinculados.

Diagrama mostrando as camadas de cliente, de servidor e de servidor de banco de dados.

Normalmente, você usa servidores vinculados para lidar com consultas distribuídas. Quando um aplicativo cliente executa uma consulta distribuída através de um servidor vinculado, o SQL Server analisa o comando e envia solicitações ao OLE DB. Essa solicitação de conjunto de linhas poderia ser a execução de uma consulta em relação ao provedor ou a abertura de uma tabela base do provedor.

Para que uma fonte de dados retorne dados através de um servidor vinculado, seu provedor de OLE DB (DLL) deve estar presente no mesmo servidor da instância do SQL Server.

Os servidores vinculados dão suporte à autenticação de passagem do Active Directory ao usar a delegação completa. A partir do SQL Server 2017 (14.x) CU17, também existe suporte para autenticação de passagem com delegação restrita. No entanto, não há suporte para delegação restrita baseada em recursos.

Importante

Quando você usa um provedor OLE DB, a conta na qual o serviço do SQL Server é executado deve ter permissões de leitura e execução para o diretório e todos os subdiretórios nos quais o provedor está instalado. Esse requisito se aplica a provedores lançados pela Microsoft e a quaisquer provedores de terceiros.

Gerenciar provedores

Há uma série de opções que controlam como o SQL Server carrega e usa os provedores OLE DB especificados no registro.

Gerenciar definições de servidores vinculados

Ao configurar um servidor vinculado, registre as informações de conexão e as informações da fonte de dados com o SQL Server. Depois de registrado, você pode consultar essa fonte de dados com um único nome lógico.

Use procedimentos armazenados e exibições de catálogo para gerenciar definições de servidor vinculado:

  • Crie uma definição de servidor vinculado, executando sp_addlinkedserver.

  • Exiba informações sobre os servidores vinculados definidos em uma instância específica do SQL Server executando uma consulta em relação às exibições do catálogo do sistema sys.servers.

  • Exclua uma definição de servidor vinculado, executando sp_dropserver. Você também pode usar esse procedimento armazenado para remover um servidor remoto.

Você também pode definir servidores vinculados usando o SQL Server Management Studio. No Pesquisador de Objetos, clique com o botão direito do mouse em Objetos do Servidor, selecione Novo e selecione Servidor Vinculado. Você pode excluir uma definição de servidor vinculado clicando com o botão direito do mouse no nome do servidor vinculado e selecionando Excluir.

Ao executar uma consulta distribuída em relação a um servidor vinculado, inclua um nome de tabela de quatro partes totalmente qualificado para cada fonte de dados a consultar. Esse nome de quatro partes deve estar no formulário <linked_server_name>.<catalog>.<schema>.<object_name>.

As referências a objetos temporários são sempre resolvidas para a instância local tempdb quando aplicável, mesmo quando se utiliza o nome do servidor vinculado como prefixo.

Você pode definir servidores vinculados para redirecionar (loop back) para o servidor no qual foram definidos. Servidores de loopback são mais úteis ao testar um aplicativo que usa consultas distribuídas em uma única rede de servidores. Os servidores de loopback vinculados devem ser usados em testes e não oferecem suporte para várias operações, como transações distribuídas.

Servidores vinculados com a Instância Gerenciada de SQL do Azure

Os servidores vinculados da Instância Gerenciada de SQL do Azure dão suporte tanto à autenticação do SQL quanto à autenticação com a ID da Microsoft Entra.

Para usar trabalhos do SQL Agent na Instância Gerenciada de SQL do Azure para consultar um servidor remoto por meio de um servidor vinculado, use sp_addlinkedsrvlogin para criar um mapeamento de um logon no servidor local para um logon no servidor remoto. Quando o trabalho do SQL Agent se conecta ao servidor remoto por meio do servidor vinculado, ele executa a consulta T-SQL no contexto do acesso remoto. Para obter mais informações, confira Trabalhos do SQL Agent com a Instância Gerenciada de SQL do Azure.

autenticação do Microsoft Entra

Dois modos de autenticação do Microsoft Entra compatíveis são: identidade gerenciada e passagem. Use a autenticação de identidade gerenciada para permitir logons locais para consultar servidores vinculados remotos. Use a autenticação de passagem direta para permitir que um principal que possa se autenticar com uma instância local acesse uma instância remota por meio de um servidor ligado.

Para usar a autenticação de passagem do Microsoft Entra para um servidor vinculado na Instância Gerenciada de SQL do Azure, você precisa dos seguintes pré-requisitos:

  • A mesma entidade de segurança adicionada como um logon no servidor remoto.
  • Ambas as instâncias devem pertencer ao grupo de confiança do SQL.

Observação

As definições existentes de servidores vinculados que você configurou para o modo de passagem dão suporte à autenticação do Microsoft Entra. O único requisito é adicionar a Instância Gerenciada de SQL ao grupo de confiança do servidor.

As seguintes limitações se aplicam à autenticação do Microsoft Entra para servidores vinculados na Instância Gerenciada de SQL do Azure:

  • A autenticação do Microsoft Entra não é compatível com instâncias gerenciadas de SQL em diferentes locatários do Microsoft Entra.
  • A autenticação do Microsoft Entra para servidores vinculados tem suporte apenas com a versão 18.2.1 ou superior do driver OLE DB.

SQL Server 2025 e MSOLEDBSQL versão 19

A partir do SQL Server 2025 (17.x), o provedor MSOLEDBSQL usa o Microsoft OLE DB Driver 19 por padrão. Esse driver atualizado apresenta aprimoramentos de segurança significativos, incluindo suporte para TDS 8.0 e TLS 1.3.

O TDS 8.0 melhora a segurança adicionando uma nova opção de criptografia e apresenta uma alteração significativa: o Encryption parâmetro não é mais opcional. Você deve defini-lo na cadeia de conexão ao direcionar outra instância do SQL Server.

Observação

Sem o parâmetro Encrypt, os servidores vinculados no SQL Server 2025 (17.x) são configurados para o padrão Encrypt=Mandatory e requerem um certificado válido. As conexões sem um certificado válido falham.

O Encryption parâmetro oferece três configurações distintas:

  • Yes, ou True, ou Mandatory
  • No, ou False, ou Optional
  • Strict

A Strict opção determina o uso do TDS 8.0 e requer um certificado de servidor para conexões seguras. Para Yes/True/Mandatory, é esperado um certificado confiável. Você não pode usar um certificado autoassinado.

Versão do OLE DB Parâmetro de criptografia Valores possíveis Valor padrão
OLE DB 18 Opcional Trueou , MandatoryFalse ouNo No
OLE DB 19 Required No ou False, Yes ou Mandatory, Strict (novo) Yes

O TrustServerCertificate parâmetro tem suporte, mas não é recomendado. Definindo Certificado do Servidor Confiável para Yes desabilita a validação do certificado, enfraquecendo a segurança das conexões criptografadas. Para usar o Certificado do Servidor confiável, o cliente também deve habilitá-lo no registro do computador. Para obter informações sobre como habilitar o Certificado do Servidor Confiável, consulte as configurações do Registro. A configuração TrustServerCertificate=Yes não é recomendada para ambientes de produção.

Quando você usa Encrypt=False ou Encrypt=Optional:

  • Nenhum certificado é necessário.
  • Se um certificado confiável for fornecido, o driver não o validará.
  • A conexão não fornece nenhuma criptografia.

Quando você usa Encrypt=True ou Encrypt=Mandatorynão usa TrustServerCertificate=Yes:

  • A conexão requer um certificado assinado pela AUTORIDADE de Certificação válido.
  • O certificado deve corresponder ao FQDN do servidor.
  • Se o nome alternativo no certificado for diferente do nome do Host do SQL Server, deverá HostNameInCertificate ser definido como FQDN.
  • O certificado deve ser instalado no repositório Autoridades de Certificação Raiz Confiáveis no computador cliente.

Quando você usa Encrypt=Strict:

  • A conexão impõe o TDS 8.0.
  • A conexão requer um certificado assinado por AC válido com correspondência FQDN.
  • HostNameInCertificate deve ser definido como o FQDN.
  • O certificado deve ser confiável pelo sistema cliente.
  • TrustServerCertificate não há suporte para a configuração. Um certificado válido deve estar presente.
Configuração do cliente Confiar em Certificado do Servidor Atributo de conexão/cadeia de conexão Confiar em Certificado do Servidor Validação de certificado
0 No (padrão) Sim
0 Yes Sim
1 No (padrão) Sim
1 Yes Não

Você deve especificar corretamente essas configurações na cadeia de conexão ao configurar conexões de servidor vinculadas, para garantir a compatibilidade e a segurança com o novo driver.

Atualização de versões anteriores do OLEDB

Aplica-se a: SQL Server 2025 (17.x) e versões posteriores

Quando você migra de edições anteriores do SQL Server para o SQL Server 2025 (17.x) com o Microsoft OLE DB Driver 19, as configurações de servidor vinculado existentes podem falhar. Valores padrão diferentes para o parâmetro de criptografia podem causar essa falha, a menos que você forneça um certificado válido.

Como alternativa, você pode recriar o servidor vinculado e incluir Encrypt=Optional na cadeia de conexão. Se você não puder modificar a configuração do servidor vinculado, habilite o sinalizador 17600 de rastreamento para manter o comportamento e os padrões do OLE DB 18.

No Assistente de Criação de Servidor Vinculado do SSMS (SQL Server Management Studio), use a opção Outras Fontes de Dados para configurar manualmente as opções de Criptografia do servidor vinculado.

Para obter mais informações sobre o OLE DB 19 e criptografia, certificado e comportamento de certificado de servidor confiável para OLE DB 19, consulte Criptografia e validação de certificado no OLE DB.