Noções sobre SQL Server Servidores Vinculados

Por: Eric tipo blinn | Atualizado em: 2019-06-28 | Comentários (4) | Relacionados: Mais > Servidores Vinculados

Problema

vejo que há uma opção no SQL Server Management Studio (SSMS) para Servidores Vinculados andI quer saber mais sobre o que eles fazem e como eles funcionam.

Solution

Linked Servers are a method by which a SQL Server can talk to another ODBC compliantdatabase, such as another SQL Server instance or an Oracle database, with a directT-SQL query.,

Existem várias configurações importantes para saber ao configurar um servidor ligado.Esta dica cobrirá a criação de um servidor ligado a outra instância de servidor SQL usando a GUI SSMS, juntamente com opções de segurança apropriadas. Ele também irá mostrar como usar o servidor vinculado em uma declaração T-SQL. Há uma biblioteca agreat de tópicos mais avançados disponíveis uma vez que os fundamentos foram dominados.,

criar um servidor ligado ao servidor SQL

em SQL Server Management Studio, no Object Explorer pane, expandir a secção “ServerObjects”, carregar com o botão direito em “servidores ligados” e escolher “servidor ligado…” do menu.

novo servidor ligado – Página geral

que irá trazer uma tela que se parece com a tela abaixo. Escolha o servertype como servidor SQL e digite em nome da outra instância do servidor SQL. Neste exemplo, a conexão será feita a uma instância nomeada de servidor SQL no mesmo computador., Isto é certamente permitido, mas mais comumente a conexão é feita a outra máquina inteiramente. O nome do servidor associado é indicado como o nome do servidor\InstanceName. No exemplo abaixo eu estou conectando ao localserver e o nome da instância é “SECURITY_TEST”.

New Linked Server – Security Page

Next, move da página Geral para a página de segurança usando o menu à esquerda.Esta página permite ao administrador dizer a este servidor SQL como autenticar a outra instância., A metade superior da tela permite que logins individuais tenham acesso para usar o servidor ligado.existem 2 métodos para autenticar os utilizadores. O primeiro é selecionar um login forthem para usar ao usar o servidor ligado. Na imagem abaixo, o utilizador Eric irá logar automaticamente para o servidor secundário como o utilizador Linkedverteston da outra instância. Esta credencial é armazenada dentro do motor do servidor SQL andis encriptada. Uma a segunda linha, o login LinkedServerTest (um Login SQL) que o Impersonatebox está assinalado., Isto irá tentar usar o mesmo nome de usuário e senha no servidor LinkedServer como fez no servidor original. A personificação de um Login do Windows também pode ser feita, mas requer que a delegação adequada seja criada.

agora foco na metade inferior da tela. Existem 4 opções disponíveis. O que for seleccionado aqui aplicar-se-á a qualquer utilizador não listado na secção superior.,

Opção Descrição
Não ser feito Isso vai dar um erro para qualquer usuário tentar utilizar Vinculado Serverthat não está na lista acima. Para selecionar esta opção, deve haver pelo menos um login na metade superior da tela. este é o erro que todos os outros usuários obterão.
Msg 7416, Level 16, State 1, Line 1
acesso ao servidor remoto é negado porque nenhum login-mappingexists.,
ser feito sem usar um contexto de segurança Isto irá enviar uma conexão anônima ao servidor ligado e likelywon’t provide any access to the secondary server.
ser feito usando o contexto de segurança actual do utilizador isto é o mesmo que colocar todos os utilizadores na secção superior com a opção personsonate assinalada.,
ser feito usando este contexto de segurança: esta opção irá exigir que seja introduzido um login e uma senha e funcionará como se cada utilizador fosse adicionado à secção superior e desse o mesmo Utilizador e senha. É o método menos seguro para configurar um servidor vinculado como qualquer um com qualquer acesso ao primeiro servidor SQL será capaz de usar o servidor vinculado utilizando as credenciais salvas.,

Novo Servidor Vinculado – Página Opções de Servidor

Há também configurações na página Opções, mas para consultas simples, estes settingscan ser deixado como os valores padrão, como mostrado abaixo.

as configurações não precisam de ser alteradas na maioria dos casos de utilização e esta tabela willexplain o que as configurações fazem.

Opção Descrição
Agrupamento Compatível Padrão é false., Isto pode ser definido como verdadeiro se o servidor de destino usar o mesmo conjunto que o servidor principal. O changecan pode melhorar o desempenho de algumas consultas, permitindo colunas remotas comparisonson tipo de texto colunas.
acesso aos dados Default é verdadeiro. Quando false todas as executações de pesquisa remota individuais falharão. Esta configuração é independente do RPC Out. Em um scenariowhere apenas chamadas de procedimento remoto precisam ser executadas esta configuração pode ser mudada para falso enquanto o RPC Out permanece verdadeiro.,
RPC/RPC Out isto significa chamada de procedimento remoto e permite-lhe executar procedimentos de paragem no servidor ligado. O RPC activa as chamadas de procedimentos remotos do servidor indicado e o RPC out activa as chamadas de procedimentos remotos para o servidor indicado.
Use Remote Collation/Collation Name Default is False. Quando for falso, a colação do servidor local será usada em todas as consultas remotas. Quando verdadeiro, a coleta do remoteserver será usada em consultas., Se true e o servidor remoto não é um servidor SQLServer, então o servidor local não pode procurar automaticamente o valor de colação apropriado. Neste caso, use a configuração do nome da colação para digitar na colação do servidor de theremote.
tempo-limite de ligação Default é 0. Quando não-zero, este é o número de segundos towait antes de cronometrar ao se conectar a um servidor ligado. Quando 0 então o valor é realmente lido a partir de um padrão do servidor que pode ser encontrado por executar este comando.

exec sp_configure 'remote login timeout (s)'
Query Timeout Default is 0., Quando não-zero, este é o número de segundos towait antes de cronometrar uma consulta em execução contra um servidor vinculado. Quando 0 então o valor é realmente lido a partir de um padrão do servidor que pode ser encontrado executando este comando.

exec sp_configure 'remote query timeout (s)'
distribuidor / Editor / Assinante estas definições só são utilizadas quando o servidor ligado está a ser utilizado para apoiar a replicação.
validação do esquema preguiçoso Default é falso. Quando falso o esquema de uma consulta remota é checado antes de cada execução da consulta., Quaisquer alterações ao esquema remoto são detectadas com antecedência e um plano de consulta adequado pode ser recriado para justificar a alteração. Quando verdadeiro, o esquema só é validado no momento da execução. Se a alteração no esquema remoto torna o plano da consulta inválido, isso irá causar um erro de tempo de execução.
permitir a promoção de Transacções Distribuídas o incumprimento é verdadeiro. Quando estiver activa qualquer pesquisa remota que altere a data, irá invocar o DTC (Coordenador de Transacções Distribuídas)., Este processo protege essas consultas, permitindo que ambos os servidores tenham uma transação compartilhada que completa 100% ou 0% – assim como uma transação regular com uma consulta local. Quando desativado o DTC não é invocado e um remotequery falhado pode falhar e não ser completamente enrolado para trás.

questionando dados sobre um servidor ligado ao servidor SQL

para ler dados de um servidor ligado quaisquer tabelas ou vistas devem ser referenciadas usinga identificador de 4 partes consistindo do nome do servidor ligado, nome da base de dados, esquema e nome do objeto-nessa ordem.,

Por exemplo:

SELECT * FROM .master.sys.databasesSELECT * FROM .WideWorldImporters.Sales.Orders
  • primeiro é fornecido o nome do servidor ligado, que é por exemplo. Neste exemplo, ele deve ser bracketed devido ao seu formato. Nem todos os nomes do servidor linked devem estar entre parênteses.
  • A seguir está o nome da base de dados, master e WideWorldImporters respectivamente.
  • hird is the schema name, sys and Sales respectively.
  • Por último, o nome do objecto está listado. Nestes exemplos, os objectos são bases de dados e encomendas.

esse exemplo é bastante feio devido à natureza do nome do servidor ligado., Felizmente, esta grande dica mostra como tornar os nomes mais fáceis de ler em cenários como este.

uma vez listado em uma cláusula a partir estas tabelas e vistas podem ser tratadas da mesma forma como qualquer outra tabela local. Eles podem ser questionados, alias, Unidos, e as permissões adequadas do andif são definidas, eles podem ser modificados usando insert, update, e deletestatements.

chamando os procedimentos armazenados sobre um servidor ligado

para os fins desta demonstração, este pequeno procedimento foi criado na masterdatabase no servidor ligado alvo.,

USE masterGOCREATE PROCEDURE dbo.SQLTips1 AS SELECT 'I was able to be called'; 

o procedimento é então executado na instância primária usando este comando, que segue o mesmo esquema de identificação de 4 partes que as declarações na secção anterior.

EXEC .master.dbo.SQLTips1

No entanto, em vez do resultado esperado, um erro é levantado.

RPC significa chamada de procedimento remoto. Por padrão, os servidores vinculados são notáveis para fazer chamadas de procedimentos armazenados. Isto é facilmente remediado, permitindo uma configuração única no servidor ligado., Navegue pelas propriedades do servidor vinculado, escolha as opções do servidor e a 4thoption na lista será RPC fora. Basta mudar esse valor para Verdadeiro e clickOK.

a configuração chamada RPC não é o valor que precisa ser alterado. Isto parece confuso, uma vez que a mensagem de erro parece nomeá-lo especificamente, mas esta é na verdade uma configuração legacy que não permite chamadas RPC.

Rerunning the procedure now produces a much better result.,

servidor Vinculado do SQL Server Limitações

Servidores Vinculados podem ser muito úteis, mas existem algumas limitações que estar ciente antes de implementá-las. Os servidores ligados não podem ser usados para invocar as funções ‘tablevalued’ ou ‘scalar’. Além disso, o comando truncado não é permitido ser chamado usando um servidor vinculado.

SQL Server Linked Server Use Cases

the performance of Linked Servers is not always great, especially with largedata sets and lots of joins between local and linked tables. Mas podem ser muito úteis para questionar conjuntos de dados mais pequenos.,

às vezes um requisito ETL para um conjunto de dados menor pode ser atendido usando um servidor linked em vez de uma ferramenta ETL como SSIS. Quando as linhas envolvidas número no milésimo ou menor 10s de milhares um servidor ligado ETL baseado pode ser capaz de completar o tempo inless do que leva para iniciar o motor SSIS.

próximas etapas
  • existe toda uma família de Dicas Avançadas de servidores ligados em MSSQLTips.,com
  • Tornar Vinculado o Servidor de nomes mais fácil de ler

Última actualização: 2019-06-28

Sobre o autor
Eric tipo blinn é o Sr. Arquiteto de Dados para Squire Patton Boggs. Ele também é um autor SQL e líder de grupo local.
View all my tips
Related Resources

  • More SQL Server DBA Tips…

Leave a Comment