2011-12-19 100 views
4

我追踪库中的一个错误,我没有自己写。在ASP.NET中使用此库时,我得到db连接错误,因为当使用相同的连接字符串打开第二个连接时,SQLConnection似乎会关闭。使用相同的连接字符串打开两个SQLConnections

这是记录的行为?可以使用相同的连接字符串打开新的SQLConnection关闭另一个SQLConnection对象吗?

从调试,这似乎是我的问题最可能的原因,但我无法找到任何网络上支持我的理论。

+0

找到这个的简单方法是对new这个词做一个搜索,它可能会被再次创建..这个连接可以是一个属性或静态字符串,通过代码打开和关闭..只创建一次..或添加代码将检查Connection.State ..邮政编码,您正在创建它..以及它正在关闭或连接状态关闭的代码 – MethodMan 2011-12-19 14:56:27

+1

这应该可以正常工作。该问题更可能是跨请求重新使用连接。 – SLaks 2011-12-19 14:58:55

+0

@DJ KRAZE:我已经找到使用同一个连接字符串打开第二个连接的部分。正如我写的,我想知道它是否正常,这关闭了第一个连接。 – magnattic 2011-12-19 14:59:04

回答

3

不,会发生的是,当您调用SqlConnection.Open()方法时,即使使用相同的连接字符串参数,它也会执行以下两项操作之一:重新使用池中未使用的连接或创建新连接。无论哪种方式,您都将导致SQL Server的非冲突SPID。

0

简而言之,使用相同的连接字符串打开新的连接将不会关闭您的现有连接。但是...通过创建对新连接的新引用来重用已经存在的对象将会破坏连接。

+0

对不起,我不明白最后一句话,你能解释一下你的意思吗?如何通过创建对新对象的新引用来重用对象? – magnattic 2011-12-19 15:04:39

+0

是的,如果我有:SqlConnection conn = new SqlConnection(someconnstring); conn = new SqlConnection(someconnstring); ...然后我的原始连接对象将被新的覆盖。 – 2011-12-19 15:11:50

+0

@Lynn粉碎:这不是重用现有的对象。此外,这不一定会终止连接。 – jason 2011-12-19 15:12:51

3

这是记录的行为?

可以打开具有相同的连接字符串的新的SQLConnection关闭另一个SQLConnection对象?

需要注意的是,除非你已经修改了设置,SQL Server允许32,767个并发连接。但即使如此,这也不能解释你所看到的行为。

相关问题