Criar servidores vinculados (Mecanismo de Banco de Dados do SQL Server)
Este tópico mostra como criar um servidor vinculado e acessar dados de outra SQL Server usando SQL Server Management Studio ou 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.
Tela de fundo
Um servidor vinculado permite acesso a consultas distribuídas e heterogêneas 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 argumentos necessários do servidor vinculado podem variar significativamente. Os exemplos neste tópico fornecem um exemplo típico, mas nem todas as opções 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 . Ao usar o 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 itens a seguir:
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
Em SQL Server Management Studio, abra Pesquisador de Objetos, expanda Objetos do Servidor, clique com o botão direito do mouse em Servidores Vinculados e clique em Novo Servidor Vinculado.
Na página Geral , na caixa Servidor vinculado , digite o nome da instância do SQL Server à qual você está se vinculando.
SQL Server
Identifique o servidor vinculado como uma instância do MicrosoftSQL Server. Se você usar esse método de definição de um servidor vinculado SQL Server, o nome especificado em Servidor vinculado deverá ser o nome de rede do servidor. Da mesma forma, todas as tabelas recuperadas do servidor provêm do banco de dados padrão definido para logon no servidor vinculado.Outra fonte de dados
Especifique um tipo de servidor OLE DB diferente de 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 fornecido no registro.Nome do produto
Digite o nome do produto da fonte de dados OLE DB para adicionar como servidor vinculado.Fonte de dados
Digite o nome da fonte de dados conforme interpretada pelo provedor OLE DB. Se 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).Localidade
Digite o nome do local do banco de dados conforme interpretado pelo provedor OLE DB.Catálogo
Digite o nome do catálogo para usar ao fazer conexão com o provedor OLE DB.Para testar a capacidade de conexão com um servidor vinculado, no Pesquisador de Objetos, clique com o botão direito do mouse no servidor vinculado e, em seguida, clique em Testar Conexão.
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.
Na área Tipo de servidor, selecione SQL Server para indicar que o servidor vinculado é outra instância do SQL Server.
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 se conectam usando seus logons de domínio, a melhor opção é geralmente selecionar Serão feitas usando o contexto de segurança atual do logon. Quando os usuários se conectam ao SQL Server original com um logon do SQL Server , a melhor opção geralmente é selecionar Usando este contexto de segurançae fornecer as credenciais necessárias para autenticação no servidor vinculado.
Logon local
Especifique o logon local que pode se conectar ao servidor vinculado. O logon local pode ser um logon que usa a Autenticação do SQL Server ou um logon de Autenticação do Windows. Use essa lista para restringir a conexão a logons específicos ou permitir alguns logons para serem conectados como um logon diferente.Impersonate
Passe o nome de usuário e 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 de Windows, o logon deve ser um logon válido no servidor vinculado.Para usar representação, a configuração deve satisfazer o requisito para delegação.
Usuário Remoto
Use o usuário remoto para mapear usuários não definidos em Logon local. O Usuário Remoto deve ser um logon de Autenticação do SQL Server no servidor remoto.Senha Remota
Especifique a senha do Usuário Remoto.Adicionar
Adicione um novo logon local.Remover
Remova um logon local existente.Não serão feitas
Especifique que uma conexão não será feita para logons não definidos na lista.Serão feitas 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ão feitas usando um contexto de segurança atual do logon
Especifique que uma conexão será feita usando o contexto de segurança atual do logon para logons não definidos na lista. Se conectado ao servidor local que usa Autenticação do Windows, suas credenciais do Windows serão usadas para conectar-se ao servidor remoto. Se conectado ao servidor local que usa a Autenticação SQL Server , nome de logon e senha serão usados para conectar-se ao servidor remoto. Nesse caso um logon com exatamente o mesmo nome e senha deve existir no servidor remoto.Serão feitas usando este contexto de segurança
Especifique que uma conexão será feita usando o logon e senha especificados nas caixas Logon Remoto e Com senha para logons não definidos na lista. O usuário remoto deve ser um logon de Autenticação do SQL Server no servidor remoto.Opcionalmente, para exibir ou especificar opções de servidor, clique na página Opções do Servidor .
Compatível com Ordenação
Afeta a execução da Consulta Distribuída nos servidores vinculados. Se essa opção estiver definida como true, o SQL Server presumirá 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 da ordenação (ou ordem de classificação). Isso permite que o SQL Server envie comparações sobre colunas de caracteres ao provedor. Se essa opção não estiver definida, o SQL Server sempre avaliará comparações sobre colunas de caracteres localmente.Essa opção deve ser definida somente se você tiver certeza de que a fonte de dados correspondente ao servidor vinculado tem o mesmo conjunto de caracteres e ordem de classificação do servidor local.
Acesso a dados
Habilita e desabilita um servidor vinculado para o acesso às consultas distribuídas.RPC
Habilita o RPC a partir do servidor especificado.RPC Out
Habilita o RPC para o servidor especificado.Usar Ordenação Remota
Determina se a ordenação de uma coluna remota ou de um servidor local será usada.Se true, a ordenação de colunas remotas será usada para as fontes de dados do SQL Server e a ordenação especificada no nome da ordenação será usada para fontes de dados não SQL Server.
Se false, as consultas distribuídas sempre usarão a ordenação padrão do servidor local, enquanto que 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 usado pela fonte de dados remota se o uso da ordenação remota for true e a fonte de dados não for uma fonte de dados do SQL Server. O nome deve ser uma das ordenações que têm suporte do SQL Server.Use essa opção ao acessar uma origem de dados OLE DB diferente do SQL Server, mas cuja ordenação coincide com uma das ordenações do SQL Server.
O servidor vinculado deve fornecer suporte a uma única ordenação a ser usada para todas as colunas naquele servidor. Não defina essa opção se o servidor vinculado fornecer suporte a várias ordenações dentro de 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
O valor do tempo limite em segundos para conexão a um servidor vinculado.Se 0, use o valor sp_configure padrão da opção remote login timeout .
Tempo-limite da consulta
O valor do tempo limite em segundos para as consultas em um servidor vinculado.Se 0, use o valor sp_configure padrão da opção remote query timeout .
Habilitar Promoção de Transações Distribuídas
Use esta opção para proteger as ações de um procedimento servidor a servidor por meio de uma transação do MS DTC (Coordenador de Transações Distribuídas da Microsoft ). Quando esta opção for TRUE, chamar um procedimento remoto armazenado irá iniciar uma transação distribuída e inscrever a transação com o MS DTC. Para obter mais informações, consulte sp_serveroption (Transact-SQL).Clique em OK.
Para exibir as opções de provedor
Para exibir as opções que o provedor torna disponível, 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 talvez não tenham. Use essa caixa de diálogo para ajudar o SQL Server a entender os recursos do provedor. SQL Server instala alguns provedores de dados comuns; porém, quando o produto que fornece os dados muda, o provedor instalado pelo SQL Server pode não oferecer suporte a todos os recursos mais novos. 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 de marcador de parâmetro '?' para consultas parametrizadas. Defina essa opção apenas se o provedor der suporte à interface ICommandWithParameters e a um '?' como o marcador de parâmetro. Definir essa opção permite que o SQL Server execute consultas com parâmetros em relação ao provedor. A capacidade de executar consultas parametrizadas em relação ao provedor pode resultar em um melhor desempenho para determinadas consultas.Consultas aninhadas
Indica que o provedor permite instruções aninhadasSELECT
na cláusula FROM. Definir essa opção permite ao SQL Server delegar determinadas consultas ao provedor que requer instruções aninhadas SELECT na cláusula FROM.Somente nível zero
Somente as interfaces OLE DB de nível 0 são invocadas em relação ao provedor.Permitir inprocess
SQL Server permite que seja criada uma instância do servidor como um servidor em processo. Quando essa opção não é definida, o comportamento padrão é criar uma instância no provedor fora do processo do SQL Server . Criando uma instância no provedor fora do processo do SQL Server protege o processo do SQL Server de erros no provedor. Quando o provedor é instanciado fora do processo de SQL Server, não são permitidas atualizações ou inserções referenciando colunas longas (text
,ntext
ouimage
) .Atualizações não transacionadas
SQL Server permite atualizações, até mesmo se a ITransactionLocal não estiver disponível. Se essa opção estiver habilitada, atualizações em relação ao provedor não serão recuperáveis porque o provedor não possui suporte para transações.Índice como caminho de acesso
SQL Server tenta usar índices do provedor para buscar dados. Por padrão, os índices são usados apenas para metadados e não são abertosProibir acesso ad hoc
SQL Server não permite acesso ad hoc pelas funções OPENROWSET e OPENDATASOURCE ao provedor OLE DB. Quando essa opção não é definida, o SQL Server também não permite acesso ad hoc.Oferece suporte ao operador 'Like'
Indica que o provedor oferece suporte a consultas que usam a palavra-chave LIKE.
Usando o 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
No Editor de Consultas, digite o comando Transact-SQL a seguir para vincular a uma instância do SQL Server denominada
SRVR002\ACCTG
:USE [master] GO EXEC master.dbo.sp_addlinkedserver @server = N'SRVR002\ACCTG', @srvproduct=N'SQL Server' ; GO
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: tarefas a serem executadas após a criação de 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
Gravando uma consulta que une tabelas de um servidor vinculado
Use nomes de quatro partes para referir-se 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 seja 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)