【问题标题】:sql connection optimization [closed]sql连接优化[关闭]
【发布时间】:2017-09-16 06:54:15
【问题描述】:

我有两个关于在 c# 中使用 sql server 2008 的问题。

问题1:c#中连接sql server 2005的同时查询数是多少?

我的连接字符串是:

Data Source = localhost;database=TaskQueue;Persist Security Info=True;integrated security=SSPI; MultipleActiveResultSets=true; Connection Timeout=0;Pooling=false;

问题 2:连接的生产寿命是多少?我想在运行应用程序的最后保持打开一个全局连接并仅用于此连接。 这种方法有问题吗?

【问题讨论】:

标签: c# sql sql-server sql-server-2008 connection-string


【解决方案1】:

c#中连接sql server 2005的同时查询数是多少?

SQL Server 2005 Standard Edition 最多可支持 32,767 个同时连接。

什么是连接的生产寿命?我想在运行应用程序的最后保持打开一个全局连接并仅用于此连接。这种方法有问题吗?

SQL Server 充分利用了connection pooling,因此您通常希望将连接保持在短暂的状态,以便在使用后将它们返回到pool

因此,请考虑将您的 SQL 调用包装在 using 语句中,以确保它们被打开、执行和正确处理,而不是使用保持打开状态的全局连接:

using (var connection = new SqlConnection("your-connection-string"))
{
     // Do stuff
}

检查您的连接字符串

值得注意的是,您现有的连接字符串已明确禁用池,这将不允许您利用内置连接池:

Data Source = ...; Pooling=false;

我强烈建议您重新启用此功能,除非您完全知道自己在做什么,否则您可能会遇到一些意外行为、孤立连接等。

【讨论】:

  • 当不使用 Pooling=false;错误传递 : timeout expired 从池中获取连接之前经过的超时时间
  • 我使用 using (var connection = new SqlConnection("your-connection-string")) { // Do stuff } 但传递了错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 2018-10-30
  • 2012-06-28
  • 2018-03-24
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多