Un saluto a tutti.
Premessa:
Di recente mi sono riavvicinato alla programmazione in Visual Basic 2008 per la realizzazione di un progetto lato desktop.
Tale progetto si appoggia ad un Database contenuto in Microsoft SQL Server 2005 Express.
Dopo numerosissime ricerche in rete e consultazione di libri (l'ultimo l'ho pagato 50 Euro) sono riuscito ad ottenere qualche risultato ma non lo ritengo ancora insoddisfacente
Situazione:
- 1) Implementazione Lan: OK
- Ho 2 pc con SO win7 correttamente collegati tramite Wireless in un gruppo di lavoro.
2) Accesso con Autenticazione di SQL Server: OK
- Se dal Computer B (Client) lancio l'applicazione ricevo in risposta dal computer A (Server) il contenuto di una tabella in un Database contenuto nel SQL server ivi installato.
3) Accesso con Autenticazione di Windows: NON OK
- a) Caso 1:
- Se dal Computer A (Client) lancio l'applicazione ricevo in risposta dal computer A (Server) il contenuto di una tabella in un Database contenuto nel SQL server ivi installato.
b) Caso 2:
- Se dal Computer B (Client) lancio l'applicazione ricevo in risposta dal computer A (Server) il seguente messaggio di errore:
... sembrerebbe che non riconosca l'utente che accede...
Configurazione SQL Server:
Per completezza di trattazione ecco le immagini di come ho configurato per la connessessione Remota:
Ed ecco anche l'avvio del servizio SQLBrowser:
Configurazione FireWall: OK
Ho creato 2 regole per le connessioni in entrata tanto per SQLserver.exe che per SQlBrowser.exe
Parte relativa alla Programmazione:
Per accedere ad un Database in Microsoft SQL Server 2005 Express, nell'evento click di un pulsante ho messo il seguente codice che permette l'accesso al SQL Server in parola sfruttando
l'autenticazione di SQL Server stessa...
Imports System.Data.SqlClient
Public Class Main
Private Sub bt_Connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_Connect.Click
Dim sqlconn As SqlConnection
Try
sqlconn = New SqlConnection("Persist Security Info=False;User ID=Utente1;Password=12345;Initial Catalog=GestoreTabelle;Server=ANGELOPC\SQLEXPRESS")
sqlconn.Open()
MsgBox("Database Connesso")
Catch
MsgBox("Database non Connesso")
End Try
End Sub
Questo di seguito invece è il codice che ho utilizzato per ottenere il medesimo risultato ma sfruttando
l'autenticazione di windows
Imports System.Data.SqlClient
Public Class Main
Private Sub bt_Connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_Connect.Click
Dim sqlconn As SqlConnection
Try
sqlconn = New SqlConnection("Database=GestoreTabelle;Server=ANGELOPC\SQLEXPRESS;Trusted_Connection=true")
sqlconn.Open()
MsgBox("Database Connesso")
Catch
MsgBox("Database non Connesso")
End Try
End Sub
la differenza tra il primo e il secondo sta nella Stringa di connessione... ho provato a mettere anche le seguenti altre stringhe di connessione e il risultato non cambia...
"Persist Security Info=False;Integrated Security=true;Initial Catalog=GestoreTabelle;Server=ANGELOPC\SQLEXPRESS"
"Persist Security Info=False;Integrated Security=SSPI;database=GestoreTabelle;server=ANGELOPC\SQLEXPRESS"
"Persist Security Info=False;Trusted_Connection=True;database=GestoreTabelle;server=ANGELOPC\SQLEXPRESS"
Aggiungo anche che credo si tratti di un problema di configurazione di MS SQL server in quanto anche da Access la connessione mediante autenticazione SQL server va a buon fine mentre quella che si basa su Windows (quella trusted per intenderci) mi da errore e nello specifico:
Sperando in un vostro possibile aiuto saluti tutti.