SQL Server Object - MySQL Linked Server


Pré-requisitos
Instalação do MySQL Connector/ODBC


Linked Server

O objecto Linked Server permite vincular o SQL Server a um servidor de dados externo. Este objecto do SQL Server permite fazer queries distribuídas e heterogéneas sobre fontes de dados OLE DB. Depois do Linked Server ser criado pela store procedure de sistema sp_addlinkedserver, as queries distribuídas podem ser executadas nesse servidor.

/****** Object: LinkedServer [MYSQL-DEV-ENV] ******/
EXEC master.dbo.sp_addlinkedserver @server = N'MYSQL-DEV-ENV', @srvproduct=N'MySQL', @provider=N'MSDASQL', @provstr=N'Driver={MySQL ODBC 5.3 ANSI Driver};database=;option=134217728;server=;port=3306;uid='

/* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'MYSQL-DEV-ENV',@useself=N'False',@locallogin=NULL,@rmtuser=N'',@rmtpassword='########'

GO


Consulta com a função OpenQuery

SELECT * FROM OPENQUERY(MYSQL-DEV-ENV,'SELECT * FROM test_mysql.Profile WHERE Name = '''profilename''' LIMIT 0, 1000')
GO

No caso da função OpenQuery, o motor de SQL não vai tentar classificar a query nem verificar o que vai fazer, a query é pura e simplesmente enviada para o servidor de MySQL. O Parsing e a geração do plano de execução, bem como a aplicação de filtros, são executados no servidor remoto.

De uma forma geral, o OpenQuery é mais rápido que o Linked Server porque o motor de SQL não vai partir a query antes de a enviar para o MySQL, mas é mais indicado para invocações feitas com menos frequência.

Mais informação sobre acesso a fontes de dados remotas aqui.


Invocação de store procedure MySQL
exec ('CALL test_mysql.usp_Conference()') at [MYSQL-DEV-ENV]
GO





Referências: Create a linked server to MySQL from SQL ServerAccess MySQL data from SQL Server via a Linked Server

Licença CC BY-SA 4.0 Silvia Pinhão Lopes, 9.6.18
Print Friendly and PDF

Sem comentários:

Com tecnologia do Blogger.