Posts
103
Comments
238
Trackbacks
4
localhost vs. (local) nelle stringhe di connessione SQL in ASP.NET

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

posted on venerdì 2 dicembre 2005 13:14 Print
News

Scopri CS2, il mio progetto universitario per l'indicizzazione e la ricerca di codice sorgente personale costruito su Lucene.Net.

Windows Developer Power Tools

Potete trovare il mio progetto BusyBoxDotNet nel libro Windows Developer Power Tools, pubblicato da O'Reilly, per il quale ho scritto l'intero capito dedicato.

Sono stato nominato dVP 2008, un riconoscimento per l'apporto fornito alla comunità del progetto db4o.