Partilhar via


Criar servidores vinculados (Mecanismo de Banco de Dados do SQL Server)

Aplica-se a:SQL ServerAzure SQL Managed Instance

Este artigo mostra como criar um servidor vinculado e acessar dados de outro SQL Server, uma Instância Gerenciada do SQL do Azure ou outra fonte de dados usando do SQL Server Management Studio (SSMS) ou o Transact-SQL. Os servidores vinculados permitem que o mecanismo de banco de dados do SQL Server e a Instância Gerenciada 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.

Contexto geral

Os servidores vinculados geralmente são configurados 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. Muitos tipos de fontes de dados podem ser configurados como servidores vinculados, incluindo provedores de banco de dados de terceiros e o Azure Cosmos DB.

Depois que um servidor vinculado é criado, as consultas distribuídas podem ser executadas nesse servidor e as consultas podem unir tabelas de mais de uma fonte de dados. Se o servidor vinculado for definido como uma instância do SQL Server ou uma Instância Gerenciada do SQL do Azure, os procedimentos armazenados remotos poderão ser executados.

Os recursos e argumentos necessários do servidor vinculado podem variar significativamente. Os exemplos neste artigo fornecem um exemplo típico, mas todas as opções não são descritas. Para obter mais informações, consulte sp_addlinkedserver (Transact-SQL).

Permissões

Ao usar Transact-SQL instruções, requer ALTERAR QUALQUER SERVIDOR VINCULADO permissão no servidor ou associação ao setupadmin função de servidor fixa. Ao usar o Management Studio, é necessária a permissão CONTROL SERVER ou associação à função fixa de servidor sysadmin.

Criar um servidor vinculado com o SSMS

Crie um servidor vinculado com o SSMS usando o seguinte procedimento:

Abrir a caixa de diálogo do Novo Servidor Vinculado

No SQL Server Management Studio (SSMS):

  1. Abra o Pesquisador de Objetos.
  2. Expanda os Objetos do Servidor .
  3. Clique com o botão direito do rato Servidores Ligados.
  4. Selecione Novo Servidor Vinculado.

Editar a página Geral das propriedades do servidor vinculado

Na página Geral, na caixa Servidor Vinculado, digite o nome da instância de do SQL Server à qual você está vinculando.

Observação

Se a instância do SQL Server for a instância padrão, digite o nome do computador que hospeda a instância do SQL Server. Se o SQL Server for uma instância nomeada, digite o nome do computador e o nome da instância, como Accounting\SQLExpress.

Especifique o tipo de servidor e informações relacionadas, se necessário:

  • SQL Server
    Identifique o servidor vinculado como uma instância do Microsoft SQL Server ou uma Instância Gerenciada do SQL do Azure. Se você usar esse método de definição de um servidor vinculado, o nome especificado em de servidor vinculado deve ser o nome da rede do servidor. Além disso, todas as tabelas recuperadas do servidor são do banco de dados padrão definido para o logon no servidor vinculado.

  • Outras fontes de dados
    Especifique um tipo de servidor OLE DB diferente do SQL Server. Clicar nesta opção ativa as opções abaixo dela.

    • Provedor
      Selecione uma fonte de dados OLE DB na caixa de listagem. O provedor OLE DB está registrado com o PROGID fornecido no registro.

    • Nome do produto
      Digite o nome do produto da fonte de dados OLE DB a ser adicionada como um servidor vinculado.

    • Fonte de dados
      Digite o nome da fonte de dados conforme interpretado pelo provedor OLE DB. Se você estiver se conectando a uma instância do SQL Server, forneça o nome da instância.

    • cadeia de caracteres do provedor
      Digite o identificador programático exclusivo (PROGID) do provedor OLE DB que corresponde à fonte de dados. Para obter exemplos de cadeias de caracteres de provedor válidas, consulte sp_addlinkedserver (Transact-SQL).

    • Localização
      Digite o local do banco de dados conforme interpretado pelo provedor OLE DB.

    • Catálogo
      Digite o nome do catálogo a ser usado ao fazer uma conexão com o provedor OLE DB.

Editar a página Segurança das propriedades do servidor vinculado

Na página Security, especifique o contexto de segurança usado quando a instância original se conecta ao servidor vinculado. Há duas estratégias para configurar aqui que podem ser usadas sozinhas ou combinadas. O primeiro é mapear logins do servidor local para o servidor remoto, e o segundo é como o servidor vinculado deve tratar logins que não são mapeados.

Adicionar mapeamentos de login

Opcionalmente, você pode especificar como logins específicos do servidor local são autenticados usando o servidor vinculado.

Em Mapeamentos de login do servidor local para o logon do servidor remoto, repita o seguinte processo para cada login que você gostaria de mapear:

  1. Selecione Adicionar.

  2. Especifique um login local .

    Especifique o logon local que pode se conectar ao servidor vinculado. O logon local pode ser um logon usando a autenticação do SQL Server ou um logon de autenticação do Windows. Não há suporte para o uso de um grupo do Windows ou de um usuário de banco de dados contido. Use esta lista para restringir a conexão a logins específicos ou para permitir que alguns logins se conectem como um login diferente.

    Observação

    Problemas comuns com servidores vinculados que usam a autenticação do Windows para uma instância remota do SQL Server surgem de problemas com SPNs (nomes de entidade de serviço). Para obter mais informações, consulte o Suporte a SPN (nome da entidade de serviço) nas Conexões de clientes em . Microsoft Kerberos Configuration Manager para SQL Server é uma ferramenta de diagnóstico que ajuda a solucionar problemas de conectividade relacionados ao Kerberos com o SQL Server. Para obter mais informações, consulte Microsoft Kerberos Configuration Manager for SQL Server.

  3. Selecione Representar (opcional).

    Passe o nome de usuário e a senha do login local para o servidor vinculado. Para autenticação do SQL Server, um logon com exatamente o mesmo nome e senha deve existir no servidor remoto. Para logins do Windows, o login deve ser um logon válido no servidor vinculado.

    Para usar a impersonação, a configuração deve atender ao requisito de delegação.

  4. Especifique um de Utilizador Remoto se não estiver a usar a impersonação.

    Use o utilizador remoto para mapear o utilizador definido no login local . O Utilizador Remoto deve ser um login de autenticação do SQL Server no servidor remoto.

  5. Especifique uma palavra-passe remota se não estiver a utilizar a representação.

    • Especifique a senha do usuário remoto.
  6. Selecione Remover para remover um login local existente, se desejar.

Especificar o contexto de segurança padrão para logons não presentes na lista de mapeamento

Em um ambiente de domínio onde os usuários estão se conectando usando seus logins de domínio, selecionar Ser feito usando o contexto de segurança atual do login geralmente é a melhor escolha. Quando os utilizadores se conectam ao SQL Server original usando uma conta de acesso SQL Server, a melhor opção geralmente é selecionar Usando esse contexto de segurançae, em seguida, fornecer as credenciais necessárias para autenticar no servidor ligado.

Selecione uma das seguintes opções:

  • Não ser feito
    Uma ligação não será feita para logins não definidos na lista.

  • Deve ser feito sem usar um contexto de segurança
    Uma conexão será feita sem usar um contexto de segurança para logins não definidos na lista.

  • Seja efetuado usando o contexto de segurança atual do login
    Uma conexão será feita usando o contexto de segurança atual do login para logins não definidos na lista. Se estiver conectado ao servidor local usando a Autenticação do Windows, suas credenciais do Windows serão usadas para se conectar ao servidor remoto. Se conectado ao servidor local usando a Autenticação do SQL Server, o nome de logon e a senha serão usados para se conectar ao servidor remoto. Neste caso, deve existir um login com exatamente o mesmo nome e senha no servidor remoto.

  • Seja feito usando este contexto de segurança
    Uma ligação será feita usando o login e a palavra-passe especificados nas caixas Login remoto e Com palavra-passe para logins não definidos na lista. O logon remoto deve ser um logon de Autenticação do SQL Server no servidor remoto.

    Atenção

    Se um servidor vinculado estiver configurado com a opção Ser feito usando esse contexto de segurança, qualquer usuário na instância poderá acessar o servidor vinculado remoto usando esse contexto. Isso pode ter o potencial não intencional de abuso ou acesso interno mal-intencionado. O de logon remoto autenticado SQL fornecido ao servidor vinculado deve ter as permissões mínimas necessárias no servidor remoto, para garantir o princípio do menor privilégio e reduzir a superfície de ataque.

Editar a página Opções do Servidor nas propriedades do servidor vinculado (opcional)

Para exibir ou especificar opções do servidor, selecione a página Opções do Servidor. Você pode editar qualquer uma das seguintes opções:

  • Colação compatível
    Afeta a execução da Consulta Distribuída em servidores vinculados. Se essa opção for definida como true, o SQL Server assumirá que todos os caracteres no servidor vinculado são compatíveis com o servidor local, no que diz respeito ao conjunto de caracteres e à sequência de agrupamento (ou ordem de classificação). Isso permite que o SQL Server envie comparações em colunas de caracteres para o provedor. Se essa opção não estiver definida, o SQL Server sempre avaliará comparações em colunas de caracteres localmente.

    Essa opção deve ser definida somente se for certo que a fonte de dados correspondente ao servidor vinculado tem o mesmo conjunto de caracteres e ordem de classificação que o servidor local.

  • de acesso a dados
    Habilita e desabilita um servidor vinculado para acesso de consulta distribuída.

  • RPC
    Permite chamadas de procedimento remoto (RPC) a partir do servidor especificado.

  • RPC Out
    Habilita RPC para o servidor especificado.

  • Utilizar colação remota
    Determina se o agrupamento de uma coluna remota ou de um servidor local será usado.

    Se verdadeiro, o agrupamento de colunas remotas é usado para fontes de dados do SQL Server e o agrupamento especificado no nome do agrupamento é usado para fontes de dados que não sejam do SQL Server.

    Se false, as consultas distribuídas sempre usarão o agrupamento padrão do servidor local, enquanto o nome do agrupamento e o agrupamento de colunas remotas serão ignorados. O padrão é false.

  • Nome do agrupamento
    Especifica o nome do agrupamento usado pela origem de dados remota se o uso do agrupamento remoto for verdadeiro e a origem de dados não for uma origem de dados do SQL Server. O nome deve ser um dos agrupamentos suportados pelo SQL Server.

    Use essa opção ao acessar uma fonte de dados OLE DB diferente do SQL Server, mas cujo agrupamento corresponda a um dos agrupamentos do SQL Server.

    O servidor vinculado deve suportar um único agrupamento a ser usado para todas as colunas nesse servidor. Não defina essa opção se o servidor vinculado oferecer suporte a vários agrupamentos em uma única fonte de dados ou se o agrupamento do servidor vinculado não puder ser determinado para corresponder a um dos agrupamentos do SQL Server.

  • Tempo limite de conexão
    Valor de tempo limite em segundos para se conectar a um servidor vinculado.

    Se 0, use o sp_configure padrão tempo limite de login remoto valor da opção.

  • Tempo Limite de Consulta
    Valor de tempo limite em segundos para consultas em um servidor vinculado.

    Se 0, usar o valor predefinido sp_configure da opção de tempo limite de consulta remota.

  • Permitir a promoção de transações distribuídas
    Use esta opção para proteger as ações de um procedimento de servidor para servidor por meio de uma transação do Microsoft Distributed Transaction Coordinator (MS DTC). Quando essa opção é TRUE, chamar um procedimento armazenado remoto inicia uma transação distribuída e alista a transação com o MS DTC. Para obter mais informações, consulte sp_serveroption (Transact-SQL).

Salvar o servidor vinculado

Selecione OK.

Exibir ou editar opções de provedor de servidor vinculado no SSMS

Nem todos os fornecedores têm as mesmas opções disponíveis. Por exemplo, alguns tipos de dados têm índices disponíveis e outros não. Use esta caixa de diálogo para ajudar o SQL Server a entender os recursos do provedor. O SQL Server instala alguns provedores de dados comuns, no entanto, quando o produto que fornece os dados é alterado, o provedor instalado pelo SQL Server pode não oferecer suporte a todos os recursos mais recentes. A melhor fonte de informação sobre as capacidades do produto que fornece os dados é a documentação desse produto.
Para abrir a página de Opções de Provedores do servidor vinculado no SSMS:

  1. Abra o Pesquisador de Objetos.
  2. Expanda Server Objects.
  3. Expanda Servidores Vinculados.
  4. Expanda Provedores.
  5. Clique com o botão direito do mouse em um provedor e selecione Propriedades.

As opções do provedor são definidas da seguinte forma:

  • Parâmetro dinâmico
    Indica que o provedor permite a sintaxe do marcador de parâmetro '?' para consultas parametrizadas. Defina essa opção somente se o provedor suportar a interface ICommandWithParameters e suportar um '?' como o marcador de parâmetro. A definição dessa opção permite que o SQL Server execute consultas parametrizadas no provedor. A capacidade de executar consultas parametrizadas em relação ao provedor pode resultar em melhor desempenho para determinadas consultas.

  • Consultas aninhadas
    Indica que o provedor permite que instruções SELECT sejam aninhadas na cláusula FROM. A definição dessa opção permite que o SQL Server delegue determinadas consultas ao provedor que exigem aninhamento de instruções SELECT na cláusula FROM.

  • Nível zero apenas
    Somente interfaces OLE DB de nível 0 são invocadas em relação ao provedor.

  • Permitir no processo

    O SQL Server permite que o provedor seja instanciado como um servidor em processo. Quando essa opção não está definida, o comportamento padrão é instanciar o provedor fora do processo do SQL Server. Instanciar o provedor fora do processo do SQL Server protege o processo do SQL Server contra erros no provedor. Quando o provedor é instanciado fora do processo do SQL Server, atualizações ou inserções fazendo referência a colunas longas (texto, ntextou imagem) não são permitidas.

  • Atualizações não transacionadas
    O SQL Server permite atualizações, mesmo que ITransactionLocal não esteja disponível. Se essa opção estiver habilitada, as atualizações em relação ao provedor não serão recuperáveis, porque o provedor não oferece suporte a transações.

  • Índice como caminho de acesso
    O SQL Server tenta usar índices do provedor para buscar dados. Por padrão, os índices são usados apenas para metadados e nunca são abertos

  • Não permitir acesso ad hoc
    O SQL Server não permite acesso ad hoc por meio das funções OPENROWSET e OPENDATASOURCE no provedor OLE DB. Quando essa opção não está definida, o SQL Server também não permite acesso ad hoc.

  • Suporta operador 'Like'
    Indica que o provedor oferece suporte a consultas usando a palavra-chave LIKE.

Criar um servidor vinculado com Transact-SQL

Para criar um servidor vinculado usando o Transact-SQL, use as instruções sp_addlinkedserver (Transact-SQL), CREATE LOGIN (Transact-SQL)e sp_addlinkedsrvlogin (Transact-SQL).

Este exemplo cria um servidor vinculado a outra instância do SQL Server usando Transact-SQL:

  1. No Editor de Consultas, digite o seguinte comando Transact-SQL para vincular a uma instância do SQL Server chamada SRVR002\ACCTG:

    USE [master]  
    GO  
    EXEC master.dbo.sp_addlinkedserver   
        @server = N'SRVR002\ACCTG',   
        @srvproduct=N'SQL Server';  
    GO  
    
    
  2. Execute o código a seguir para configurar o servidor vinculado para usar as credenciais de domínio do logon que está usando o servidor vinculado.

    EXEC master.dbo.sp_addlinkedsrvlogin   
        @rmtsrvname = N'SRVR002\ACCTG',   
        @locallogin = NULL ,   
        @useself = N'True';  
    GO  
    

Acompanhamento: Etapas a serem seguidas após a criação de um servidor vinculado

As etapas a seguir ajudam a validar um servidor vinculado.

Testar o servidor vinculado

Considerando uma das duas abordagens a seguir para testar a autenticação de um servidor vinculado em seu contexto de segurança atual.

  • Para testar a capacidade de se conectar a um servidor vinculado no SSMS, navegue até o servidor vinculado no Explorador de Objetos, clique com o botão direito do rato sobre o servidor vinculado e depois selecione Testar Conexão.

  • Para testar a capacidade de se conectar a um servidor vinculado no T-SQL, execute uma instrução SELECT simples, por exemplo, para recuperar informações básicas do catálogo do banco de dados. Este exemplo retorna os nomes dos bancos de dados no servidor vinculado.

    SELECT name FROM [SRVR002\ACCTG].master.sys.databases;  
    GO  
    

Ingressar em tabelas a partir de um servidor vinculado

Use nomes de quatro partes para fazer referência a um objeto em um servidor vinculado. Execute o código a seguir para retornar uma lista de todos os logons no servidor local e seus logons correspondentes no servidor vinculado.

SELECT local.name AS LocalLogins, linked.name AS LinkedLogins  
FROM master.sys.server_principals AS local  
LEFT JOIN [SRVR002\ACCTG].master.sys.server_principals AS linked  
     ON local.name = linked.name;  
GO  

Quando NULL é retornado para o login do servidor vinculado, isso indica que o logon não existe no servidor vinculado. Esses logons não poderão usar o servidor vinculado, a menos que o servidor vinculado esteja configurado para passar um contexto de segurança diferente ou o servidor vinculado aceite conexões anônimas.

Servidores vinculados com a Instância Gerenciada SQL do Azure

Se você estiver usando a Instância Gerenciada SQL do Azure, consulte os seguintes exemplos de sp_addlinkedserver (Transact-SQL):

Próximos passos

Saiba mais sobre como gerenciar servidores vinculados nestes artigos: