使用集成安全性添加Pooling = True会带来什么后果?

时间:2012-02-22 07:55:57

标签: asp.net sql-server sql-server-2008-r2

我的应用程序在带有SQL Server 2008 R2后端的ASP.NET 4上。

连接字符串正在使用集成安全性。我想知道添加有什么好处:

pooling = true; 最大泳池尺寸= N

当Integrated Security设置为true时,连接字符串中的

我应该启用它吗?

被修改

未启用合并时,此问题中讨论的问题是否可行?

Application starts displaying wrong data but corrects when SQL Server service restarts.

已编辑:

Web.Config文件包含以下行:

<add name="ConStringPWS" connectionString="Data Source=.;Initial Catalog=pWS;Integrated Security=True;" providerName="System.Data.SqlClient"/>

<identity impersonate="true" userName="Server\Administrator" password="xyz"/>

3 个答案:

答案 0 :(得分:4)

是的,我认为我们应该启用连接池。 (实际上,默认情况下启用池并且最大池大小为100)

据我所知,池化与集成安全配置无关。

池连接将帮助您的应用程序获得更好的性能和更好的可伸缩性区域。池化是一种降低重复打开和关闭连接(物理)成本的技术。

据我所知,回答你的问题,如何检查池是否启用。 我想这里有人可以给你一个更好的答案。

SqlConnectionStringBuilder cnnBuilder = new SqlConnectionStringBuilder(yourConnection.ConnectionString);
bool isPooling = cnnBuilder.Pooling;

答案 1 :(得分:1)

根据MSDN

  

只能汇集具有相同配置的连接。 ADO.NET同时保留多个池,每个配置一个池。连接按连接字符串分隔为池,使用集成安全性时按Windows标识分隔。根据它们是否已加入交易,也可以汇总连接。

由于在集成安全模式下,您将以AppPool / worker Process的身份访问数据库(除非您使用模拟),因此使用连接池非常重要对您站点的所有请求都将使用具有相同配置的连接。不汇集它们会对您的应用程序性能产生严重影响。

答案 2 :(得分:1)

密钥池问题是,如果启用了集成安全性,使用了模拟 - 您的网站是这样的吗?

在这种情况下,池化不太可能有用,因为每个独立用户最终都会有一个单独的池。

请参阅Impersonation/Delegation

  

请注意,如果使用模拟身份访问下游数据库,则模拟会阻止连接池的有效使用。