我之前问过类似的问题,但之前我曾问过关于将备份移动到共享位置的问题。这一次我很好奇:如果我想在共享驱动器上恢复数据库,我需要在该服务器上启用 IFI 还是仅在运行 SQL Server 的服务器上启用?
我问的原因是我正在恢复一个相当大的数据库,并且它在过去几个小时内一直停留在 100% 恢复状态。输入的等待类型sp_whoisactive
是:
(28472716ms) `PREEMPTIVE_OS_WRITEFILEGATHER.
我见过的唯一一次是 IFI 未打开时,但我确实在 SQL Server 上启用了它,但在共享驱动器服务器上未启用它。
Community Wiki 答案由Bob Klimes、Sean Gallardy和Aaron Bertrand对问题的评论生成。
您需要在保存磁盘的服务器上启用即时文件初始化(IFI)。重启SQL Server使其生效。
您可以通过在共享上创建一个数据库并打开跟踪标志 3004 和 3605来测试 IFI 是否正在共享上工作。输出将写入 SQL Server 错误日志。
IFI 似乎确实适用于网络共享,但对我来说,创建测试数据库在共享上花费了 45 秒,在本地花费了不到 1 秒。即使启用了 IFI,您可能仍然会遇到性能问题。