Partilhar via


Servidores vinculados (Mecanismo de Banco de Dados)

Aplica-se a:SQL ServerAzure SQL Managed Instance

Os servidores ligados permitem que o Motor de Base de Dados SQL Server e a Instância Gerida Azure SQL leiam dados de fontes de dados remotas e executem comandos contra servidores de base de dados remotos (por exemplo, fontes de dados OLE DB), fora da instância do SQL Server. Normalmente, configura-se servidores ligados para permitir que o Motor de Base de Dados execute uma instrução Transact-SQL que inclua tabelas noutra instância do SQL Server ou noutro produto de base de dados como o Oracle. Pode configurar muitos tipos de fontes de dados OLE DB como servidores ligados, incluindo fornecedores de bases de dados terceiros e Azure Cosmos DB.

Observação

Os servidores vinculados estão disponíveis no SQL Server e na Instância Gerenciada 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 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 ligados em cenários onde precise de implementar fragmentação de base de dados sem criar código de aplicação personalizado ou carregar diretamente a partir de fontes de dados remotas. Os servidores vinculados oferecem 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êneas em toda a empresa.

  • A capacidade de abordar diversas fontes de dados de forma semelhante.

Você pode configurar um servidor vinculado usando o SQL Server Management Studio ou a instrução sp_addlinkedserver . Os provedores OLE DB variam muito no tipo e no número de parâmetros necessários. 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 fonte OLE DB. Outros fornecem apenas acesso a dados de leitura apenas. Para obter informações sobre cada provedor OLE DB, consulte a documentação desse provedor OLE DB.

Componentes de servidor vinculados

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

  • Um provedor OLE DB

  • Uma fonte de dados OLE DB

Um provedor OLE DB é uma DLL que gerencia e interage com uma fonte de dados específica. Uma fonte de dados OLE DB identifica a base de dados específica à qual pode aceder através do OLE DB. Embora as fontes de dados consultadas por meio de definições de servidor vinculado sejam normalmente bancos de dados, os provedores OLE DB existem para vários arquivos e formatos de arquivo. Estes ficheiros incluem texto simples, dados de folhas de cálculo e os resultados de pesquisas de conteúdo em texto completo.

A partir do SQL Server 2019 (15.x), o Microsoft OLE DB Driver for 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 SNAC) foi removido do SQL Server 2022 (16.x) e do SQL Server Management Studio 19 (SSMS). O provedor OLE DB do SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o provedor Microsoft OLE DB herdado para SQL Server (SQLOLEDB) não são recomendados para novos desenvolvimentos. Mude para o novo Microsoft OLE DB Driver (MSOLEDBSQL) para SQL Server daqui em diante.

A Microsoft suporta servidores ligados a fontes Excel e Access apenas quando utiliza o fornecedor de 32 bits Microsoft.JET.OLEDB.4.0 OLE DB.

Observação

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

Detalhes do servidor vinculado

A ilustração a seguir mostra os conceitos básicos de uma configuração de servidor vinculado.

Diagrama mostrando a camada do cliente, a camada do servidor e a camada do servidor de banco de dados.

Normalmente, utiliza-se servidores ligados para tratar de consultas distribuídas. Quando um aplicativo cliente executa uma consulta distribuída por meio de um servidor vinculado, o SQL Server analisa o comando e envia solicitações para o OLE DB. A solicitação de conjunto de linhas pode estar na forma de executar uma consulta no provedor ou abrir uma tabela base do provedor.

Para que uma fonte de dados retorne dados por meio de um servidor vinculado, o provedor OLE DB (DLL) dessa fonte de dados deve estar presente no mesmo servidor que a instância do SQL Server.

Os servidores vinculados oferecem suporte à autenticação por passagem do Active Directory ao usar a delegação completa. A partir do SQL Server 2017 (14.x) CU17, a autenticação de passagem com delegação restrita também é suportada; no entanto, a delegação restrita baseada em recursos não é suportada.

Importante

Quando utiliza um fornecedor OLE DB, a conta sob a qual o serviço SQL Server corre deve ter permissões de leitura e execução para o diretório, e para todos os subdiretórios, onde o fornecedor está instalado. Este requisito aplica-se a fornecedores lançados pela Microsoft e a quaisquer fornecedores terceiros.

Gerenciar provedores

Há um conjunto de opções que controlam como o SQL Server carrega e usa provedores OLE DB especificados no Registro.

Gerenciar definições de servidor vinculado

Quando configuras um servidor ligado, regista a informação de ligação e a informação da fonte de dados no SQL Server. Depois de registado, pode referir-se a essa fonte de dados com um único nome lógico.

Use procedimentos armazenados e visualizações de catálogo para gerir definições de servidores ligados:

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

  • Exiba informações sobre os servidores ligados definidos em uma instância específica do SQL Server executando uma consulta na vista de 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 Explorador de Objetos, clique com o botão direito em Objetos do Servidor, selecione Novo e selecione Servidor Ligado. 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 um servidor vinculado, inclua um nome de tabela de quatro partes totalmente qualificado para cada fonte de dados a ser consultada. Este nome em quatro partes deve estar na forma <linked_server_name>.<catalog>.<schema>.<object_name>.

As referências a objetos temporários resolvem sempre para as instâncias tempdb locais quando aplicável, mesmo quando prefixadas com o nome do servidor ligado.

Podes definir servidores ligados para apontarem de volta (loop back) para o servidor onde os defines. Os servidores de loopback são mais úteis ao testar um aplicativo que usa consultas distribuídas em uma rede de servidor único. Os servidores vinculados de loopback destinam-se a testes e não são suportados para muitas operações, como transações distribuídas.

Servidores vinculados com a Instância Gerenciada SQL do Azure

Os servidores ligados Azure SQL Managed Instance suportam tanto autenticação SQL como autenticação com Microsoft Entra ID.

Para usar tarefas do SQL Agent na Instância Gerenciada SQL do Azure para consultar um servidor remoto através de um servidor ligado, 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 logon remoto. Para obter mais informações, consulte Tarefas do SQL Agent com a Instância SQL Gerida do Azure.

Autenticação do Microsoft Entra

Os dois modos de autenticação suportados pelo Microsoft Entra são: identidade gerida e pass-through. Utilize a autenticação de identidade gerida para que logins locais possam consultar servidores remotos associados. Use autenticação pass-through para permitir que um principal que possa autenticar-se com uma instância local aceda a uma instância remota através de um servidor vinculado.

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

  • O mesmo princípio é adicionado como login no servidor remoto.
  • Ambas as instâncias são membros do grupo de confiança SQL.

Observação

As definições existentes de servidores ligados que configurou para o modo pass-through suportam a autenticação Microsoft Entra. O único requisito é adicionar a Instância Gerida SQL ao grupo de confiança do servidor.

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

  • A autenticação do Microsoft Entra não é suportada para instâncias SQL geridas em locatários diferentes do Microsoft Entra.
  • A autenticação do Microsoft Entra para servidores vinculados é suportada apenas com o driver OLE DB versão 18.2.1 e superior.

SQL Server 2025 e MSOLEDBSQL versão 19

A partir do SQL Server 2025 (17.x), o fornecedor MSOLEDBSQL utiliza o Microsoft OLE DB Driver 19 por defeito. Este driver atualizado introduz melhorias de segurança significativas, 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 introduz uma mudança de quebra: o Encryption parâmetro não é mais opcional. Tens de a definir na tua string de ligação ao direcionar outra instância do SQL Server.

Observação

Sem o parâmetro Encrypt, os servidores ligados no SQL Server 2025 (17.x) têm por defeito o Encrypt=Mandatory e exigem 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 exige o uso do TDS 8.0 e requer um certificado de servidor para conexões seguras. Para Yes/True/Mandatory, espera-se um certificado confiável. Não é possível usar um certificado autoassinado.

Versão OLE DB Parâmetro de encriptação Valores possíveis Valor predefinido
OLE DB 18 Opcional True ou Mandatory, False ou No No
OLE DB 19 Obrigatório No ou False, Yes ou Mandatory, Strict (novo) Yes

O TrustServerCertificate parâmetro é suportado, mas não recomendado. Definir o Certificado do Servidor de Confiança para Yes desativar 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 da máquina. Para obter informações sobre como habilitar o Certificado do Servidor de Confiança, consulte Configurações do Registro. O cenário TrustServerCertificate=Yes não é recomendado para ambientes de produção.

Quando usa Encrypt=False ou Encrypt=Optional:

  • Não é necessário certificado.
  • Se for fornecido um certificado de confiança, o driver não o valida.
  • A ligação não fornece qualquer encriptação.

Quando usas Encrypt=True ou Encrypt=Mandatory, e não usas TrustServerCertificate=Yes:

  • A ligação requer um certificado válido assinado pela CA.
  • 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 armazenamento de Autoridades de Certificação Raiz Confiáveis na máquina cliente.

Quando usas Encrypt=Strict:

  • A ligação impõe o TDS 8.0.
  • A ligação requer um certificado válido assinado pela CA com correspondência FQDN.
  • HostNameInCertificate deve ser definido como FQDN.
  • O certificado deve ser confiável pelo sistema cliente.
  • TrustServerCertificate A configuração não é suportada. Deve haver um certificado válido.
Configuração do cliente de Certificado do Servidor Confiável Cadeia de conexão/atributo de conexão Certificado de servidor confiável Validação do certificado
0 No (padrão) Sim
0 Yes Sim
1 No (padrão) Sim
1 Yes Não

Deve especificar corretamente estas definições na cadeia de ligação ao configurar ligações de servidores ligados, para garantir compatibilidade e segurança com o novo driver.

Atualização das versões anteriores do OLEDB

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

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

Como alternativa, você pode recriar o servidor vinculado e incluir Encrypt=Optional na cadeia de conexão. Se não for possível 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 Servidores Ligados do SQL Server Management Studio (SSMS), utilize a opção Outras Fontes de Dados para configurar manualmente as opções de encriptação do servidor ligado.

Para obter mais informações sobre 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.