Connection string vs dsn

di il
6 risposte

Connection string vs dsn

Ho bisogno di connettermi al server sqlexpress da excel. Questo codice funziona benissimo

Set cnn = New ADODB.Connection
Set rs = New ADODB.Recordset
connString = "Driver={ODBC Driver 17 for SQL Server};server=desktop-fmbj0fj\sqlexpress;database=RicevuteCPNCompletoBackup;" _
            & "trustedConnection=No;encrypt=optional; uid=sa;pwd=xxxxxx; trustservercertificate=yes;"
 cnn.Open connString

Per evitare di scrivere la lunga string, ho pensato di usare il codice alternativo

Set cnn = New ADODB.Connection
Set rs = New ADODB.Recordset
connString = "DSN=Driver17"
 cnn.Open connString

ove driver17.dsn è il file dsn che ho definito. Questo file di connessione appare del tutto corretto, anche la verifica di connessione alla fine funziona perfettamente; ma il codice fallisce invariabilmente con l'errore

Nonostante i miei sforzi, non sono riuscito a venire a capo del problema. Ho provato anche con il driver 18 e il driver sql nativo 11,0. Una entry del file di log del server dice:

2025-04-10 18:45:24.15 Logon Error: 18456, Severity: 14, State: 58.
2025-04-10 18:45:24.15 Logon Login failed for user ''. Reason: An attempt to login using SQL authentication failed. Server is configured for Integrated authentication only. [CLIENT: 192.168.178.35]

ma è del tutto fuori luogo, visto che il server è sempre stato definito in  mixed mode (windows + sql authentication) e del resto la connection string funziona.

L'errore avviene quando provo a connettermi da un pc in lan diverso da quello ove risiede il server; provando dallo stesso pc, l'errore non c'è. Deve tratttarsi di un problema di rete, ma allora perchè la connection string funziona (come anche la connessione di ssms?).

Sono a corto di idee. Se qualcuno sa dove mettere le mani, grazie in anticipo.

6 Risposte

Devi accedere o registrarti per scrivere nel forum
6 risposte