我们在安装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. CDH集群安装配置(二)- 公共环境的配置和虚拟机的克隆

    1. 配置网络-ip地址设置静态 vi /etc/sysconfig/network-scripts/ifcfg-eth33 增加如下配置 ONBOOT=yes BOOTPROTO=static IP ...

  2. Maven 编译报错

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-t ...

  3. linux vi文本编辑器三种模式切换及常用操作

    初学者刚进入vi不要乱点键盘,vi的三种模式和各种命令很容易弄混@@ vi编辑器是Unix系统最初的编辑器.它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行.在文件中移动.插入.编辑和替换文 ...

  4. jQuery练习 | 提交表单验证

    执行函数时,raturn false可阻止标签(例如超链接)的事件发生,从而达到提交表单的效果 <!DOCTYPE html> <html lang="en"&g ...

  5. springboot整合spring data jpa 动态查询

    Spring Data JPA虽然大大的简化了持久层的开发,但是在实际开发中,很多地方都需要高级动态查询,在实现动态查询时我们需要用到Criteria API,主要是以下三个: 1.Criteria ...

  6. jreble安装 in idea

    http://www.cnblogs.com/littlehb/archive/2013/04/19/3031045.html

  7. JavaScirpt事件处理

    一.事件流 事件流,描述的是页面中接受事件的顺序,不过,IE的事件流是事件冒泡流,而Netscape Communicator的事件流是事件捕获型.标准同时支持两种事件模型,即捕获型事件与冒泡型事件, ...

  8. Java EE环境

    Java EE环境,包括EJB容器和Web容器. (1)Web容器:只运行Web应用的容器,例如Tomcat就是开源的Web容器,它可以运行JSP.Servlet等. (2)EJB容器:运行在EJB组 ...

  9. Linux下安装jdk1.6

    Linux中JDK1.6的安装和配置方法 一.安装 创建安装目录,在/usr/java下建立安装路径,并将文件考到该路径下: mkdir /usr/java 1.jdk-6u11-linux-i586 ...

  10. 线上服务器PHP版本编译安装升级全记录

    1.将原来的PHP重命名一下 cd /usr/local/bin/ mv php php.2.9 2.安装依赖 yum install gcc gcc-c++ libxml2 libxml2-deve ...