Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
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.
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.
Na área de 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 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.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).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 aninhadasSELECT
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 (text
ntext
ouimage
) 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 abertosNã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
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
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)