sexta-feira, 5 de dezembro de 2014

Criando um Linked Server do SQL Server para MySQL - Sem usar OPENQUERY;

Pra quem já precisou alguma vez utilizar um Linked Server (Ou até DBLINK), sabe que para criar a "ponte" entre 2 SGBDS é necessário configurar o ODBC.

Como irei demonstrar a conexão entre o SQL Server para o MySQL, antes de começarmos você deverá baixar o driver ODBC do MySQL pelo site http://dev.mysql.com/downloads/connector/odbc/ e instalá-lo no Servidor de Banco de Dados SQL Server.



Na aba Fonte de Dados de Sistema adicione o driver MySQL ODBC ANSI.



Data Source Name: É o nome do Link (Ponte).
Description: Apenas utilizado caso queria preencher com alguma observação.
TCP/IP Server: IP do servidor MySQL.




Pronto ! Agora vamos ao SQL Server.



Defina os parâmetros:

Provedor/Provider: Microsoft OLE DB Provider for ODBC Drivers
Cadeia de caracteres do provedor/ Provider String: MySQL ODBC 5.3 ANSI Driver;SERVER=192.168.0.1;PORT=3306;DATABASE=bancomysql; USER=user;PASSWORD=password;OPTION=3;

OBS:
Server= IP do Servidor MYSQL
DataBase=Banco de dados MYSQL


Ok, executando o Select...

Select * FROM MYSQL_LINK...TABELA_MYSQL
Sintaxe  [Nome do Linked Server][...][Tabela do MYSQL]

Ops... Erro do Provedor MSDASQL.


Em Provedores, adicione nas propriedades do MSDASQL as opções conforme Print:

A opção que lhe permitirá executar o Select no formato [Nome do Linked Server][...][Tabela do MYSQL] é a SOMENTE NÍVEL ZERO.

Bom, agora vamos ao que nos interessa.

Select * FROM MYSQL_LINK...TABELA_MYSQL

















Att,
Bruno Duarte.

5 comentários:

  1. Muito bom, continue compartilhado sua experiência com aqueles que como eu estou começando agora.

    ResponderExcluir
    Respostas
    1. Cláudio, obrigado pelo feedback!
      Agora esta meio difícil de publicar novos posts, porque o local onde trabalho atualmente, é bloqueado o Blogger.

      Mas vou pegar um final de semana para atualizar com novas matérias!
      Tem bastante coisa legal!

      Valeu!

      Excluir
  2. Muito bom Bruno! Era exatamente isso que precisava... Deu certo com minha base mySql local, porém tentei acessar uma outra base que fica em outro servidor da rede(Wamp) e não consigo realizar a conexão! Tem idéia do que pode ser?

    ResponderExcluir
    Respostas
    1. Muito bom!
      Então difícil saber sem ter nenhuma evidência (log ou até print do erro).
      O que está acontecendo?

      Antes de qualquer coisa, tenta habilitar todas aquelas opções em vermelho que demonstrei na figura nas opções de provedores.

      Excluir
  3. OLÁ OBRIGADO PELA FORÇA MAS NO MEU DÁ ESTE ERRO.. pODE ME AJUDAR?
    ==================================

    The linked server has been created but failed a connection test. Do you want to keep the linked server?

    ===================================

    An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------
    Program Location:

    at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)
    at Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(String cmd)
    at Microsoft.SqlServer.Management.Smo.LinkedServer.TestConnection()
    at Microsoft.SqlServer.Management.SqlManagerUI.LinkedServerProperties.DoPreProcessExecution(RunType runType, ExecutionMode& executionResult)

    ===================================

    Cannot initialize the data source object of OLE DB provider "SQLNCLI11" for linked server "MYSQL_LINK".
    OLE DB provider "SQLNCLI11" for linked server "MYSQL_LINK" returned message "Invalid connection string attribute". (.Net SqlClient Data Provider)

    ResponderExcluir