本系列文章是我在sqlskill.com的paul的博客看到的,很多误区都比较具有典型性和代表性,原文来自t-sql tuesday #11: misconceptions about…. everything!!,经过我们团队的翻译和整理发布在agilesharp和博客园上。希望对大家有所帮助。
误区 #3: 即时文件初始化特性可以在sql server中 a)开启 和 b)关闭
a)是不允许的 b)是允许的
即时文件初始化是一个在sql server 2005以及之上的版本鲜为人知的特性。这个特性允许数据文件(仅仅是数据文件,不包括日志文件)初始化的过程跳过填0初始化过程。这种方式是在发生灾难时大大减少downtime的好办法—在恢复数据库时由于免去了填0初始化的过程而直接开始恢复过程。
我之前已经写过关于即时文件初始化误区的文章了(见misconceptions around instant initialization),但这并没有谈到这方面误区。
你并不能在sql server中开启这个特性。在sql server启动时会检查启动sql server的账户是否拥有适当的windows权限(也就是“执行卷维护任务”这个权限),当启动sql server实例的账户拥有这个权限后,这个特性就会针对这个实例开启,见图1.kimberly有一篇关于讲述如何开启这个特性细节的文章instant initialization – what, why, and how。
图1.开启执行卷维护任务(perform volume maintenance tasks )
你可以在sql server中查看即时文件初始化特性是否开始,通过追踪标志3004(3605可以强制输出错误信息)创建一个数据库,在日志中查看是否有填0操作,如果即时文件初始化有填0初始化操作,则这个特性在sql server中并没有开启。
你可以在sql server中通过追踪标志1806设置为on来暂时停止即时文件初始化特性。如果你想永久的禁止这个特性,请把启动sql server账户中”执行卷维护任务”这个权限删除。
这两个追踪标志是在sql server premier field engineer blog和how and why to enable instant file initialization这两篇博文中首次被提到的。
如果可以的话,尽量打开这个特性。