SQL Server 2000/2005非常有用的经典脚本

源代码在线查看: 11.3.3 数据库部分还原示例.sql

软件大小: 273 K
上传用户: downloader_006
关键词: Server 2000 2005 SQL
下载地址: 免注册下载 普通下载 VIP

相关代码

				--下面的示例创建名为db的示例数据库,并在该数据库中演示部分还原操作。db使用的是完全恢复模型。示例中演示了把文件组db_fg1还原为数据库db_a。
				
				USE master
				
				--创建测试数据库
				CREATE DATABASE db
				ON PRIMARY(
					NAME='db_data',
					FILENAME= 'c:\db_data.mdf'),
				FILEGROUP db_fg1(
					NAME = 'db_fg1_data',
					FILENAME = 'c:\db_fg1_data.ndf'),
				FILEGROUP db_fg2(
					NAME = 'db_fg2_data',
					FILENAME = 'c:\db_fg2_data.ndf')
				LOG ON(
					NAME='db_log',
					FILENAME ='c:\db.ldf')
				GO
				
				--备份数据库
				BACKUP DATABASE db TO DISK='c:\db.bak' WITH FORMAT
				GO
				
				--在文件组 db_fg1 上创建表 ta
				CREATE TABLE db.dbo.ta(id int) ON db_fg1
				--在文件组 db_fg2 上创建表 tb
				CREATE TABLE db.dbo.tb(id int) ON db_fg2
				GO
				
				--备份事务日志
				BACKUP LOG db TO DISK ='c:\db_log.bak' WITH FORMAT
				GO
				
				--如果因为某些要求只还原ta表,则使用RESTORE DATABASE语句配合WITH PARTIAL和NORECOVERY选项以另一个名称还原数据库和文件组db_fg1,另外,还将主文件和文件组primary、事务日志和已还原的文件组中的所有文件移到新位置。日志即得到恢复
				RESTORE DATABASE db_a 
					FILEGROUP='db_fg1' 
					FROM DISK='c:\db.bak' 
					WITH NORECOVERY,PARTIAL,
					MOVE 'db_data' TO 'c:\db_data_a.mdf',
					MOVE 'db_log' TO 'c:\db_log_a.ldf',
					MOVE 'db_fg1_data' TO 'c:\db_fg1_data_a.ndf'
				
				--恢复日志
				RESTORE LOG db_a FROM DISK='c:\db_log.bak' WITH RECOVERY
				--显示恢复结果
				SELECT COUNT(*) FROM db_a.dbo.ta
				/*--结果
				----------- 
				0
				
				(所影响的行数为 1 行)
				--*/
				GO
				
				--因为只恢复了文件组db_fg1,位于文件组db_fg2上的表tb无法被访问
				SELECT COUNT(*) FROM db_a.dbo.tb
				/*--将收到错误信息
				警告: 查询处理器无法生成计划,因为表 'db_a.dbo.tb' 已标记为 OFFLINE。
				--*/
				GO
				
				--删除测试
				DROP DATABASE db,db_a
							

相关资源