【发布时间】:2016-01-12 19:40:53
【问题描述】:
cmd窗口中的以下命令
sqlcmd -S. -Usa -Ppass -dmaster -Q "RESTORE DATABASE [MYDATABASE] FROM DISK = 'D:\SQL Server\MYDATABASE.BAK' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10"
显示以下进度输出:
10 percent processed.
20 percent processed.
30 percent processed.
40 percent processed.
50 percent processed.
60 percent processed.
70 percent processed.
80 percent processed.
90 percent processed.
100 percent processed.
Processed 32320 pages for database 'MYDATABASE', file 'MYDATABASE' on file 1.
Processed 7 pages for database 'MYDATABASE', file 'MYDATABASE_log' on file 1.
但事实证明,只有在整个恢复之后才会显示进度,从而使过程中的统计数据变得毫无用处。
有什么建议吗?
这里是sqlcmd工具的版本:
Microsoft (R) SQL Server Command Line Tool
Version 12.0.2000.8 NT
Copyright (c) 2014 Microsoft. All rights reserved.
2016 年 12 月更新:
只包括来自Microsoft Connect link在cmets中分享的评论:
SQLCMD 在 SQL 2012 中被重写以使用 ODBC。这里有一个小 似乎已经潜入的回归错误。
这与沿脚本调用RAISERROR('Hello', 0, 1) WITH NOWAIT 时报告的效果相同。
【问题讨论】:
-
遇到同样的问题。如果我发现了什么,我会发布。
-
可能是因为你的隔离级别。
-
@Deadsheep39 我几乎可以肯定相同的命令在以前的版本上运行良好。你能详细说明你的评论吗?隔离级别与这种行为有什么关系?
-
整个还原在隐式事务下。如果您想在事务中间打印结果,则必须使用较低的隔离级别。
标签: tsql sql-server-2012 database-administration sqlcmd database-restore