Atunci când se utilizează Trusted_Connection=true și autentificarea SQL Server, acest lucru va afecta performanța? (Programare, C#,.Net, Asp.Net, Sql Server 2005, Ado.Net)

George2 a intrebat.

Dacă un șir de conexiune specifică Trusted_Connection=true cu modul de autentificare SQL Server, performanța aplicației mele web va fi afectată?

4 răspunsuri
marc_s

Nu sunt 100% sigur de ceea ce vreți să spuneți:

Trusted_Connection=True;

IS folosind acreditările Windows și este 100% echivalent cu:

Integrated Security=SSPI;

sau

Integrated Security=true;

Dacă nu doriți să utilizați securitatea integrată / conexiune de încredere, trebuie să specificați în mod explicit user id și parola în șirul de conexiune (și să omiteți orice referință la Trusted_Connection sau Integrated Security)

server=yourservername;database=yourdatabase;user id=YourUser;pwd=TopSecret

Numai în acest caz, se utilizează modul de autentificare SQL Server.

În cazul în care este prezentă oricare dintre aceste două setări (Trusted_Connection=true sau Integrated Security=true/SSPI), atunci se aplică acreditările Windows ale utilizatorului curent sunt utilizate pentru a se autentifica față de SQL Server și orice user iD= va fi ignorată și nu utilizată.

Pentru referință, consultați pagina Site-ul Connection Strings pentru SQL Server 2005, cu o mulțime de exemple și explicații.

Utilizarea autentificării Windows este modalitatea preferată și recomandată, dar ar putea genera o ușoară întârziere, deoarece SQL Server va trebui să autentifice acreditările dvs. față de Active Directory (de obicei). Nu am nicio idee despre cât de mare ar putea fi această ușoară întârziere și nu am găsit nicio referință în acest sens.


În concluzie:

Dacă specificați fie Trusted_Connection=True; fie Integrated Security=SSPI; fie Integrated Security=true; în șirul de conexiune

==> ATUNCI (și numai atunci) aveți Autentificare Windows se întâmplă. Orice user id= setare din șirul de conexiune va fi ignorată.


În cazul în care NU specificați niciuna dintre aceste setări,

==> atunci veți NU aveți autentificare Windows (se va utiliza modul de autentificare SQL)


Comentarii

  • Vrei să spui că dacă folosesc autentificarea SQL Server, alta decât autentificarea Windows, nu pot folosi Trusted_Connection=true? –  > Por George2.
  • Scuze, vreau să spun că dacă vreau să folosesc Trusted_connection = true, atunci trebuie să folosesc modul de autentificare Windows? Pot să folosesc modul de autentificare SQL Server cu Trusted_connection = true? –  > Por George2.
  • Marc, vreau să confirm cu tine că, 1. dacă folosesc modul de autentificare SQL Server, atunci nu pot folosi Trusted_connection = true, 2. dacă folosesc modul de autentificare Windows, atunci pot alege să folosesc Trusted_connection = true sau nu? –  > Por George2.
  • 1.) DA, 2.) NU – trusted_connection=true înseamnă autentificare Windows și autentificare Windows. necesită trusted_Connection=true. Dacă specificați „trusted_connection=True” ==> aveți Windows Authentication; dacă nu o specificați, aveți nu aveți Autentificare Windows –  > Por marc_s.
  • Vrei să spui că dacă folosesc autentificarea Windows, trebuie să folosesc trusted_connection=True? Am această confuzie pentru că folosesc autentificarea Windows într-unul dintre proiectele mele și nu specific trusted_connection=True în același timp. 🙂 –  > Por George2.
Tror

Când folosiți conexiuni de încredere, numele de utilizator și parola sunt IGNORATE, deoarece SQL Server folosește autentificarea Windows.

Comentarii

  • Vrei să spui că dacă folosesc autentificarea SQL Server, alta decât autentificarea Windows, nu pot folosi Trusted_Connection=true? –  > Por George2.
  • Dacă folosiți o conexiune de încredere, SQL Server nu ține cont de userid și parola furnizate în șirul de conexiune. Sql Server utilizează acreditările procesului curent. Dacă doriți să utilizați autentificarea Sql Server, trebuie să eliminați conexiunea de încredere din șirul de conexiuni –  > Por Tror.
  • Vă mulțumim! Dacă nu sunt într-un mediu bazat pe Active Directory, este posibil să folosesc Trusted_connection = true? –  > Por George2.
  • Nu puteți utiliza conexiune de încredere cu autentificarea Sql Server. Ele se exclud reciproc. –  > Por Tror.
  • Nu. Nu există diferențe între AD, contul de utilizator local sau homegroup. –  > Por Tror.
Darin Dimitrov

Acest lucru va avea, probabil, unele costuri de performanță la crearea conexiunii, dar, deoarece conexiunile sunt grupate, acestea sunt create o singură dată și apoi reutilizate, astfel încât nu va face nicio diferență pentru aplicația dvs. Dar, ca întotdeauna: măsurați.


UPDATE:

Există două moduri de autentificare:

  1. Modul de autentificare Windows (care corespunde unei conexiuni de încredere). Clienții trebuie să fie membri ai unui domeniu.
  2. Modul de autentificare SQL Server. Clienții trimit numele de utilizator/parola la fiecare conexiune

Comentarii

  • Vreți să spuneți că la prima stabilire a conexiunii la SQL Server, vor exista costuri suplimentare de performanță? Și de ce? (înțelegerea mea anterioară este că o conexiune de încredere va îmbunătăți performanța, deoarece este „de încredere” – poate economisi timp prin ocolirea unor costuri de autentificare). Corectați-mă dacă mă înșel. –  > Por George2.
  • Da, dar pentru a deveni trusted există mai multe schimburi care trebuie făcute între client și server. Stabilirea handshake-ului SSPI va fi mai lentă decât un singur drum dus-întors care trimite numele de utilizator/parola. –  > Por Darin Dimitrov.
  • De asemenea, există un cost suplimentar pentru interogarea Active Directory. –  > Por Darin Dimitrov.
  • Trusted_Connection=True; înseamnă Windows Authentication. –  > Por Darin Dimitrov.
  • Iar Windows Authentication înseamnă Active Directory. –  > Por Darin Dimitrov.
Joe

Dacă aplicația dvs. web este configurată pentru a impersona un client, atunci utilizarea unei conexiuni de încredere va avea un potențial impact negativ asupra performanței. Acest lucru se datorează faptului că fiecare client trebuie să utilizeze un pool de conexiuni diferit (cu acreditările clientului).

Majoritatea aplicațiilor web nu utilizează impersonarea / delegarea și, prin urmare, nu au această problemă.

A se vedea acest articol MSDN pentru mai multe informații.