【问题标题】:sqlcmd not showing RESTORE database statssqlcmd 未显示 RESTORE 数据库统计信息
【发布时间】: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


【解决方案1】:

我相信您可以查看 SQL 日志以了解正在进行的进度。

【讨论】:

    【解决方案2】:

    您可以在 sys.dm_exec_requests 中查询 percent_complete

    使用 start 打开一个单独的窗口并发出 select percent_complete from sys.dm_exec_requests where percent_complete > 0

    【讨论】:

      猜你喜欢
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2011-05-08
      • 2021-11-08
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      相关资源
      最近更新 更多