我们在安装SQL Server的时候会在指定SQL Server各个服务的运行启动账户的账户的时候看到底下有一个选项写着“Grant Perform Volume Maintenance Task privilege.....”。准确的说,这个东西不是SQL Server的东西,“Perform Volume Maintenance Task”权限属于Windows的安全策略(Security Policy)范畴,这里其实只是通过一个UI界面改了本地的Windows安全策略。

那“Perform Volume Maintenance Task”是个什么东西呢?它代表的是Windows操作系统的“Instant File Initialization”特性。意思就是在Windows操作系统下,文件在被创建的时候是否执行“zeroing out”任务,也就是把文件系统分配给某个文件的空间都通过写0来清楚原先的数据。开启了文件及时初始化后在Windows下我们删除一个文件其实并没有把磁盘上的数据清除,而是留到下一次这部分空间被重新利用的时候才来复写。而“Instant File Initialization”的意思就是不执行“zeroing out”任务。

优点:

那么回到SQL Server来谈这个东西,它的作用就是在SQL Server每次文件被创建或者发生空间增长的时候不清楚旧数据,从而提高性能。这点会影响到CREATE DATABASE, ALTER DATABASE, RESTORE和AUTOGROWTH等场景。

缺点/风险:

安全风险是开启文件及时初始化的缺点。

局限性:

1)LOG文件不适用。至于说为什么LOG文件不适用,其实也不难理解。数据文件空间分配背后有GAM,SGAM, PFS以及内部表来支持数据空间的元数据验证,自然不会犯错,把原本不该是“属于自己的数据”当成是自己的,即便这部分数据还留在文件里面。可是LOG不同,LOG文件没有这层的逻辑来支持它。

2)不能是稀疏文件,比如Snapshot,DBCC CHECKDB命令运行时产生的结果文件(这个文件是自动产生);

3) Transparent Data Encryption数据库选项不能被开启;

4)跟踪标记(Trace Flag)1806不能被启用。这个标记的作用就是关闭及时文件初始化特性的。两者相斥。

那如果在安装的时候没勾选那个选项,后面怎么去启用呢?

打开安全策略修改就行。也就是这样SQL Server服务账号具备权限就自动启用的SQL Server的文件及时初始化。添加权限需要重启SQL Server服务,删除权限则需要重启服务器。

参考文献:

SQL Server Premier Field Engineer Blog -- How and Why to Enable Instant File Initialization

SQL Server ->> Enable Instant File Initialization(开启文件及时初始化)的更多相关文章

  1. Sql Server来龙去脉系列之四 数据库和文件

        在讨论数据库之前我们先要明白一个问题:什么是数据库?     数据库是若干对象的集合,这些对象用来控制和维护数据.一个经典的数据库实例仅仅包含少量的数据库,但用户一般也不会在一个实例上创建太多 ...

  2. sql server数据库保存图片或者其他小文件

    原文:sql server数据库保存图片或者其他小文件 测试用sql server数据库保存图片或者其他小文件. 文件流字段用varbinary类型. static void Main() { App ...

  3. sql server 中后缀为.mdf的文件是干什么用的??

    在微软的SQL Server 2000 数据库有三种类型的文件: 1)主要数据文件(扩展名.mdf是 primary data file 的缩写) 主要数据文件包含数据库的启动信息,并指向数据库中的其 ...

  4. Kettle建立数据库链接报错-'MS SQL Server' driver (jar file) is installed. kettle的bug,对于12.2而言

    1.链接sql server数据库报错 错误连接数据库 [My_vm_win_sql] : org.pentaho.di.core.exception.KettleDatabaseException: ...

  5. SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)

    1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地 ...

  6. SQL Server Management Studio 执行超大脚本文件

    SQL Server Management Studio 执行超大脚本文件 启动cmd.exe , cd 到C:\Program Files (x86)\Microsoft SQL Server\11 ...

  7. sql server启动服务和还原bak文件

    sql server启动服务和还原bak文件, sql server启动要: mysql数据库备份是psc后缀文件, sql server还原数据库备份bak文件: 三张图简介明了: ok:

  8. [转] C#实现在Sql Server中存储和读取Word文件 (Not Correct Modified)

    出处 C#实现在Sql Server中存储和读取Word文件 要实现在Sql Server中实现将文件读写Word文件,需要在要存取的表中添加Image类型的列,示例表结构为: CREATE TABL ...

  9. 微软BI 之SSIS 系列 - 两种将 SQL Server 数据库数据输出成 XML 文件的方法

    开篇介绍 在 SSIS 中并没有直接提供从数据源到 XML 的转换输出,Destination 的输出对象有 Excel File, Flat File, Database 等,但是并没有直接提供 X ...

随机推荐

  1. Jmeter使用指南----压力测试工具

    来源: https://blog.csdn.net/u012111923/article/details/80705141 https://www.cnblogs.com/st-leslie/p/51 ...

  2. my.工坊_ZZ

    1.查了下,可以将 考古升上去,但是 还是使用 2级的考古技能,这样比较赚,高级的反而不赚.但是看到有人说 考古升到 3/4 不能再用 洛阳铲 了. 于是有了两种情况,我暂定的做法:先将 考古升到2级 ...

  3. linux新增特性timerfd

    https://blog.csdn.net/shreck66/article/details/49745149

  4. display:inline-block会出现的问题

    用一个父元素包裹三个子元素,将父元素的white-space设置为nowrap;这样子元素就会排在父元素中而不会换行了,通过这种方式,我们也就可以在移动端使用包裹元素的margin值实现类似的单页应用 ...

  5. oracle10g获取Date类型字段无时分秒解决办法!

    一般的数据库中,DATE字段仅仅表示日期,不包括日期信息,而Oracle数据库中的DATE数据类型是包括日期.时间的,对于不同的Oracle jdbc驱动版本,对于该问题的处理都有些区别. 最近使用 ...

  6. 我的Python升级打怪之路【五】:Python模块

    模块,是一些代码实现了某个功能的集合 模块的分类: 自定义模块 第三方模块 内置模块 导入模块 import module from module.xx.xx import xx from modul ...

  7. c++ 网络编程(三) LINUX/windows 进程间的通信原理与实现代码 基于多进程的服务端实现

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9613027.html 锲子:进程与线程是什么,他们的区别在哪里: 1 进程概念 进程是程序的一 ...

  8. js需要清楚的内存模型

    原型 原型重写 原型继承 组合方式实现继承 函数作用域链

  9. 在Eclipse中生成javadoc

    在<thinking in java>一书的第一章提到javadoc,以前也看过,每次看到这部就跳过了,没有真正去尝试过什么样子,今天终于亲自实践了一下,原来真的挺简单:一.编写java源 ...

  10. location.false(true)

    location.reload()意思是从服务器端重新载入页面 ; location.false(true)意思是从缓存中重新载入.