Sql server 为什么我会看到“恢复中”消息,以及如何防止它?

Sql server 为什么我会看到“恢复中”消息,以及如何防止它?,sql-server,tsql,msbuild,sql-server-2008-express,Sql Server,Tsql,Msbuild,Sql Server 2008 Express,我正在处理的项目为您处理的每个SVN分支创建SQL Server数据库的本地副本。我们正在本地计算机上运行SQL Server 2008 Express和高级服务来承载它 当我们创建一个新分支时,构建脚本将使用该分支的ID创建一个新数据库,创建模式对象,并从生产卷影服务器复制一组数据 创建数据库后,它或本地计算机上的其他数据库通常会进入恢复模式几分钟。在几次刷新后,它会出现并很高兴,但偶尔会回到恢复模式 数据库是在简单恢复模式下创建的。未指定文件名,因此它使用文件的默认路径 加载数据后的数据库大

我正在处理的项目为您处理的每个SVN分支创建SQL Server数据库的本地副本。我们正在本地计算机上运行SQL Server 2008 Express和高级服务来承载它

当我们创建一个新分支时,构建脚本将使用该分支的ID创建一个新数据库,创建模式对象,并从生产卷影服务器复制一组数据

创建数据库后,它或本地计算机上的其他数据库通常会进入恢复模式几分钟。在几次刷新后,它会出现并很高兴,但偶尔会回到恢复模式

数据库是在简单恢复模式下创建的。未指定文件名,因此它使用文件的默认路径

加载数据后的数据库大小约为400兆。它正在SQL Server 2005兼容模式下运行

创建数据库的命令是:

sqlcmd-S$DBServer-Q如果不存在,请从sysdatabases中选择[name],其中[name]='$DBName'开始创建数据库[$DBName];打印“已创建$DBName”;结束

…其中,$DBName和$DBServer是MSBuild参数

今天早上我有一个干净的日志文件。当我打开电脑时,它启动了所有五个数据库。但是,其中两个显示向前和向后滚动的事务。it只是不断尝试启动所有五个数据库

2010-06-10 08:24:59.74 spid52      Starting up database 'ASPState'.
2010-06-10 08:24:59.82 spid52      Starting up database 'CommunityLibrary'.
2010-06-10 08:25:03.97 spid52      Starting up database 'DLG-R8441'.
2010-06-10 08:25:05.07 spid52      2 transactions rolled forward in database 'DLG-R8441' (6). This is an informational message only. No user action is required.
2010-06-10 08:25:05.14 spid52      0 transactions rolled back in database 'DLG-R8441' (6). This is an informational message only. No user action is required.
2010-06-10 08:25:05.14 spid52      Recovery is writing a checkpoint in database 'DLG-R8441' (6). This is an informational message only. No user action is required.
2010-06-10 08:25:11.23 spid52      Starting up database 'DLG-R8979'.
2010-06-10 08:25:12.31 spid36s     Starting up database 'DLG-R8441'.
2010-06-10 08:25:13.17 spid52      2 transactions rolled forward in database 'DLG-R8979' (9). This is an informational message only. No user action is required.
2010-06-10 08:25:13.22 spid52      0 transactions rolled back in database 'DLG-R8979' (9). This is an informational message only. No user action is required.
2010-06-10 08:25:13.22 spid52      Recovery is writing a checkpoint in database 'DLG-R8979' (9). This is an informational message only. No user action is required.
2010-06-10 08:25:18.43 spid52      Starting up database 'Rls QA'.
2010-06-10 08:25:19.13 spid46s     Starting up database 'DLG-R8979'.
2010-06-10 08:25:23.29 spid36s     Starting up database 'DLG-R8441'.
2010-06-10 08:25:27.91 spid52      Starting up database 'ASPState'.
2010-06-10 08:25:29.80 spid41s     Starting up database 'DLG-R8979'.
2010-06-10 08:25:31.22 spid52      Starting up database 'Rls QA'.
在本例中,它一直尝试连续启动数据库,直到我在23分钟后08:48:19.72关闭SQL Server。同时,我实际上大部分时间都能使用数据库

日志文件中最后一行有趣的内容是

2010-06-10 08:35:01.52 spid34s     Recovery completed for database DLG-R8441 (database ID 6) in 1 second(s) (analysis 603 ms, redo 0 ms, undo 219 ms.) This is an informational message only. No user action is required.

问题似乎是自动关闭选项。我关掉它之后,问题就消失了。在脚本中创建数据库时,默认值为“开”,但在通过ManagementStudio创建数据库时,默认值为“关”

自动关闭功能在最后一个用户断开连接后释放数据库的所有资源。因为这是一台开发机器,通常只有一个用户,所以它会在每次请求后释放所有资源。此外,似乎ManagementStudio偶尔会连接到服务器上的每个数据库,导致每个数据库每分钟启动几次


干杯

为什么我会在恢复消息中看到此消息,以及如何防止它?谢谢发生这种情况时,日志会说什么?嘿,Martin,我添加了日志文件条目。谢谢我只是注意到我创建的唯一一个没有脚本的数据库没有这个问题。我查看了所有的设置,发现有效设置和无效设置之间有三个区别。正在失败的数据库是。。。1.SQL Server 2005兼容模式2。自动关闭=真3。代理已启用=True