快捷搜索:

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

2019-10-08 作者:新闻资讯   |   浏览(180)

在SQL Server 2011(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' );

 

 

 

图片 1

 

本来,这里是实施,假如还要持续等待的话,相信那几个时间会越来越长。这一个是相比较令人竟然的场馆。前边查了眨眼间间这几个跟马上文件开首化(Instant File Initialization (IFI))有关。关于那个定义,能够仿效官方文档数据库文件开始化 ,摘抄部分剧情如下所示:

 

 

 

数据库文件初阶化

 

初步化数据和日志文件以覆盖在此以前剔除的公文遗留在磁盘上的别的现成数量。 实行以下当中一项操作时,应率先通过零填充(用零填充)数据和日志文件来早先化那个文件:

 

·         创制数据库。

·         向现存数据库增添数据或日志文件。

·         增大现成文件的大大小小(包罗自动增进操作)。

·         还原数据库或文件组。

 

文本初步化会促成那一个操作费用越来越多时光。 不过,首次将数据写入文件后,操作系统就不用用零来填充文件

 

 

即时文件起始化 (IFI)

 

在SQL Server中,能够在瞬息对数据文件进行早先化,以幸免零填充操作。即时文件起初化能够高速推行上述文件操作。 即时文件伊始化功效将回收利用的磁盘空间,而无需采取零填充空间。 相反,新数据写入文件时会覆盖磁盘内容。 日志文件无法立即初阶化。

 

备注

只有在 Microsoft Windows XP Professional 或 Windows Server 二零零四 或更加高版本中才得以应用即时文件开端化效能。

 

重要

独有在数据文件中才足以动用即时文件开头化成效。 成立日志文件或其大小增进时,将始终零填充该文件。

 

立马文件开头化效能仅在向SQL Server服务运维帐户授予了 SE_MANAGE_VOLUME_NAME 之后才可用。 Windows Administrator 组的积极分子具备此权限,并得以因而将其余顾客增多到 实行卷维护任务 安全战术中来为其授予此权限。

 

重要

一点职能接纳(如透明数据加密 (TDE))能够阻碍即时文件发轫化。

 

 

 因为这么些案例中,运转SQL Server的劳动运维账号为NT ServiceMSSQLSE景逸SUVVE揽胜极光,所以未有权力即时文件开端化的,假诺将运行SQL Server的劳务运转账号改为保有管理员权限的域账号,就不会出现这种情状。其他,倘诺必须要以NT ServiceMSSQLSEHighlanderVELX570为运维账号,能够按如下步骤操作:

 

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

 

 

  1. 在快要创制备份文件的微型Computer上开采地面安全计策使用程序 (secpol.msc)。

 

  1. 在右边手窗格中,展开“本地计策” ,然后单击“顾客权限支使” 。

 

  1. 在侧边窗格中,双击“推行卷维护职分”。

 

  1. 单击“增添客户或组” ,增添用于备份的另外客户帐户。

 

  1. 单击“应用” ,然后倒闭全数“本地安全战术” 对话框。

 

图片 2

 

 

设置后,重启SQL Server服务,然后还原数据库就可以符合规律,此时的等候事件为BACKUPTHREAD,实际不是ASYNC_IO_COMPLETION, 假设版本是SQL Server 二零一二SP4或上述版本,能够因而下边SQL查看识别是不是启用了立时文件开头化

 

 

SELECT  servicename ,

        startup_type ,

        instant_file_initialization_enabled

FROM    sys.dm_server_services; 

 

 

图片 3

 

其余,从SQL Server 2015 (13.x) 先导,可在装置时期给予服务帐户此权限。 借使利用命令提醒符安装,请加多/SQLSVCINSTANTFILEINIT 参数,或选中安装向导中“授予 SQL Server 数据库引擎服务执行卷维护职责权限”复选框。

 

 

参照他事他说加以考察资料:

 

本文由正版香港马报免费资料发布于新闻资讯,转载请注明出处:SQL Server 2012还原一直卡在ASYNC_IO_COMPLETION浅析

关键词: