Connettere da SQL un database MySql

venerdì 21 luglio 2006 - 19.04

biggiu Profilo | Junior Member

Salve, sono nuovo e cerco aiuto.

Il problema e' il seguente :

debbo realizzare un gestionale in ambiente windows sviluppato con .NET e DataBase Microsoft SQL.

Una parte dei dati debbo rilevarli dal server Linux e dal DataBase MySql.

Sono riuscito a realizzare una DNS per la connessione che funziona correttamente.

Ho provato a collegarmi al DataBase MySql da Access e la cosa ha funzionato.

Ora vorrei sapere se :

e' possibile eseguire un collegamento al DataBase MySql attraverso SQL Server Enterprise Manager.

In generale come devo precedere per riuscire a consultare dalla mia procedura il DataBase MySql.

Grazie per la collaborazione.

BigGiu

lbenaglia Profilo | Guru

>e' possibile eseguire un collegamento al DataBase MySql attraverso
>SQL Server Enterprise Manager.
>
>In generale come devo precedere per riuscire a consultare dalla
>mia procedura il DataBase MySql.

Ciao BigGiu,

innanzitutto benvenuto su dotNetHell
Ora veniamo al problema. Se sei riuscito a definire un DSN allora hai già fatto il 90% del lavoro.
In SQL Server puoi creare un Linked Server che utilizza il DNS per connettersi a MySQL.
Questa operazione può essere eseguita direttamente da Enterprise Manager oppure eseguendo da Query Analyzer la stored procedure di sistema sp_addlinkedserver.
Leggi sui Books Online il seguente paragrafo:

"OLE DB Provider for ODBC"
http://msdn.microsoft.com/library/en-us/acdata/ac_8_qd_12_61yb.asp

Una volta definito il Linked Server, andrai ad interrogare MySQL utilizzando il four-part name, ovvero referenziando gli oggetti come LinkedServer.Catalogo.Schema.Oggetto oppure puoi eseguire query pass-through utilizzando la funzione OPENQUERY():

"Distributed Query Architecture"
http://msdn.microsoft.com/library/en-us/architec/8_ar_sa_6vz9.asp

"OPENQUERY"
http://msdn.microsoft.com/library/en-us/tsqlref/ts_oa-oz_5xix.asp

Infine, se devi connetterti una tantum a MySQL puoi evitare di definire un Linked Server permanente, utilizzando una query ad-hoc tramite la funzione OPENROWSET():

"OPENROWSET"
http://msdn.microsoft.com/library/en-us/tsqlref/ts_oa-oz_78z8.asp

>Grazie per la collaborazione.
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

biggiu Profilo | Junior Member

Grazie per il cortese interessamento.

Ho provato la connessione e sembra che funzioni.

Ho anche provato ed eseguire (da SQL Q.A.) una OPENQUERY cosi' strutturata :

SELECT *
FROM OPENQUERY(Nome_Server, 'SELECT * FROM nome_file')

ma ottengo il seguente messaggio :

Server: messaggio 7347, livello 16, stato 1, riga 1
Il provider OLE DB 'MSDASQL' ha restituito una lunghezza di dati imprevista per la colonna di lunghezza fissa '[MSDASQL]codstr'. La lunghezza prevista è 4, mentre la lunghezza restituita è 0.

Se hai qualche informazione in merito te ne sarei grato.

Ciao!
BigGiu
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5