我有一些Seleniumtesting脚本,我用它来testing一个经典的ASP网页应用程序,但是在每次testing运行之前,用备份文件恢复数据库(SQL Server 2005)后,我遇到了问题。 在ASP尝试连接到数据库时,立即在成功的RESTORE(从运行sqlcmd的Python脚本中)之后,出现以下错误…
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionWrite (send()).,,,Microsoft OLE DB Provider for ODBC
这是由ADODB使用此连接string生成的…
"DSN=mydbdsn;UID=myuser;PWD=mypass;"
但是尝试通过ODBC从C ++ ActiveX对象进行连接也会失败,并出现相同的错误。
重新启动IIS会使事情恢复正常。 而SQL Server 2008展现了同样的问题。
有没有人有任何想法,为什么我不能连接到数据库后一个RESTORE?
谢谢,
从RESTORE规范:
在脱机还原期间,如果指定的数据库正在使用中,RESTORE会在短时间后强制closures用户。
所以确保在恢复之后打开新的连接。 已经清楚logging,来自连接池的现有连接全部由RESTORE处理。 在每次testing之前清除连接池。
恢复后重新启动您的传统ASP应用程序。 这将清除还原之前的现有连接。
或者,您可以在还原之前将数据库设置为单用户模式(这应该会驱逐任何现有连接),请在继续testing之前执行还原。
用于设置单用户模式的SQL脚本是:
ALTER DATABASE <DB_NAME_HERE> SET SINGLE_USER WITH ROLLBACK IMMEDIATE