使用Trusted_Connection = true和SQL Server身份验证时,这会影响性能吗?

时间:2009-10-29 09:20:19

标签: c# .net asp.net sql-server-2005 ado.net

如果连接字符串使用SQL Server身份验证模式指定Trusted_Connection=true,我的Web应用程序的性能是否会受到影响?

4 个答案:

答案 0 :(得分:120)

不是100%肯定你的意思:

Trusted_Connection=True;
使用Windows凭据

IS 并且100%相当于:

Integrated Security=SSPI;

Integrated Security=true;

如果您不想使用集成安全性/可信连接,则需要在连接字符串中明确指定用户ID和密码(并忽略对Trusted_ConnectionIntegrated Security的任何引用)< / p>

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

仅在这种情况下,使用SQL Server身份验证模式。

如果存在这两个设置中的任何一个(Trusted_Connection=trueIntegrated Security=true/SSPI),则使用当前用户的 Windows凭据对SQL Server和任何{进行身份验证{1}}设置将被忽略且使用。

有关参考,请参阅SQL Server 2005的Connection Strings site,其中包含大量示例和说明。

使用Windows身份验证是首选和推荐的处理方式,但由于SQL Server必须针对Active Directory(通常)对您的凭据进行身份验证,因此可能会稍有延迟。我不知道这可能会有多少延迟,而且我没有找到任何参考资料。


总结:

如果您在连接字符串中指定user iD=Trusted_Connection=True;Integrated Security=SSPI;

==&GT; 然后(并且只有这样)您发生 Windows身份验证。连接字符串中的任何Integrated Security=true;设置都将被忽略


如果您不要指定其中任何一项设置,

==&GT;然后你不要发生Windows身份验证(将使用SQL身份验证模式)


答案 1 :(得分:8)

当您使用受信任的连接时,用户名和密码是IGNORED,因为SQL Server使用Windows身份验证。

答案 2 :(得分:4)

创建连接时可能会有一些性能成本,但是当连接池化时,它们只创建一次然后重复使用,因此它对您的应用程序没有任何影响。但一如既往:衡量它。


更新:

有两种身份验证模式:

  1. Windows身份验证模式(对应于可信连接)。客户需要成为域名的成员。
  2. SQL Server身份验证模式。客户端正在每个连接发送用户名/密码

答案 3 :(得分:1)

如果您的Web应用程序配置为模拟客户端,则使用可信连接可能会对性能产生负面影响。这是因为每个客户端必须使用不同的连接池(使用客户端的凭据)。

大多数Web应用程序不使用模拟/委派,因此没有此问题。

有关详细信息,请参阅this MSDN article