Come accedere ai servizi di SQL Anyware 11 con i driver per MySQL o MS SQL Server?

di il
5 risposte

Come accedere ai servizi di SQL Anyware 11 con i driver per MySQL o MS SQL Server?

Buonasera a tutti.
Sono nuovo del forum (o meglio "dei forum"), vorrei sottoporvi il mio problema, che ritengo interessante, e spero di farlo correttamente.
Premetto che sono uno sviluppatore di software per automazione su PLC e HMI e non ho moltissima esperienza con i DB.
Ho un dispositivo HMI che ha la possibilità di connettersi solo ed esclusivamente a server MySQL o MS SQL Server ( e quindi credo anche SQL Express) e devo eseguire delle semplici query (solo SELECT, INSERT, UPDATE e DELETE) su un server che però è SQL Anyware 11 al quale quindi non riesco a connettermi.
Come prima soluzione ho pensato di installare MySQL su un PC connesso via ODBC a SQL Anyware 11 e di replicare i dati che mi interessano ma, oltre a non essere così semplice (almeno per me), non credo sia la strada migliore.
Esiste forse un "emulatore" di server MySQL o MS SQL Server che semplicemente "dirotti" le query fatte dai suoi clients ad un server diverso di cui lui è client via ODBC? Se no, qualcuno ha qualche idea migliore?

5 Risposte

  • Re: Come accedere ai servizi di SQL Anyware 11 con i driver per MySQL o MS SQL Server?

    Ciao

    Hai provato a vedere se da SQL Server (Express) puoi mettere su un Linke Server verso SQL Anywhere?

    Se puoi farlo probabilmente è la strada più facile.

    Configurandolo in questo modo, tu fai le query su SQL Server che ti fa da ponte verso SQL Anywhere, senza bisogno di sincronizzare nulla: è concettualmente un link, per cui accedi alle stesse tabelle di Anywhere
  • Re: Come accedere ai servizi di SQL Anyware 11 con i driver per MySQL o MS SQL Server?

    PPC ha scritto:


    Ho un dispositivo HMI che ha la possibilità di connettersi solo ed esclusivamente a server MySQL o MS SQL Server ...
    Qual'è il dispositivo (inteso la marca/modello)? La connessione al db necessità dell'acquisto di una licenza?

    Per capire a quali RDBMS può connettersi il pannello operatore occorre vedere quali driver supporta, forse ODBC ?

    P.S. - Anche io ho a che fare con PLC, HMI, Scada & DB ...
  • Re: Come accedere ai servizi di SQL Anyware 11 con i driver per MySQL o MS SQL Server?

    max.riservo ha scritto:


    PPC ha scritto:


    Ho un dispositivo HMI che ha la possibilità di connettersi solo ed esclusivamente a server MySQL o MS SQL Server ...
    Qual'è il dispositivo (inteso la marca/modello)? La connessione al db necessità dell'acquisto di una licenza?

    Per capire a quali RDBMS può connettersi il pannello operatore occorre vedere quali driver supporta, forse ODBC ?

    P.S. - Anche io ho a che fare con PLC, HMI, Scada & DB ...
    L'HMI che sto utilizzando è un WEINTEK serie cMT-FHD. Non ha necessità di licenze per connettersi a db, è una funzionalità di serie.
    I driver che dispone sono solo quelli per MySQL e MS SQL Server. Nessun ODBC. So, dal centro assistenza Weintek, che è in fase di sviluppo il driver per Microsoft Azure.
  • Re: Come accedere ai servizi di SQL Anyware 11 con i driver per MySQL o MS SQL Server?

    PiGi78 ha scritto:


    Ciao

    Hai provato a vedere se da SQL Server (Express) puoi mettere su un Linke Server verso SQL Anywhere?

    Se puoi farlo probabilmente è la strada più facile.

    Configurandolo in questo modo, tu fai le query su SQL Server che ti fa da ponte verso SQL Anywhere, senza bisogno di sincronizzare nulla: è concettualmente un link, per cui accedi alle stesse tabelle di Anywhere
    Per ora ho tentato questo approccio solo con MySQL, ma non ho trovato il modo di creare link ad altri server a parte che per la migrazione di schema e dati.
    Ti ringrazio per quello che mi suggerisci di fare con SQL Express: sembra proprio quello che mi serve
  • Re: Come accedere ai servizi di SQL Anyware 11 con i driver per MySQL o MS SQL Server?

    Più o meno risolto.
    Il collegamento al database di un server remoto è effettivamente stato più facile utilizzando SQL Express, come consigliato da PiGi78
    Il raggiungimento dell'obiettivo, cioè far comunicare in lettura e scrittura un HMI serie cMT della Weintek con un ERP basato su SQL Anywhere, è comunque stata un'avventura ricca di ostacoli che, a mio parere, vale la pena di essere raccontata.
    Una volta installato SQL Express, creato un database vuoto e una volta configurato il linked server usando il provider di SQL Anywhere è stato rapido eseguire una SELECT e visualizzare da SSMS i dati della tabella remota.
    Ma dall’HMI no! Con la stessa SELECT (era proprio identica perché l’ho analizzata con SQL Server Profiler) sull’HMI non visualizzavo nulla. Invece puntando a una tabella del database locale funzionava correttamente anche da HMI. Dopo 1000 tentativi e vane ricerche sul web, ho scoperto che il “visualizzatore risultati query” dell'HMI mostra solo tabelle dotate di chiave primaria con proprietà identity in auto incremento. Probabilmente l’HMI non riesce ad ottenere (magari solo per questione di diritti) lo schema della tabella remota necessario a formattare il visualizzatore e quindi non visualizza nulla.
    Non sapendo come fare ho girato intorno al problema. Ho CREATE una tabella identica nel DB locale e una Stored Procedure che la TRUNCATE-ava e la INSERT-ava con i record SELECT-ati da quella remota, e da HMI EXECUTE-avo questa SP prima di far visualizzare i risultati in modo che fossero aggiornati… …spero si capisca, altrimenti, se necessario, piegherò in maniera più professionale.
    Scrivere sulla tabella remota è stato ancora più arduo.
    Primo, non riuscivo a fare nemmeno una semplice INSERT neppure da SSMS. Ma questo, una volta scoperto dove, è spiegato anche sulla guida di MS ( https://docs.microsoft.com/en-us/sql/t-sql/statements/insert-transact-sql?view=sql-server-ver15#n-inserting-data-into-a-remote-table-by-using-the-openquery-function ). Però, una volta sistemata, la query riceveva risposta solo da SSMS ma non da HMI che mi ritornava l’errore 7 (Heterogeneous queries require the ANSI_NULLS and ANSI_WARNINGS options to be set for the connection…) anche con tali opzioni attivate esplicitamente.
    Tuttora non ho capito il motivo e quindi nemmeno trovato una soluzione. Ho risolto ancora una volta con in Stored Procedure parametrizzata che eseguivo da HMI passandogli come parametri i dati necessari alla INSERT. Fortunatamente in questa mia applicazione i dati da passare erano pochi.
    Che dire, non sarà elegante ma funziona bene.
    Spero che questo messaggio sia di aiuto o che magari susciti qualche altra discussione o approfondimento
Devi accedere o registrarti per scrivere nel forum
5 risposte