恢复后连接数据库时出现问题。SQL Server 2005 和 Classic ASP

恢复后连接数据库时出现问题。SQL Server 2005 和 Classic ASP

我有一些 Selenium 测试脚本,用于测试 Classic ASP Web 应用程序,但在每次运行测试之前使用备份文件恢复数据库 (SQL Server 2005) 后遇到问题。成功恢复后 (从运行 sqlcmd ... 的 Python 脚本),当 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 也出现同样的问题。

有人知道为什么我在恢复后无法连接到数据库吗?

谢谢,

答案1

来自RESTORE规格:

在离线恢复期间,如果指定的数据库正在使用中,RESTORE 会在短暂延迟后强制用户关闭。

因此请确保你打开新的恢复后的连接。连接池中的现有连接均被 RESTORE 破坏,如文档中明确所述。每次测试前清除连接池。

答案2

恢复后重新启动 Classic ASP 应用程序。这将清除恢复前的现有连接。

或者,您可以在还原之前将数据库设置为单用户模式(这应该会驱逐任何现有连接),然后在继续测试之前执行还原。

设置单用户模式的SQL脚本是:

ALTER DATABASE <DB_NAME_HERE> SET SINGLE_USER WITH ROLLBACK IMMEDIATE

相关内容