2017-04-19 110 views
0

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

问题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:什么是连接生产寿命?我想在运行的应用程序结束时保持全局连接并仅用于此连接。 这种方法会发生问题吗?

+0

您可以检查此情况下,HTTP://计算器.com/questions/1499718/any-limit-of-sql-server-connection-count – maSTAShuFu

+0

要回答第2部分,请参阅:https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110 ).aspx基本上,您希望您的连接尽可能短,以便将它们返回到框架已提供的池中。 –

回答

1

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

SQL Server 2005标准版最多可以支持32,767个同时连接。

什么是连接的生产寿命?我想在运行的应用程序结束时保持全局连接并仅用于此连接。这种方法会出现问题吗?

的SQL Server采用的connection pooling优势,因为这样你会通常要保持你的连接如昙花一现,而不是让他们在使用后可以返回到pool

所以考虑一个using语句中包装你的SQL调用,以确保它们被打开,执行,并妥善处置,而不是使用保持开放的全局连接:

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

检查您的连接字符串

值得一提的是现有的连接字符串池明确禁用,这会不会让你走的内置连接池的优势:

Data Source = ...; Pooling=false; 

我会强烈建议您重新开启,除非你完全知道自己在做什么,否则你可能会遇到一些意想不到的行为,孤立的连接等

+0

未使用时Pooling = false;错误的传球: 超时过期从池中获取 –

+0

连接之前经过的超时时间我使用 使用(VAR连接=新的SqlConnection(“您的连接字符串”)){ // 做的东西 } 但通过错误 –