Partilhar via


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

Este tópico mostra como criar um servidor vinculado e acessar dados de outro SQL Server usando o SQL Server Management Studio ou o Transact-SQL. Criar um servidor vinculado permite trabalhar com dados de várias origens. O servidor vinculado não precisa ser outra instância do SQL Server, mas esse é um cenário comum.

Contexto

Um servidor vinculado permite acesso a consultas heterogêneas distribuídas em fontes de dados OLE 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, os procedimentos armazenados remotos poderão ser executados.

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

Segurança

Permissões

Ao usar instruções Transact-SQL, requer ALTER ANY LINKED SERVER permissão no servidor ou associação na função de servidor fixa setupadmin . O uso do Management Studio requer CONTROL SERVER permissão ou associação na função de servidor fixa sysadmin.

Como criar um servidor vinculado

Você pode usar qualquer um dos seguintes:

Como usar o SQL Server Management Studio.

Para criar um servidor vinculado para outra instância do SQL Server usando o SQL Server Management Studio
  1. No SQL Server Management Studio, abra o Pesquisador de Objetos, expanda Objetos do Servidor, clique com o botão direito do mouse em Servidores Vinculados e clique em Novo Servidor Vinculado.

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

    SQL Server
    Identifique o servidor vinculado como uma instância do MicrosoftSQL Server. Se você usar esse método para definir um servidor vinculado do SQL Server, o nome especificado no servidor vinculado deverá ser o nome de 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.

    Outra fonte de dados
    Especifique um tipo de servidor OLE DB diferente do SQL Server. Clicar nessa opção ativa as opções abaixo dela.

    Provedor
    Selecione uma fonte de dados OLE DB na caixa de listagem. O provedor OLE DB é registrado com o PROGID especificado 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 PROGID (identificador programático) exclusivo 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).

    Localidade
    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.

    Para testar a capacidade de se conectar a um servidor vinculado, no Pesquisador de Objetos, clique com o botão direito do mouse no servidor vinculado e clique em Testar Conexão.

    Observação

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

  3. Na área de tipo de servidor , selecione SQL Server para indicar que o servidor vinculado é outra instância do SQL Server.

  4. Na página Segurança , especifique o contexto de segurança que será usado quando o SQL Server original se conectar ao servidor vinculado. Em um ambiente de domínio em que os usuários estão se conectando usando seus logons de domínio, selecionar Ser feito usando o contexto de segurança atual do logon geralmente é a melhor opção. Quando os usuários se conectam ao SQL Server original usando um logon do SQL Server , a melhor opção é selecionar usando esse contexto de segurança e, em seguida, fornecer as credenciais necessárias para autenticar no servidor vinculado.

    Logon 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 da Autenticação do Windows. Use essa lista para restringir a conexão a logons específicos ou para permitir que alguns logons se conectem como um logon diferente.

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

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

    Usuário Remoto
    Use o usuário remoto para mapear usuários não definidos no logon local. O Usuário Remoto deve ter um login de autenticação do SQL Server no servidor remoto.

    Senha remota
    Especifique a senha do Usuário Remoto.

    Adicionar
    Adicione um novo logon local.

    Retirar
    Remova um logon local existente.

    Não deve ser feito
    Especifique que uma conexão não será feita para logons não definidos na lista.

    Ser feito sem usar um contexto de segurança
    Especifique que uma conexão será feita sem usar um contexto de segurança para logons não definidos na lista.

    Ser feito usando o contexto de segurança atual do login
    Especifique que 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 estiver 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. Nesse caso, um logon com o mesmo nome e senha deve existir no servidor remoto.

    Seja feito usando este contexto de segurança
    Especifique que uma conexão será feita usando o login e a senha especificados nas caixas Logon remoto e Com senha para logins não definidos na lista. O logon remoto deve ser um logon de Autenticação do SQL Server no servidor remoto.

  5. Opcionalmente, para exibir ou especificar opções de servidor, clique na página Opções do Servidor .

    Compatível com colação
    Afeta a execução da Consulta Distribuída em servidores vinculados. Se essa opção for definida como true, o SQL Server pressupõe que todos os caracteres no servidor vinculado sejam compatíveis com o servidor local, em relação ao conjunto de caracteres e à sequência de ordenação (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 caractere localmente.

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

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

    RPC
    Habilita RPC a partir do servidor especificado.

    RPC Out
    Habilita o RPC para o servidor especificado.

    Usar classificação remota
    Determina se a ordenação de uma coluna remota ou de um servidor local será usada.

    Se for true, a ordenação de colunas remotas será usada para fontes de dados do SQL Server e a ordenação especificada no nome da ordenação será usada para fontes de dados que não são do SQL Server.

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

    Nome da ordenação
    Especifica o nome da ordenação usada pela fonte de dados remota se o uso de ordenação remota estiver ativado e a fonte de dados não for uma fonte de dados do SQL Server. O nome deve ser uma das colações com suporte do SQL Server.

    Use essa opção ao acessar uma fonte de dados OLE DB diferente do SQL Server, mas cuja ordenação corresponde a uma das ordenações do SQL Server.

    O servidor vinculado deve dar suporte a um único regramento a ser usado para todas as colunas no referido servidor. Não defina essa opção se o servidor vinculado der suporte a várias ordenações em uma única fonte de dados ou se a ordenação do servidor vinculado não puder ser determinada para corresponder a uma das ordenações do SQL Server.

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

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

    Tempo limite de consulta
    Valor de tempo limite em segundos para consultas em um servidor vinculado.

    Se 0, use o valor padrão da opção tempo limite de consulta remota no sp_configure.

    Habilitar a promoção de transações distribuídas
    Use essa opção para proteger as ações de um procedimento servidor a servidor por meio de uma transação MS DTC (Coordenador de Transações Distribuídas da Microsoft). Quando essa opção for TRUE, chamar um procedimento armazenado remoto iniciará uma transação distribuída e registrará a transação com MS DTC. Para obter mais informações, consulte sp_serveroption (Transact-SQL).

  6. Clique em OK.

Para exibir as opções do provedor
  • Para exibir as opções que o provedor disponibiliza, clique na página Opções de Provedores .

    Todos os provedores não têm as mesmas opções disponíveis. Por exemplo, alguns tipos de dados têm índices disponíveis e outros podem não. Use essa 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 dar suporte a todos os recursos mais recentes. A melhor fonte de informações sobre os recursos do produto que fornece os dados é a documentação desse produto.

    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 der suporte à interface ICommandWithParameters e oferecer suporte a um '?' como o marcador de parâmetro. Definir essa opção permite que o SQL Server execute consultas parametrizadas no provedor. A capacidade de executar consultas parametrizadas no provedor pode resultar em um melhor desempenho para determinadas consultas.

    Consultas aninhadas
    Indica que o provedor permite instruções SQL aninhadas SELECT na cláusula FROM. Definir essa opção permite que o SQL Server delegar determinadas consultas ao provedor que exigem aninhamento de instruções SELECT na cláusula FROM.

    Somente nível zero
    Somente as interfaces OLE DB de nível 0 são invocadas no provedor.

    Permitir inprocess
    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. A instanciação do 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, as atualizações ou inserções que fazem referência a colunas longas (textntextou image) não são permitidas.

    Atualizações não transacionadas
    O SQL Server permite atualizações, mesmo se ITransactionLocal não estiver disponível. Se essa opção estiver habilitada, as atualizações no provedor não serão recuperáveis, pois o provedor não dá suporte a transações.

    Indexar 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.

    Dá suporte ao operador 'Like'
    Indica que o provedor dá suporte a consultas usando a palavra-chave LIKE.

Usando 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).

Para criar um servidor vinculado para outra instância do SQL Server usando Transact-SQL
  1. No Editor de Consultas, insira 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 tomadas depois de criar um servidor vinculado

Para testar o servidor vinculado

  • Execute o código a seguir para testar a conexão com o servidor vinculado. Este exemplo retorna os nomes dos bancos de dados no servidor vinculado.

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

Escrevendo uma consulta que une tabelas 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 logon do servidor vinculado, ele 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.

Consulte Também

Servidores vinculados (Mecanismo de Banco de Dados)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)