C# 使用Trusted_Connection=true和SQL Server身份验证时,这会影响性能吗?
如果连接字符串使用SQL Server身份验证模式指定C# 使用Trusted_Connection=true和SQL Server身份验证时,这会影响性能吗?,c#,.net,asp.net,sql-server-2005,ado.net,C#,.net,Asp.net,Sql Server 2005,Ado.net,如果连接字符串使用SQL Server身份验证模式指定Trusted\u connection=true,我的web应用程序的性能会受到影响吗 在创建连接时,这可能会带来一些性能成本,但由于连接是池式的,因此它们只创建一次,然后再重新使用,因此不会对应用程序产生任何影响。但一如往常:测量它 更新: 有两种身份验证模式: Windows身份验证模式(对应于可信连接)。客户端需要是域的成员 SQL Server身份验证模式。客户端在每个连接处发送用户名/密码 不是100%确定你的意思: Trust
Trusted\u connection=true
,我的web应用程序的性能会受到影响吗 在创建连接时,这可能会带来一些性能成本,但由于连接是池式的,因此它们只创建一次,然后再重新使用,因此不会对应用程序产生任何影响。但一如往常:测量它
更新: 有两种身份验证模式:
不是100%确定你的意思:
Trusted_Connection=True;
使用Windows凭据,100%等同于:
Integrated Security=SSPI;
或
如果不想使用集成安全性/受信任连接,则需要在连接字符串中明确指定用户id和密码(并省略对受信任连接
或集成安全性
的任何引用)
只有在这种情况下,才会使用SQL Server身份验证模式
如果存在这两个设置中的任何一个(Trusted\u Connection=true
或Integrated Security=true/SSPI
),则当前用户的Windows凭据将用于对SQL Server进行身份验证,并且任何用户iD=
设置都将被忽略,而不会使用
有关参考信息,请参阅针对SQL Server 2005的示例和说明
使用Windows身份验证是首选和推荐的操作方式,但它可能会引起轻微延迟,因为SQL Server必须根据Active Directory(通常)对您的凭据进行身份验证。我不知道这小小的延迟会有多大,我也没有找到任何相关的参考资料
总结:
如果指定
Trusted\u Connection=True代码>或<代码>集成安全=SSPI代码>或集成安全=真代码>在您的连接字符串中
==>然后(并且只有那时)您才有Windows身份验证。将忽略连接字符串中的任何用户id=
设置
如果未指定这些设置之一
==>那么您没有进行Windows身份验证(将使用SQL身份验证模式)
使用受信任的连接时,用户名和密码将被忽略,因为SQL Server使用windows身份验证。如果您的web应用程序配置为模拟客户端,则使用受信任的连接可能会对性能产生负面影响。这是因为每个客户端必须使用不同的连接池(带有客户端的凭据)
大多数web应用程序不使用模拟/委派,因此不存在此问题
有关详细信息,请参阅。您的意思是,首次建立与SQL Server的连接时,会增加性能成本?为什么?(我之前的理解是,可信连接将提高性能,因为它是“可信的”——可以通过绕过一些身份验证成本来节省时间)。如果我错了,请纠正我。是的,但要想成为受信任的客户机和服务器之间需要进行多次交换。建立SSPI握手将比发送用户名/密码的单程往返慢。查询Active Directory还需要额外的成本。Trusted\u Connection=True
表示Windows身份验证。Windows身份验证表示Active Directory。您的意思是,如果我使用的是SQL Server身份验证而不是Windows身份验证,我就不能使用Trusted_Connection=true?如果您使用的是Trusted Connection,SQL Server不关心连接字符串中提供的用户名和密码。Sql Server使用当前进程的凭据。如果要使用Sql Server身份验证,必须从连接中删除受信任的连接谢谢!如果我不在基于active directory的环境中,是否可以使用Trusted_connection=true?您不能将Trusted connection与Sql Server身份验证一起使用。它们是相互排斥的。AD、本地用户帐户或家庭组之间没有区别。您的意思是如果我使用的是SQL Server身份验证而不是Windows身份验证,我不能使用Trusted_Connection=true?对不起,我的意思是如果我要使用Trusted_Connection=true,那么我必须使用Windows身份验证模式?我可以在Trusted_connection=true的情况下使用SQL Server身份验证模式吗?Marc,我想与您确认,1。如果使用的是SQL Server authenticaton模式,则无法使用Trusted_connection=true,2。如果我使用的是Windows身份验证模式,那么我可以选择使用Trusted_connection=true或not?1.)是,2.)否-Trusted_connection=true表示Windows身份验证,Windows身份验证要求Trusted_connection=true。如果您指定“trusted_connection=True”=>您拥有Windows身份验证;如果未指定,则没有Windows身份验证您的意思是如果使用Windows身份验证,则必须使用trusted_connection=True吗?我之所以感到困惑,是因为我在我的一个项目中使用Windows身份验证,并且我没有同时指定trusted_connection=True::-)
Integrated Security=true;
server=yourservername;database=yourdatabase;user id=YourUser;pwd=TopSecret