Existe uma necessidade muito comum entre usuários que utilizam banco de dados, necessidade esta, decorrente do fato de terem que acessar dados de outro banco de dados, sendo ele Access, Oracle, o próprio SQL Server e etc. O Linked Server, é um recurso do  Microsoft SQL Server, que permite a criação de links (“uma ponte”) para fontes de dados OLE DB.

Com o Liked Server, é possível que o SQL Server execute comandos em base de dados de diferentes servidores. É muito útil para desenvolvedores que utilizam dados de várias fontes, e sua utilização e criação é muito simples.

Algumas de suas vantagens são a capacidade de executar consultas distribuídas, comandos, atualizações, transações em base de dados compostas, a facilidade de acessar um servidor remoto e a possibilidade de transferir comandos para a base de dados OLE DB incluindo o rowset final como parâmetros de tabelas na instrução Transact-SQL.

Abaixo estão exemplos de criação e utilização do Linked Server, entre servidores com SQL Server 2008.

Primeiramente será necessário a criação de uma tabela. Como exemplo criei uma tabela chamada “Produto”, em um banco de dados chamado “TESTE”.

Na tabela Produto existem somente duas colunas: Produto e cod_Prod(PK).

Abaixo temos uma simulação do select da tabela Produto, que exibe a mesma zerada, pois ainda não foi inserida nenhuma informação.

SELECT * FROM [TESTE].[dbo].[Produto]

Results| Messages

Produto

cod_Prod

 

 

Figura 01

Após termos a tabela criada, supomos que para preencher a coluna Produto, é necessário importar os dados de uma tabela de um banco de dados de um outro servidor.

Então surge a necessidade de um Linked Server, e para a criação de um, vou descrever primeiro na forma através de query, e logo após mostrarei a criação através da interface do SSMS.

Clique em New Query para criar uma nova query, em seguida digite o código abaixo:

USE master

GO

/* Criando o Linked Server */

EXEC master.dbo.sp_addlinkedserver

@server = N'TESTE_SVR', -- Nome do Linked
@srvproduct=N'testeLinkedServer',  -- Descrição
@provider=N'SQLNCLI10', -- Provider para SQL Server Native Client 10.0
@datasrc=N'140.100.000.00' – Caminho do banco, ou no caso, IP do Servidor

/* Criando o login de acesso do Linked Server*/

EXEC master.dbo.sp_addlinkedsrvlogin

@rmtsrvname=N'TESTE_SVR', -- Nome criado do Linked
@useself=N'False', -- Se outros usuários usarão
@locallogin=N'ejulmou', -- Usuário do banco local que terá acesso
@rmtuser=N'moview', -- login do banco do outro servidor
@rmtpassword='########' –- senha do banco do outro servidor

/* Por razões de segurança a senha do login remoto do servidor vinculado é alterada com ######## */

O Linked Server acaba de ser criado. Para verificar se a conexão foi estabelecida clique com o botão direito sobre o Linked Server “TESTE_SVR”, escolha a opção “Teste Connection”, que deverá apresentar a seguinte mensagem:

 “The teste connection to the linked server succeeded”

 Figura 02

Para criar um Linked Server utilizando a interface, siga os seguintes passos:

 1º Clique em “Server Objects” e com o botão direito clique em “Linked Servers”, aparecerá a opção “New Linked Server...” clique nela. Aparecerá uma tela com as opções “General”, “Security” e ”Server Options” do lado esquerdo.

Então na opção “General”, preencha alguns dos campos que serão exibidos, “Linked Server” com o nome do seu linked, “Provider” com o provider de conexão, “Product name” com a descrição do linked e “Data Source” com o caminho do banco de dados ou, como no caso, o ip do servidor onde se encontra o banco de dados, o restante não é necessário.

 2º Na opção “Security”, será adicionado o usuário do banco de dados local que terá acesso com o Liked Server.

Para adicionar um novo usuário, clique no botão “Add”, irão aparecer os campos: “Local Login”, “Impersonate”, “Remote User” e “Remote Password”, que deverãos ser preenchidos da seguinte forma: “Local Login” com o usuário do banco local, “Impersonate” somente deverá ser preenchido  se não for necessário identificação para acesso ao outro servidor ou banco de dados, “Remote User” com o usuário do servidor ou banco de dados e “Remote Password” com a senha do servidor ou banco de dados, essas duas últimas não devem ser preenchidas caso a opção “Impersonate” seja ativada.
Logo abaixo desses campos, terão quatro opções de conexão, escolha sempre a segunda opção.

 

 3º A opção “Server Options” deverá ser mantida da forma default do SQL Server.

 4º Após essas configurações, clique em “OK” e pronto, o Linked Server está criado.

5º Para verificar se a conexão foi estabelecida clique com o botão direito sobre o Linked Server “TESTE_SVR”, escolha a opção “Teste Connection”, que deverá apresentar a mensagem da Figura02.

Voltamos para o problema que trouxe a necessidade de um Linked Server. Com a criação do Linked Server, podemos agora preencher a coluna “Produto” da tabela “Produto” com as infomações do outro servidor.
Faremos isso utilizando a seguinte sintaxe:

USE <DATA BASE>
GO

 INSERT INTO <DATA BASE><TABLE>(<COLUMN>)

SELECT <COLUMN> FROM <LINKED SERVER><DATA BASE><TABLE> 

Abaixo vemos uma simulação do INSERT na prática, onde as informações do SELECT são de outro servidor através do Linked Server.

USE TESTE
GO

 INSERT INTO TESTE.dbo.Produto(Produto)

SELECT nodeLabel FROM TESTE_SVR.moView.dbo.RLDEP

 Messages

 (106 row(s) affected)

O resultado do INSERT foi o seguinte (de acordo com os dados já existentes na tabela RLDEP do banco moView):

USE TESTE
GO

SELECT [Produto], [cod_Prod]
  FROM [TESTE].[dbo].[Produto]

 Results

Produto

cod_Prod

BSCAFLA

1

BSCAJUA

2

BSCAJUB

3

BSCAJUC

4

BSCARIA

5

...

...

BSCVVJC

106


Podemos ver a tabela RLDEP, onde fiz o select, que contêm exatamente essas informações:

USE moView
GO

SELECT nodeLabel FROM moView.dbo.RLDEP

nodeLabel

BSCAFLA

BSCAJUA

BSCAJUB

BSCAJUC

BSCARIA

...

BSCVVJC

 

Esse foi um exemplo de utilização do Liked Server entre servidores com o SQL Server 2008, espero ter ajudado e obrigada pela oportunidade!