为SQL Server 2005配置Windows即时初始化

2016-02-19 19:18 7 1 收藏

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是为SQL Server 2005配置Windows即时初始化,一起来学习了解下吧!

【 tulaoshi.com - 编程语言 】

  问题

  SQL Server 2005支持数据库即时文件初始化(Instant File Initialization),这种即时文件初始化可以跳过清零数据的页面,这样做可以在执行一些操作,比如创建数据库,增加文件到现有的数据库中,手动、通过自动增长(autogrowth)或保存一个数据库或文件组来增大现有数据库文件时,减少时间。但是,我们如何确定SQL Server正在使用这个功能?

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  专家解答

  在SQL Server以前的版本中,数据和日志文件一开始是通过在你执行之前提到的某项操作时,用零归档这些文件来初始化的。在灾难备份和还原操作中,这是非常关键的,尤其是处理非常大的数据库时。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  对SQL Server而言,即时文件初始化已经引进了。而这所做的是,它跳过磁盘上的零数据,因此不重写在磁盘上写过的先前的数据。操作系统只分配磁盘空间,但是文件的内容实际上是原先在磁盘上写的。这个功能对于运行在NTFS文件系统的Windows Server 2003或者Windows XP上的所有SQL Server 2005版本都适用。

  即使它是可用的,你的实例也可能不能配置使用。要解决这个问题,你应该给你的SQL Server服务账号或者SQLServerMSSQLUser$instancename这个本地组

  SE_MANAGE_VOLUME_NAME的权限。SQLServerMSSQLUser$instancename这个本地组创建于你安装SQL Server 2005并把SQL Server服务账号加到这个数据库中。要做到这些,服务账号和本地组需要被授予“Perform Volume Maintenance Task”的本地安全权限。默认情况下,本地管理员组已经有这个许可,所以如果你的服务账号已经是这个组的一员,那么你没必要去做什么事情。

 

  请注意,这只适用于数据文件而不适用于日志文件,所以如果你有大量的事务日志文件,而这些文件又作为你数据库备份的一部分,那么数据库文件会即时创建而日志文件不会。日志文件在被写回磁盘之前需要被清零。

  注意事项

  即使这个改进了autogrowth事件的文件增长性能,它不应作为正确排列你数据库文件来达到最小化的替代方法。如果不能避免,使其自动增长。另外,当SQL Server服务在运行时,如果你把这个权限给服务账号,那么为了使这个功能生效你必须停止并重启服务。你也可以通过运行gpupdate /force命令立即在安全策略中应用修改。

  这样做也有安全风险。存在这样的可能性,那就是你会通过未授权的账户访问磁盘上的非零数据。想像一个数据文件没有在磁盘上清零的被删除的数据库!如果因为自由访问控制列表(DACL)仅用于数据文件被SQL Server使用时而导致没有自由访问控制列表被定义在文件上,那么任何用户都可以访问这些数据。如果披露已删内容的可能性是受到关注的,那么建议当自由访问控制列表从SQL Server中分离时,在你的数据文件或备份上明确地使用受限制的自由访问控制列表。

  提示

   配置你的SQL Server 2005实例来使用即时文件初始化。

   在一个SQL Server 2005实例上,通过还原一个大型数据库(任何大于100GB)来测试它。

  在一个测试服务器上,不经过许可还原数据库备份并且衡量还原的时间。

  删除这个还原的数据库并停止SQL Server服务。

  把“Perform Volume Maintenance Task”授权给SQL Server服务账号并重启服务。

  再次还原数据库备份并且衡量还原的时间。

来源:http://www.tulaoshi.com/n/20160219/1620684.html

延伸阅读
final变量的初始化位置 一是其定义处,也就是说在final变量定义时直接给其赋值, 二是在构造函数中。而且在Java1.1以前,只能是在定义时给值。 三是在初如化代码块中{} 或者 static{} 代码如下: public class InitOrder {     {         System.out.println("before---field");  ...
一维数组的声明方式: type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为: 数组名 = new 数组元素的类型 [数组元素的个数] 实例: TestNew.java: 程序代码: public class TestNew {public static void main(String args[]) { int[] s ; int i ; s = new...
  全部引导过程是四步 1:boot PROM phase 2:boot Programs phase 3:kernel initialization phase 4:init phase system初始化,检测内存和cpu,检查设备和创建设备树,设置console kernel初始化过程 kernel self -initialization 内核自检 loading of kernel modules 载入内核模块 rea...
单一类:(静态成员变量&静态初始化块)(成员变量&初始化块)构造函数 代码如下: public class 对象初始化顺序 {     public static void main(String[] args){         Person p = new Person();     } } class Person{     public static String staticf...
在使用C++编程的过程当中,经常需要对类成员进行初始化,通常的方法有两种: 第一种方法: CMYClass::CSomeClass(){x=0;y=1;} 第二种方法: CSomeClass::CSomeClass() : x(0), y(1){} 本文将要探讨这两种方法的异同以及如何使用这两种方法。     从技术上说,第二种方法比较好,但是在大多数情况下,两者实际上没有什么区...

经验教程

874

收藏

99
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部