2010-07-19 67 views
2

我有一些Selenium测试脚本,我用它来测试一个经典的ASP网络应用程序,但是在每次测试之前用备份文件恢复数据库(SQL Server 2005)之后出现问题跑。紧接着成功恢复(从Python脚本运行SQLCMD ...)当ASP尝试连接到数据库,我得到以下错误...RESTORE后连接到数据库的问题。 SQL Server 2005和经典ASP

[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionWrite (send()).,,,Microsoft OLE DB Provider for ODBC 

这是由ADODB使用此连接字符串中产生...

"DSN=mydbdsn;UID=myuser;PWD=mypass;" 

但尝试通过ODBC从C++ ActiveX对象进行连接也失败,并出现相同的错误。

重新启动IIS可使事情恢复正常。而SQL Server 2008展现了同样的问题。

有没有人有任何想法,为什么我不能连接到数据库后的RESTORE?

感谢,

+0

建议,问题是连接池中的连接被RESTORE断开连接,然后尝试被应用程序重新使用。 关闭连接池可以修复一些事情,但我宁愿在每个RESTORE之前清除它,除非我找不到一种不涉及.Net的方法。谁能帮忙? – bartonlee 2010-07-20 21:06:20

回答

0

我猜想,这是事做连接池,并在数据库被置于单用户模式的恢复连接被杀害。

错误信息中是否有任何文字,而不是您的问题中的内容?

0

声音像连接到服务器的地方被缓存。无论是连接池建立或您的代码泄漏连接的地方...这可能与经典的ASP。

听起来像您可能只想将IISRESET调用作为数据恢复计划的一部分。

2

从serverfault重复的问题复制过来:

RESTORE规格:

在脱机恢复,如果 指定的数据库正在使用中,RESTORE 强制短 后,用户关闭延迟。

因此请确保您在恢复后打开新的连接。正如文件中明确记载的,来自连接池的现有连接全部由RESTORE处理。每次测试前清除连接池。