2012-12-19 5 views
11

Dobrze jest to pierwsza metodaCzy ustawienia uwierzytelniania na SQL Server 2008 R2 powodują różnicę wydajności?

public static string srConnectionString = "server=localhost;database=myDB; "+ 
" uid=sa;pwd=myPW;"; 

I to jest druga metoda

public static string srConnectionString = "server=localhost;database=myDB; "+ 
" integrated security=SSPI;persist security info=False; Trusted_Connection=Yes;"; 

Czy istnieje różnica wydajności lub jakakolwiek inna różnica między tymi 2 ciągi połączeń?

Tutaj moja klasa połączenia sql jakieś sugestie?

using System; 
using System.Data.Sql; 
using System.Data.SqlClient; 
using System.Data; 

public static class DbConnection 

{ 
    public static string srConnectionString = "server=localhost; database=myDB; uid=sa; pwd=myPW;"; 

    public static DataSet db_Select_Query(string strQuery) 
    { 
     DataSet dSet = new DataSet(); 
     if (strQuery.Length < 5) 
      return dSet; 
     try 
     { 
      using (SqlConnection connection = new SqlConnection(srConnectionString)) 
      { 
       connection.Open(); 
       using (SqlDataAdapter DA = new SqlDataAdapter(strQuery, connection)) 
       { 
        DA.Fill(dSet); 
       } 
      } 
      return dSet; 
     } 
     catch 
     { 
      using (SqlConnection connection = new SqlConnection(srConnectionString)) 
      { 
       if (srConnectionString.IndexOf("select Id from tblAspErrors") != -1) 
       { 
        connection.Open(); 
        strQuery = strQuery.Replace("'", "''"); 

        using (SqlCommand command = new SqlCommand("insert into tblSqlErrors values ('" + strQuery + "')", connection)) 
        { 
         command.ExecuteNonQuery(); 
        } 
       } 
      } 
      return dSet; 
     } 
    } 

    public static void db_Update_Delete_Query(string strQuery) 
    { 
     if (strQuery.Length < 5) 
      return; 
     try 
     { 
      using (SqlConnection connection = new SqlConnection(srConnectionString)) 
      { 
       connection.Open(); 
       using (SqlCommand command = new SqlCommand(strQuery, connection)) 
       { 
        command.ExecuteNonQuery(); 
       } 
      } 
     } 
     catch 
     { 
      strQuery = strQuery.Replace("'", "''"); 
      using (SqlConnection connection = new SqlConnection(srConnectionString)) 
      { 
       connection.Open(); 
       using (SqlCommand command = new SqlCommand("insert into tblSqlErrors values ('" + strQuery + "')", connection)) 
       { 
        command.ExecuteNonQuery(); 
       } 
      } 
    } 
} 

}

Odpowiedz

5

Różnica wydajności jest nieistotnie mała, że ​​można ją zignorować. Sprawdzanie autentyczności to

  1. ... wykonywane tylko podczas logowania. Połączenie nie jest ponownie sprawdzane dla każdego zapytania. Jednak z puli połączeń, połączenie jest uwierzytelniane i zresetować wiele razy, całkiem możliwe, dla prawie każdego zapytania
  2. ... tak samo jak każdy dostępu do plików i innej działalności związanej z domeny coraz sprawdzone przeciwko Active Directory

FYI te dwa ustawienia są takie same (użyć jednego lub drugiego):

Integrated security = SSPI
Trusted_Connection = Tak

+0

, więc powiedziałeś bardzo małą różnicę. który z powyższych jest lepszy. 1 lub 2 ? mam na myśli to, który z nich zawiera hasło lub nie zawiera żadnego? i czy łączenie połączeń jest włączone domyślnie? ten ciąg jest używany na stronie asp.net, która otrzymuje tysiące zapytań na sekundę. – MonsterMMORPG

+0

w rzeczywistości moje obserwacje są takie, że pierwszy działa lepiej na serwerze – MonsterMMORPG

Powiązane problemy