Surgiu uma demanda onde era necessário migrar algumas tabelas de alguns bancos em MySQL para dentro do SQL Server e tínhamos disponível apenas o backup (a.k.a. dump) dos bancos de origem.
Realizar o tratamento do arquivo (manualmente) para que fosse possível criar os bancos e inserir os dados estava fora de cogitação. Como temos uma VM com o Linux (Ubuntu) e com o MySQL instalado, optei por realizar a criação de um Linked Server entre os dois servidores.
Os passos seguidos para deixar o Linked Server funcionando foram:
- Mover o dump para o servidor (no meu caso, mapeamos no servidor uma pasta da rede) e restaurar a base:
-
1234$ mkdir /media/temporario$ sudo mount -t cifs /media/temporario //server/share -o username=LoganPassword for Logan@//server/share:$ mysql -u user -ppassword < dump.sql
- Garantir que o servidor MySQL está permitindo acesso remoto:
123456789$ cd /etc/mysql$ sudo vim my.cnf-- Procure pela linha:bind-address 127.0.0.1-- E a comente, ficando:#bind-address 127.0.0.1-- Salve o arquivo e reinicie o serviço do MySQL$ sudo /etc/init.d/mysql stop$ sudo /etc/init.d/mysql start - Instalar no servidor com SQL Server o Connector/ODBC do MySQL, encontrado em: http://dev.mysql.com/downloads/connector/odbc/. Observe a versão correta para o Sistema Operacional e faça a instalação.
- Após a instalação, entre no ODBC Data Source Administrator e entre na aba Drivers. Deverá aparecer o driver do MySQL instalado, conforme imagem:
- Entre na aba System DSN. Aqui, será configurado o driver ODBC que ficará disponível para todos os usuários do computador. Caso queira que o driver fique disponível apenas para o usuário que está logado, vá na aba User DSN. Clique em Add.
- Na janela que aparecerá, clique no driver MySQL ODBC 5.3 ANSI (ou Unicode) Driver – A versão 5.3 é a mais recente disponível até o dia 16/11/2015.
- Finish
- Aparecerá uma janela para conexão com o servidor MySQL. Insira as informações e clique em OK.
Obs: Existem diversas opções que podem ser configuradas, além da base. Para detalhes, clique no botão “Details >>”. Como eu vou me conectar em diversas bases que foram restauradas e eu não quero criar um conector para cada base, deixarei o campo “Database” vazio.
- Agora, basta criar o Linked Server: Em Object Explorer, expanda a treeview Server Objects > Linked Server. Clique com o botão direito e selecione a opção New Linked Server…
- Na janela que abrir, selecione a opção Microsoft OLE DB Provider for ODBC Drivers e preencha os valores que criamos anteriormente:
- Na aba Security, marque umas das duas últimas opções (sendo que na última, você deve especificar um usuário válido, caso queira utilizar um usuário diferente do utilizado na criação do driver para realizar as consultas)
Criado o Linked Server, para realizar a consulta faça:
1 |
SELECT * FROM OPENQUERY(MYSQLSERVER,'SELECT * FROM database.tabela') |
Lembrando que a especificação da base se torna obrigatória, uma vez que não foi configurada uma no momento da criação do driver.
E por hoje era isso… Até uma próxima, provavelmente com a finalização da série sobre tratamento de exceções! 🙂
[]’s!