添加Pooling=True与Integrated Security的结果是什么



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

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

pooling=true;最大池大小= N

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

我该启用还是不启用?

已编辑

当没有启用池时,这个问题中讨论的问题可能存在吗?

应用程序开始显示错误的数据,但在SQL Server服务重新启动时会更正。

编辑:

网络。配置文件包含以下行:

<add name="ConStringPWS" connectionString="Data Source=.;Initial Catalog=pWS;Integrated Security=True;" providerName="System.Data.SqlClient"/>
<identity impersonate="true" userName="ServerAdministrator" password="xyz"/>

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

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

池连接将帮助您的应用程序在更好的性能和更好的可扩展性方面发挥作用。池是一种降低重复打开和关闭连接(物理)的成本的技术。

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

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

根据Microsoft文档:

只有具有相同配置的连接才能被池化。ADO。NET同时保留多个池,每个配置一个池。使用集成安全性时,连接按连接字符串和Windows标识分隔为池。连接也会根据它们是否在事务中登记来进行池化。由于在集成安全模式下,您将以您的AppPool/工作进程的身份访问数据库(除非您使用模拟),因此使用连接池是极其重要的,因为基本上所有对您站点的请求都将使用具有相同配置的连接。不将它们池化将严重影响应用程序的性能。

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

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

参见模拟/委派:

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

最新更新