Servidores vinculados (Mecanismo de Banco de Dados)

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

Servidores vinculados permitem que o mecanismo de banco de dados do SQL Server e a Instância Gerenciada de SQL do Azure leiam dados das fontes de dados remotas e executem comandos nos servidores de banco de dados remotos (por exemplo, fontes de dados OLE DB) fora da instância do SQL Server. Normalmente, os servidores vinculados são configurados para habilitar o mecanismo de banco de dados a executar uma instrução Transact-SQL que inclui tabelas em outra instância do SQL Server ou outro produto de banco de dados como Oracle. Muitos tipos de fontes de dados do OLE DB podem ser configurados como servidores vinculados, inclusive provedores de bancos de dados de terceiros e o Azure Cosmos DB.

Observação

Servidores vinculados estão disponíveis no Mecanismo de Banco de Dados do SQL Server e na Instância Gerenciada de SQL do Azure. Não estão habilitados nos pools elásticos e no singleton do Banco de Dados SQL do Azure. Há algumas restrições na Instância Gerenciada do SQL que podem ser encontradas aqui.

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. São uma boa solução nos cenários em que é preciso implementar a fragmentação de banco de dados sem a necessidade de criar um 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 SQL Server Management Studio ou a instrução sp_addlinkedserver (Transact-SQL). 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 (Transact-SQL). 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 de OLE DB identifica o banco de dados específico que pode ser acessado por meio de 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 uma variedade de arquivos e formatos de arquivo. Eles compreendem arquivos de texto, dados de planilha e 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 (MSOLEDBSQL) (PROGID: MSOLEDBSQL) é o provedor OLE DB padrão. Em versões anteriores, o provedor OLE DB do SQL Server Native Client (SQLNCLI) (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.

Servidores vinculados para fontes do Microsoft Access e Excel só são suportados pela Microsoft quando usam o provedor de 32 bits Microsoft.JET.OLEDB.4.0 OLE DB.

Observação

Consultas distribuídas do SQL Server foram projetadas para funcionar 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.

Diagram showing client tier, server tier, and database server tier

Normalmente, servidores vinculados são usados para manipular 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 pode ser a execução de uma consulta em relação ao provedor ou a abertura de uma tabela base do provedor.

Observação

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.

Importante

Quando é usado um provedor de OLE DB, a conta sob a qual o serviço do SQL Server é executado deve ter permissões de leitura e execução no diretório e em todos os subdiretórios em que o provedor está instalado. Isso inclui os provedores lançados pela Microsoft e os provedores de terceiros.

Observação

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.

Gerenciar provedores

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

Gerenciar definições de servidores vinculados

Ao configurar um servidor vinculado, registre as informações de conexão e de fonte de dados com o SQL Server. Depois de registrada, a fonte de dados pode ser chamada por um nome lógico individual.

É possível usar procedimentos armazenados e exibições do catálogo para gerenciar definições de servidores vinculados:

  • 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 de Servidor, selecione Novoe 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 formato nome_do_servidor_vinculado.catalog.esquema.nome_do_objeto.

Observação

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. Os servidores de loopback vinculados devem ser usados em testes e não têm suporte para várias operações, como transações distribuídas.

Autenticação do servidor vinculado da Instância Gerenciada de SQL do Azure

Servidores vinculados à Instância Gerenciada de SQL do Azure oferecem suporte à autenticação SQL e a autenticação com o ID do Microsoft Entra (o antigo Azure Active Directory). Dois modos de autenticação do Microsoft Entra compatíveis são: identidade gerenciada e passagem. A autenticação por identidade gerenciada pode ser usada para permitir que logons locais consultem servidores vinculados remotos. A autenticação de passagem permite que uma entidade de segurança que possa se autenticar com uma instância local acesse uma instância remota por meio do servidor vinculado. Os pré-requisitos para a autenticação de passagem são que a mesma entidade de segurança seja adicionada como logon no servidor remoto e que ambas as instâncias sejam membros do grupo de confiança SQL.

Observação

As definições existentes de servidores vinculados que foram configurados para o modo de passagem darão suporte à autenticação do Microsoft Entra. O único requisito para isso seria adicionar Instâncias Gerenciadas do SQL ao Grupo de Confiança do Servidor.

Limitações da autenticação do Microsoft Entra

  • 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.
  • A autenticação do Microsoft Entra para servidores vinculados da Instância Gerenciada do SQL para o SQL Server tem suporte apenas para logons locais mapeados. Não há suporte para a propagação do contexto de segurança. Isso significa que a autenticação de identidade gerenciada tem suporte, ao passo que a autenticação de passagem não.

MSOLEDBSQL19 e servidores vinculados

Atualmente, o MSOLEDBSQL19 impede a criação de servidores vinculados sem criptografia e um certificado confiável (um certificado autoassinado é insuficiente). Se forem necessários servidores vinculados, use a versão existente com suporte do MSOLEDBSQL.

Confira também

Próximas etapas