Molti esempi di codice contenenti stringhe di connessione di SQL
Server spesso utilizzano localhost e (local)
indifferentemente. In realtà sono diversi.
Server=(local);Database=DotNetNuke;Trusted_Connection=True
Utilizza
named pipes
Server=localhost;Database=DotNetNuke;Trusted_Connection=True
Utilizza
una porta TCP negoziata sulla porta UDP 1434, che di default è la 1433
Ci sono molte differenze tra le connessioni TCP e con Named Pipe, ma se
si lavora con un server SQL locale la cosa che interessa è il semplice
accesso.
- L'account ASPNET generalmente si comporta meglio con la connessione
TCP, siccome di default non ha accesso alle Named Pipes (http://support.microsoft.com/Default.aspx?id=315159).
- Se si utilizza impersonation, invece, le Named Pipes sono più
semplici da usare. Se infatti l'impersonation è utilizzata senza
specificare lo username, l'applicazione gira sotto l'account utente
autenticato con IIS. Se si consente l'accesso anonimo l'utente default è
IUSR_MACHINENAME, che generalmente ha accesso alla condivisione IPC$,
richiesta dalle comunicazioni con Named Pipe.
Come menzionato in un commento sul blog di Peter Van Ooijen, il modo migliore sarebbe
di evitare sia local che localhost, utilizzando invece il nome della macchina
(es. Server=COMPY386;Database=DotNetNuke;Trusted_Connection=True).
Notare che in questo modo si utilizza sempre la connessione TCP.
Source: JonGalloway.ToString()
powered by IMHO 1.3