Fazendo Linked Server entre SQL Server e bancos ODBC
Leonel Fraga de Oliveira 18/04/2014 23:30

As vezes precisamos realizar consultas ou realizar migrações entre bases cujos dados estejam em mais de uma base de dados em diferentes servidores, e inclusive estes servidores podem ser de tecnologias diferentes, por exemplo, SQL Server e Firebird.

O SQL Server da Microsoft possui um recurso chamado Linked Server, onde podemos criar uma ligação entre um servidor SQL Server e uma outra base de dados localizada em outro servidor, inclusive não-SQL Server.

Vou demostrar rapidamente como ligar uma base SQL Server e uma base Firebird, utilizando uma conexão ODBC. Por conta de utilizar um driver ODBC, podemos utilizar outra base de dados no lugar do Firebird, como o MySQL, por exemplo. Vamos ao procedimento.

1. Crie uma conexão ODBC apontando para o banco de dados que queremos ligar ao nosso SQL Server. Este procedimento deve ser feito na máquina que hospeda o SQL Server que vamos utilizar:

1A. No Painel de Controle do Windows, vá em Ferramentas Administrativas, Fontes de Dados (ODBC), e selecione a aba "Fonte de Dados de Sistema" e clique em Adicionar

Administrador de Fonte de Dados ODBC

1B. Na tela de Adicionar nova fonte de dados, selecione o driver do Firebird e dê OK. Após isso será aberta a tela onde iremos informar os dados da conexão:

Tela de configuração de conexão ODBC do driver Firebird

Em Data Source Name, crie um nome para a conexão e lembre-se dele, pois iremos utilizá-lo quando formos criar o Linked Server no SQL Server. Preencha os demais campos com os dados da base de dados Firebird a ser utilizada.

2. No SQL Server Management Studio, dentro do Explorador de Objetos conecte-se ao servidor onde você criou a conexão ODBC, vá até a pasta Objetos de Servidor, clique com o botão direito em Servidores Vinculados.

Árvore do Explorador de Objetos do SQL Server Management Studio, com a opção de criação de novo Linked Server

3. Na janela Novo Servidor Vinculado, no campo "Servidor Vinculado" coloque um nome que identifique o seu servidor. Pode ser qualquer nome, mas lembre-se dele que vamos utilizar posteriormente. Em Tipo de Servidor, marque o radiobutton Outra Fonte de Dados. No combo Provedor, selecione "Microsoft OLE DB Provider for ODBC Drivers". Preencha os campos Nome do Produto e Fonte de Dados com o nome do DSN criado no passo 1 (o nome da conexão ODBC, DSN).

Tela de criação de Linked Server, com as opções para utilizar um driver ODBC

Por enquanto não mexeremos nas opções Segurança e Opções, pois os dados da conexão ODBC estão no DSN criado. Caso o Linked Server seja feito com outro servidor SQL Server, não utilizamos o driver ODBC e sim as opções nativas do próprio SQL Server, neste caso aí sim, deveremos mexer nas opções de segurança.

Clique em OK, e se uma mensagem de erro aparecer clique para continuar (ou em OK). Se deu certo, ao se conectar novamente ao servidor SQL Server (ou até mesmo após clicar em OK), seremos capazes de enxergar o Linked Server na árvore do Explorador de Objetos conforme imagem abaixo:

Árvore do SQL Server Management Studio, com o linked server criado e funcionando

Como podemos ver, o ramo "TESTE_FIREBIRD" é o nome do nosso Linked Server, enquanto "TESTE_LINKEDSERVER" é o nome do DSN ODBC que criamos primeiro. Note que não podemos expandir acima do nível de tabelas, mas já podemos fazer uma consulta na base de dados vinculada. Para tanto, utilize o seguinte comando:

select * from openquery(NOME_DO_LINKED_SERVER,'minha consulta SQL na base vinculada')

O comando openquery faz a consulta no driver ODBC, e como primeiro parâmetro informamos o nome do linked server sem aspas, enquanto no segundo parâmetro escrevemos a consulta SQL utilizando a sintaxe do servidor vinculado.

Pode ser que aconteça erro de tipos de dados incompatíveis, e para solucioná-los utilize um comando de cast na consulta dentro do openquery. O comando de select externo pode ter apenas alguns campos da consulta interna, portanto certifique-se de que todos os campos declarados na consulta externa estejam presentes na consulta interna. Se tudo deu certo, veremos o seguinte:

Consulta SQL através de um Linked Server via driver ODBC

Com isso, podemos fazer join entre as bases de dados, importar e exportar "na raça" com ETL, insert de select e tudo, depende do que você quiser fazer com os dados!

O exemplo acima foi utilizando o Firebird, mas nada impede que seja utilizada outra base de dados com driver ODBC disponível. Se você quiser fazer linked server com outro servidor SQL Server, utilize o método nativo que um leque com mais opções será aberto, e inclusive os detalhes da conexão são outros.

Leonel Fraga de Oliveira Leonel Fraga de Oliveira é formado em Processamento de Dados na Faculdade de Tecnologia de São Paulo (FATEC-SP - 2002) e anteriormente em Técnico em Eletrônica, pela ETE Professor Aprígio Gonzaga (lá em 1999).
Atualmente trabalha como Analista de Sistemas na Prefeitura Municipal de São Caetano do Sul - SP
Tem como hobbies DJing (também trabalha como DJ freelancer) e ciclismo, além da manutenção dos sites NeoMatrix Light e NeoMatrix Tech.
Gosta de música eletrônica, tecnologia, cinema (super fã de Jornada nas Estrelas), gastronomia e outras coisas mais.


Compartilhe nas redes sociais

   

Deixe seu comentário

comments powered by Disqus