数据库快照大家都知道吗?是不是有很多人没深入研究过呀。那么我们就来动手实验一下Sql Server 2008 的数据库快照功能吧!
首先,先来简单介绍一下数据库快照。
数据库快照其实也是一个数据库,不过他是系统定义好格式的,不需要手动创建,配置过程中会由系统自动创建,这点要先了解。
其次,数据库快照使用NTFS分区所提供的稀疏文件技术,这样文件在逻辑上可以很大,但是物理上却非常小。数据库快照功能不会生成整个源数据库的完整副本,而是会将发生改变的数据页写入到快照数据库中。这样意味着如果数据库快照创建完成之后,源数据库没有发生任何更改,则快照数据库为空。这是数据库快照工作的基础。
下面我们就来做一个实验,实验中我们使用SalesDB这样一个数据库。这里顺便跟大家介绍一下SQL Server2008企业版中给大家提供的数据表和索引的分区功能,所以我们第一步先对SalesDB创建4个文件组。
附件:
image_thumb.png * SalesDB数据库,这个数据库数据量很大,完全备份192兆,这里就不给大家下载了,其实随便找一个数据库就行的。
创建文件组- USE SalesDB;
- GO
- -- Add first new filegroup with a single file.
- ALTER DATABASE [SalesDB]
- ADD FILEGROUP SalesDBSalesDataPartition1;
- GO
- ALTER DATABASE [SalesDB]
- ADD FILE
- (NAME = N'SalesDBSalesDataPartition1',
- FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\Data\SalesDBSalesDataPartition1.ndf',
- SIZE = 100,
- MAXSIZE = 120,
- FILEGROWTH = 10)
- TO FILEGROUP SalesDBSalesDataPartition1;
- GO
- PRINT 'Created SalesDBSalesDataPartition1';
- GO
- -- Add second new filegroup with a single file.
- ALTER DATABASE [SalesDB]
- ADD FILEGROUP SalesDBSalesDataPartition2;
- GO
- ALTER DATABASE [SalesDB]
- ADD FILE
- (NAME = N'SalesDBSalesDataPartition2',
- FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\Data\SalesDBSalesDataPartition2.ndf',
- SIZE = 100,
- MAXSIZE = 120,
- FILEGROWTH = 10)
- TO FILEGROUP SalesDBSalesDataPartition2;
- GO
- PRINT 'Created SalesDBSalesDataPartition2';
- GO
- -- Add third new filegroup with a single file.
- ALTER DATABASE [SalesDB]
- ADD FILEGROUP SalesDBSalesDataPartition3;
- GO
- ALTER DATABASE [SalesDB]
- ADD FILE
- (NAME = N'SalesDBSalesDataPartition3',
- FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\Data\SalesDBSalesDataPartition3.ndf',
- SIZE = 100,
- MAXSIZE = 120,
- FILEGROWTH = 10)
- TO FILEGROUP SalesDBSalesDataPartition3;
- GO
- PRINT 'Created SalesDBSalesDataPartition3';
- GO
- -- Add fourth new filegroup with a single file.
- ALTER DATABASE [SalesDB]
- ADD FILEGROUP SalesDBSalesDataPartition4;
- GO
- ALTER DATABASE [SalesDB]
- ADD FILE
- (NAME = N'SalesDBSalesDataPartition4',
- FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLDEV01\MSSQL\Data\SalesDBSalesDataPartition4.ndf',
- SIZE = 100,
- MAXSIZE = 120,
- FILEGROWTH = 10)
- TO FILEGROUP SalesDBSalesDataPartition4;
- GO
- PRINT 'Created SalesDBSalesDataPartition4';
- GO
- -- Create a partition function for four partitions.
- CREATE PARTITION FUNCTION Sales4Partitions_PFN(INT)
- AS RANGE RIGHT FOR VALUES
- (2000000,
- 4000000,
- 6000000);
- GO
- -- Create a partition scheme using the partition function.
- CREATE PARTITION SCHEME [Sales4Partitions_PS]
- AS PARTITION [Sales4Partitions_PFN] TO
- (SalesDBSalesDataPartition1,
- SalesDBSalesDataPartition2,
- SalesDBSalesDataPartition3,
- SalesDBSalesDataPartition4);
- GO
- -- Rebuild the clustered index of Sales using the partitioning scheme.
- CREATE UNIQUE CLUSTERED INDEX SalesPK ON Sales (SalesID)
- WITH (DROP_EXISTING = ON, ONLINE = ON)
- ON [Sales4Partitions_PS](SalesID);
- GO
复制代码运行上面代码创建4个文件组。文件组可以将数据库根据索引定义规则,分别将对应数据存放到指定数据文件当中去,是相当实用的功能。如果你正在为数据文件把分区占满了发愁的话,那么仔细研究下上面的代码吧,你可以去其他分区创建新的数据文件,将新增加的数据分到其他分区当中去。