数据库快照大家都知道吗?是不是有很多人没深入研究过呀。那么我们就来动手实验一下Sql Server 2008 的数据库快照功能吧!

    首先,先来简单介绍一下数据库快照。

    数据库快照其实也是一个数据库,不过他是系统定义好格式的,不需要手动创建,配置过程中会由系统自动创建,这点要先了解。

    其次,数据库快照使用NTFS分区所提供的稀疏文件技术,这样文件在逻辑上可以很大,但是物理上却非常小。数据库快照功能不会生成整个源数据库的完整副本,而是会将发生改变的数据页写入到快照数据库中。这样意味着如果数据库快照创建完成之后,源数据库没有发生任何更改,则快照数据库为空。这是数据库快照工作的基础。

    下面我们就来做一个实验,实验中我们使用SalesDB这样一个数据库。这里顺便跟大家介绍一下SQL Server2008企业版中给大家提供的数据表和索引的分区功能,所以我们第一步先对SalesDB创建4个文件组。


附件: image_thumb.png


* SalesDB数据库,这个数据库数据量很大,完全备份192兆,这里就不给大家下载了,其实随便找一个数据库就行的。

创建文件组
  1. USE SalesDB;
  2. GO

  3. -- Add first new filegroup with a single file.
  4. ALTER DATABASE [SalesDB]
  5.     ADD FILEGROUP SalesDBSalesDataPartition1;
  6. GO

  7. ALTER DATABASE [SalesDB]
  8.     ADD FILE
  9.         (NAME = N'SalesDBSalesDataPartition1',
  10.         FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\Data\SalesDBSalesDataPartition1.ndf',
  11.         SIZE = 100,
  12.         MAXSIZE = 120,
  13.         FILEGROWTH = 10)
  14.     TO FILEGROUP SalesDBSalesDataPartition1;
  15. GO

  16. PRINT 'Created SalesDBSalesDataPartition1';
  17. GO

  18. -- Add second new filegroup with a single file.
  19. ALTER DATABASE [SalesDB]
  20.     ADD FILEGROUP SalesDBSalesDataPartition2;
  21. GO

  22. ALTER DATABASE [SalesDB]
  23.     ADD FILE
  24.         (NAME = N'SalesDBSalesDataPartition2',
  25.         FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\Data\SalesDBSalesDataPartition2.ndf',
  26.         SIZE = 100,
  27.         MAXSIZE = 120,
  28.         FILEGROWTH = 10)
  29.     TO FILEGROUP SalesDBSalesDataPartition2;
  30. GO

  31. PRINT 'Created SalesDBSalesDataPartition2';
  32. GO

  33. -- Add third new filegroup with a single file.
  34. ALTER DATABASE [SalesDB]
  35.     ADD FILEGROUP SalesDBSalesDataPartition3;
  36. GO

  37. ALTER DATABASE [SalesDB]
  38.     ADD FILE
  39.         (NAME = N'SalesDBSalesDataPartition3',
  40.         FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\Data\SalesDBSalesDataPartition3.ndf',
  41.         SIZE = 100,
  42.         MAXSIZE = 120,
  43.         FILEGROWTH = 10)
  44.     TO FILEGROUP SalesDBSalesDataPartition3;
  45. GO

  46. PRINT 'Created SalesDBSalesDataPartition3';
  47. GO

  48. -- Add fourth new filegroup with a single file.
  49. ALTER DATABASE [SalesDB]
  50.     ADD FILEGROUP SalesDBSalesDataPartition4;
  51. GO

  52. ALTER DATABASE [SalesDB]
  53.     ADD FILE
  54.         (NAME = N'SalesDBSalesDataPartition4',
  55.         FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\Data\SalesDBSalesDataPartition4.ndf',
  56.         SIZE = 100,
  57.         MAXSIZE = 120,
  58.         FILEGROWTH = 10)
  59.     TO FILEGROUP SalesDBSalesDataPartition4;
  60. GO

  61. PRINT 'Created SalesDBSalesDataPartition4';
  62. GO

  63. -- Create a partition function for four partitions.
  64. CREATE PARTITION FUNCTION Sales4Partitions_PFN(INT)
  65. AS RANGE RIGHT FOR VALUES
  66.     (2000000,
  67.     4000000,
  68.     6000000);
  69. GO

  70. -- Create a partition scheme using the partition function.
  71. CREATE PARTITION SCHEME [Sales4Partitions_PS]
  72. AS PARTITION [Sales4Partitions_PFN] TO
  73.     (SalesDBSalesDataPartition1,
  74.     SalesDBSalesDataPartition2,
  75.     SalesDBSalesDataPartition3,
  76.     SalesDBSalesDataPartition4);
  77. GO

  78. -- Rebuild the clustered index of Sales using the partitioning scheme.
  79. CREATE UNIQUE CLUSTERED INDEX SalesPK ON Sales (SalesID)
  80.     WITH (DROP_EXISTING = ON, ONLINE = ON)
  81.     ON [Sales4Partitions_PS](SalesID);
  82. GO
复制代码
运行上面代码创建4个文件组。文件组可以将数据库根据索引定义规则,分别将对应数据存放到指定数据文件当中去,是相当实用的功能。如果你正在为数据文件把分区占满了发愁的话,那么仔细研究下上面的代码吧,你可以去其他分区创建新的数据文件,将新增加的数据分到其他分区当中去。
TOP