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