SQL Server 2012还原一直卡在ASYNC_IO_COMPLETION浅析

栏目: 数据库 · SQL Server · 发布时间: 5年前

内容简介:在SQL Server 2012(11.0.7001.0)下面在还原一个数据库(备份文件40多G大小,实际数据库大小300G),在还原过程中,出现一直等待ASYNC_IO_COMPLETION,如下测试截图所示,已经等待了72分钟了,但是还原比例依然为0%

在SQL Server 2012(11.0.7001.0)下面在还原一个数据库(备份文件40多G大小,实际数据库大小300G),在还原过程中,出现一直等待ASYNC_IO_COMPLETION,如下测试截图所示,已经等待了72分钟了,但是还原比例依然为0%

SELECT  r.session_id ,
        r.command ,
        r.start_time,
        r.status,
        r.wait_type,
        CONVERT(NUMERIC(6, 2), r.percent_complete)   AS [Percent Complete(%)] ,
        CONVERT(VARCHAR(20), DATEADD(ms, r.estimated_completion_time,
                                     GETDATE()), 20) AS [ETA Completion Time] ,
        CONVERT(NUMERIC(10, 2), r.total_elapsed_time / 1000.0 / 60.0) AS [Elapsed Min] ,
        CONVERT(NUMERIC(10, 2), r.estimated_completion_time / 1000.0 / 60.0) AS [ETA Min] ,
        CONVERT(NUMERIC(10, 2), r.estimated_completion_time / 1000.0 / 60.0
        / 60.0) AS [ETA Hours] ,
        CONVERT(VARCHAR(1000), ( SELECT SUBSTRING(text,
                                                  r.statement_start_offset / 2,
                                                  CASE WHEN r.statement_end_offset = -1
                                                       THEN 1000
                                                       ELSE ( r.statement_end_offset
                                                              - r.statement_start_offset )
                                                            / 2
                                                  END)
                                 FROM   sys.dm_exec_sql_text(sql_handle)
                               )) AS CommandText
FROM    sys.dm_exec_requests r
WHERE   command IN ( 'RESTORE DATABASE', 'BACKUP DATABASE','RESTORE LOG' );

SQL Server 2012还原一直卡在ASYNC_IO_COMPLETION浅析

当然,这里是实验,如果还要继续等待的话,相信这个时间会更长。这个是比较让人奇怪的现象。后面查了一下这个跟 即时文件初始化 (Instant File Initialization (IFI))有关。关于这个概念,可以参考官方文档 数据库文件初始化 ,摘抄部分内容如下所示:

数据库文件初始化

初始化数据和日志文件以覆盖之前删除的文件遗留在磁盘上的任何现有数据。   执行以下其中一项操作时,应首先通过零填充(用零填充)数据和日志文件来初始化这些文件:

·          创建数据库。

·          向现有数据库添加数据或日志文件。

·          增大现有文件的大小(包括自动增长操作)。

·          还原数据库或文件组。

文件初始化会导致这些操作花费更多时间。   但是,首次将数据写入文件后,操作系统就不必用零来填充文件

即时文件初始化 (IFI)

SQL Server 中,可以在瞬间对数据文件进行初始化,以避免零填充操作。即时文件初始化可以快速执行上述文件操作。   即时文件初始化功能将回收使用的磁盘空间,而无需使用零填充空间。   相反,新数据写入文件时会覆盖磁盘内容。   日志文件不能立即初始化。

备注

只有在   Microsoft   Windows XP Professional     Windows Server 2003   或更高版本中才可以使用即时文件初始化功能。

重要

只有在数据文件中才可以使用即时文件初始化功能。   创建日志文件或其大小增长时,将始终零填充该文件。

即时文件初始化功能仅在向 SQL Server 服务启动帐户授予了 SE_MANAGE_VOLUME_NAME 之后才可用。   Windows Administrator 组的成员拥有此权限,并可以通过将其他用户添加到   执行卷维护任务   安全策略中来为其授予此权限。

重要

某些功能使用(如 透明数据加密 (TDE) )可以阻止即时文件初始化。

  因为这个案例中,启动SQL Server的服务启动账号为NT Service\MSSQLSERVER,所以没有权限即时文件初始化的,如果将启动SQL Server的服务启动账号改为具有管理员权限的域账号,就不会出现这种情况。另外,如果一定要以NT Service\MSSQLSERVER为启动账号

要向一个帐户授予   Perform volume maintenance tasks   权限:

  1. 在将要创建备份文件的计算机上打开 本地安全策略 应用程序 (secpol.msc)
  1. 在左侧窗格中,展开 本地策略 ,然后单击 用户权限指派
  1. 在右侧窗格中,双击 执行卷维护任务
  1. 单击 添加用户或组 ,添加用于备份的任何用户帐户。
  1. 单击 应用 ,然后关闭所有 本地安全策略 对话框

SQL Server 2012还原一直卡在ASYNC_IO_COMPLETION浅析

设置后,重启 SQL Server 服务,然后还原数据库就会正常化,此时的等待事件为 BACKUPTHREAD ,而不是 ASYNC_IO_COMPLETION, 如果版本是SQL Server 2012 SP4或以上版本,可以通过下面 SQL 查看识别是否启用了即时文件初始化

SELECT  servicename ,
        startup_type ,
        instant_file_initialization_enabled
FROM    sys.dm_server_services; 

SQL Server 2012还原一直卡在ASYNC_IO_COMPLETION浅析

另外,从SQL Server 2016 (13.x)   开始,可在安装期间授予服务帐户此权限。   如果使用命令提示符安装,请添加 /SQLSVCINSTANTFILEINIT 参数,或选中安装向导中 授予 SQL Server 数据库引擎服务执行卷维护任务权限 复选框。

参考资料:

https://docs.microsoft.com/zh-cn/sql/relational-databases/databases/database-instant-file-initialization?view=sql-server-2017


以上所述就是小编给大家介绍的《SQL Server 2012还原一直卡在ASYNC_IO_COMPLETION浅析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

系统分析与设计方法

系统分析与设计方法

惠滕 / 孙慧、肖刚 / 机械工业出版社 / 2004-9 / 69.00元

本书是介绍信息系统分析和设计原理、方法、技术、工具和应用的力作,自问世以来,广受欢迎,以至于一版再版,延续至今。 本书采用一个完整的案例研究,以整个信息系统构件(基于Zachman框架)和信息系统开发生命周期(FAST方法学)为主线,详细探讨了系统开发生命周期的前期、中期和后期以及跨生命周期的活动。另外,书中第一章都提供了大量的练习题、讨论题、研究题和小型案例,以加深读者对书中所述理论的实际应用和......一起来看看 《系统分析与设计方法》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试