1:企业管理器 2: /************ 备份 恢复 ******* backup database sys to disk='c:\目录\a.bak' with init 调用存储过程xp_CmdShell: master..xp_cmdShell 'bcp pubs..authors2 out c:\authors.txt -Sservername -Usa -Ppassword'--还原 use master RESTORE DATABASE TestDB FROM DISK = 'c:\目录\a.bak'
A. 备份整个 MyNwind 数据库 说明 MyNwind 数据库仅用于演示。 下例创建用于存放 MyNwind 数据库完整备份的逻辑备份设备。-- Create a logical backup device for the full MyNwind backup. USE master EXEC sp_addumpdevice 'disk', 'MyNwind_1', DISK ='c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind_1.dat'-- Back up the full MyNwind database. BACKUP DATABASE MyNwind TO MyNwind_1B. 备份数据库和日志 本例创建了一个数据库和日志的完整备份。将数据库备份到称为 MyNwind_2 的逻辑备份设备上,然后将日志备份到称为 MyNwindLog1 的逻辑备份设备上。 说明 创建逻辑备份设备需要一次完成。 -- Create the backup device for the full MyNwind backup. USE master EXEC sp_addumpdevice 'disk', 'MyNwind_2', 'c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind_2.dat'--Create the log backup device. USE master EXEC sp_addumpdevice 'disk', 'MyNwindLog1', 'c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwindLog1.dat'-- Back up the full MyNwind database. BACKUP DATABASE MyNwind TO MyNwind_2-- Update activity has occurred since the full database backup.-- Back up the log of the MyNwind database. BACKUP LOG MyNwind TO MyNwindLog1
A. 还原完整数据库 说明 MyNwind 数据库仅供举例说明。 下例显示还原完整数据库备份。RESTORE DATABASE MyNwind FROM MyNwind_1B. 还原完整数据库备份和差异备份 下例还原完整数据库备份后还原差异备份。另外,下例还说明如何还原媒体上的另一个备份集。差异备份追加到包含完整数据库备份的备份设备上。RESTORE DATABASE MyNwind FROM MyNwind_1 WITH NORECOVERY RESTORE DATABASE MyNwind FROM MyNwind_1 WITH FILE = 2C. 使用 RESTART 语法还原数据库 下例使用 RESTART 选项重新启动因服务器电源故障而中断的 RESTORE 操作。-- This database RESTORE halted prematurely due to power failure. RESTORE DATABASE MyNwind FROM MyNwind_1 -- Here is the RESTORE RESTART operation. RESTORE DATABASE MyNwind FROM MyNwind_1 WITH RESTARTD. 还原数据库并移动文件 下例还原完整数据库和事务日志,并将已还原的数据库移动到 C:\Program Files\Microsoft SQL Server\MSSQL\Data 目录下。RESTORE DATABASE MyNwind FROM MyNwind_1 WITH NORECOVERY, MOVE 'MyNwind' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf', MOVE 'MyNwindLog1' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf' RESTORE LOG MyNwind FROM MyNwindLog1 WITH RECOVERYE. 使用 BACKUP 和 RESTORE 创建数据库的复本 下例显示使用 BACKUP 和 RESTORE 语句创建 Northwind 数据库的复本。MOVE 语句使数据和日志文件还原到指定的位置。RESTORE FILELISTONLY 语句用于确定待还原数据库内的文件数及名称。该数据库的新复本称为 TestDB。有关更多信息,请参见 RESTORE FILELISTONLY。 BACKUP DATABASE Northwind TO DISK = 'c:\Northwind.bak' RESTORE FILELISTONLY FROM DISK = 'c:\Northwind.bak' RESTORE DATABASE TestDB FROM DISK = 'c:\Northwind.bak' WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf', MOVE 'Northwind_log' TO 'c:\test\testdb.ldf' GOF. 使用 STOPAT 语法还原到即时点和使用多个设备进行还原 下例将数据库还原到其在 1998 年 4 月 15 日中午 12 点时的状态,并显示涉及多个日志和多个备份设备的还原操作。RESTORE DATABASE MyNwind FROM MyNwind_1, MyNwind_2 WITH NORECOVERY RESTORE LOG MyNwind FROM MyNwindLog1 WITH NORECOVERY RESTORE LOG MyNwind FROM MyNwindLog2 WITH RECOVERY, STOPAT = 'Apr 15, 1998 12:00 AM'G. 使用 TAPE 语法还原 下例显示从 TAPE 备份设备还原完整数据库备份。RESTORE DATABASE MyNwind FROM TAPE = '\\.\tape0'H. 使用 FILE 和 FILEGROUP 语法还原 下例还原一个包含两个文件、一个文件组和一个事务日志的数据库。RESTORE DATABASE MyNwind FILE = 'MyNwind_data_1', FILE = 'MyNwind_data_2', FILEGROUP = 'new_customers' FROM MyNwind_1 WITH NORECOVERY -- Restore the log backup. RESTORE LOG MyNwind FROM MyNwindLog1I. 将事务日志还原到标记处 下例显示将事务日志还原到名为"RoyaltyUpdate"的标记处。BEGIN TRANSACTION RoyaltyUpdate WITH MARK 'Update royalty values' GO USE pubs GO UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'PC%' GO COMMIT TRANSACTION RoyaltyUpdate GO --Time passes. Regular database --and log backups are taken. --An error occurs. USE master GORESTORE DATABASE pubs FROM Pubs1 WITH FILE = 3, NORECOVERY GO RESTORE LOG pubs FROM Pubs1 WITH FILE = 4, STOPATMARK = 'RoyaltyUpdate'
--查看备份信息 RESTORE FILELISTONLY FROM DISK ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup'--还原旧的备份 RESTORE DATABASE db2 FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup' with replace,norecovery, move 'db1_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_data.mdf', move 'db1_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_log.ldf' 其中db2_data.mdf和db2_log.ldf是要的还原数据库的位置,db1_Data和db1_Log是要还原数据库的逻辑文件名--还原数据日志到时间点 restore log db2 from disk='db_log_backup' with stopat='2003/4/22 9:57'
2:
/************ 备份 恢复 *******
backup database sys to disk='c:\目录\a.bak' with init
调用存储过程xp_CmdShell:
master..xp_cmdShell 'bcp pubs..authors2 out c:\authors.txt -Sservername -Usa -Ppassword'--还原
use master
RESTORE DATABASE TestDB FROM DISK = 'c:\目录\a.bak'
说明 MyNwind 数据库仅用于演示。
下例创建用于存放 MyNwind 数据库完整备份的逻辑备份设备。-- Create a logical backup device for the full MyNwind backup.
USE master
EXEC sp_addumpdevice 'disk', 'MyNwind_1',
DISK ='c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind_1.dat'-- Back up the full MyNwind database.
BACKUP DATABASE MyNwind TO MyNwind_1B. 备份数据库和日志
本例创建了一个数据库和日志的完整备份。将数据库备份到称为 MyNwind_2 的逻辑备份设备上,然后将日志备份到称为 MyNwindLog1 的逻辑备份设备上。 说明 创建逻辑备份设备需要一次完成。
-- Create the backup device for the full MyNwind backup.
USE master
EXEC sp_addumpdevice 'disk', 'MyNwind_2',
'c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind_2.dat'--Create the log backup device.
USE master
EXEC sp_addumpdevice 'disk', 'MyNwindLog1',
'c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwindLog1.dat'-- Back up the full MyNwind database.
BACKUP DATABASE MyNwind TO MyNwind_2-- Update activity has occurred since the full database backup.-- Back up the log of the MyNwind database.
BACKUP LOG MyNwind
TO MyNwindLog1
说明 MyNwind 数据库仅供举例说明。
下例显示还原完整数据库备份。RESTORE DATABASE MyNwind
FROM MyNwind_1B. 还原完整数据库备份和差异备份
下例还原完整数据库备份后还原差异备份。另外,下例还说明如何还原媒体上的另一个备份集。差异备份追加到包含完整数据库备份的备份设备上。RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH FILE = 2C. 使用 RESTART 语法还原数据库
下例使用 RESTART 选项重新启动因服务器电源故障而中断的 RESTORE 操作。-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE MyNwind
FROM MyNwind_1
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE MyNwind
FROM MyNwind_1 WITH RESTARTD. 还原数据库并移动文件
下例还原完整数据库和事务日志,并将已还原的数据库移动到 C:\Program Files\Microsoft SQL Server\MSSQL\Data 目录下。RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY,
MOVE 'MyNwind' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf',
MOVE 'MyNwindLog1' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf'
RESTORE LOG MyNwind
FROM MyNwindLog1
WITH RECOVERYE. 使用 BACKUP 和 RESTORE 创建数据库的复本
下例显示使用 BACKUP 和 RESTORE 语句创建 Northwind 数据库的复本。MOVE 语句使数据和日志文件还原到指定的位置。RESTORE FILELISTONLY 语句用于确定待还原数据库内的文件数及名称。该数据库的新复本称为 TestDB。有关更多信息,请参见 RESTORE FILELISTONLY。 BACKUP DATABASE Northwind
TO DISK = 'c:\Northwind.bak'
RESTORE FILELISTONLY
FROM DISK = 'c:\Northwind.bak'
RESTORE DATABASE TestDB
FROM DISK = 'c:\Northwind.bak'
WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
GOF. 使用 STOPAT 语法还原到即时点和使用多个设备进行还原
下例将数据库还原到其在 1998 年 4 月 15 日中午 12 点时的状态,并显示涉及多个日志和多个备份设备的还原操作。RESTORE DATABASE MyNwind
FROM MyNwind_1, MyNwind_2
WITH NORECOVERY
RESTORE LOG MyNwind
FROM MyNwindLog1
WITH NORECOVERY
RESTORE LOG MyNwind
FROM MyNwindLog2
WITH RECOVERY, STOPAT = 'Apr 15, 1998 12:00 AM'G. 使用 TAPE 语法还原
下例显示从 TAPE 备份设备还原完整数据库备份。RESTORE DATABASE MyNwind
FROM TAPE = '\\.\tape0'H. 使用 FILE 和 FILEGROUP 语法还原
下例还原一个包含两个文件、一个文件组和一个事务日志的数据库。RESTORE DATABASE MyNwind
FILE = 'MyNwind_data_1',
FILE = 'MyNwind_data_2',
FILEGROUP = 'new_customers'
FROM MyNwind_1
WITH NORECOVERY
-- Restore the log backup.
RESTORE LOG MyNwind
FROM MyNwindLog1I. 将事务日志还原到标记处
下例显示将事务日志还原到名为"RoyaltyUpdate"的标记处。BEGIN TRANSACTION RoyaltyUpdate
WITH MARK 'Update royalty values'
GO
USE pubs
GO
UPDATE roysched
SET royalty = royalty * 1.10
WHERE title_id LIKE 'PC%'
GO
COMMIT TRANSACTION RoyaltyUpdate
GO
--Time passes. Regular database
--and log backups are taken.
--An error occurs.
USE master
GORESTORE DATABASE pubs
FROM Pubs1
WITH FILE = 3, NORECOVERY
GO
RESTORE LOG pubs
FROM Pubs1
WITH FILE = 4,
STOPATMARK = 'RoyaltyUpdate'
RESTORE FILELISTONLY FROM DISK ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup'--还原旧的备份
RESTORE DATABASE db2 FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup' with replace,norecovery,
move 'db1_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_data.mdf',
move 'db1_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_log.ldf' 其中db2_data.mdf和db2_log.ldf是要的还原数据库的位置,db1_Data和db1_Log是要还原数据库的逻辑文件名--还原数据日志到时间点
restore log db2 from disk='db_log_backup' with stopat='2003/4/22 9:57'
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]2.不需要,
[ WITH
[ RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]3.NORECOVERY指示还原操作不回滚任何未提交的事务。如果需要应用另一个事务日志,则必须指定 NORECOVERY 或 STANDBY 选项。如果 NORECOVERY、RECOVERY 和 STANDBY 均未指定,则默认为 RECOVERY。当还原数据库备份和多个事务日志时,或在需要多个 RESTORE 语句时(例如在完整数据库备份后进行差异数据库备份),SQL Server 要求在除最后的 RESTORE 语句外的所有其它语句上使用 WITH NORECOVERY 选项。说明 如果指定 NORECOVERY 选项,数据库将处于这个中间的未恢复状态而不可用。
当用于文件或文件组还原操作时,NORECOVERY 强制数据库在还原操作结束后保持还原状态。这在以下情况中很有用: 还原脚本正在运行并且始终要应用日志。
使用文件还原序列,并且在两次还原操作之间不能使用数据库。
4.
--查看备份信息
RESTORE FILELISTONLY FROM DISK ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup'--还原旧的备份
RESTORE DATABASE db2 FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup' with replace,norecovery,
move 'db1_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_data.mdf',
move 'db1_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_log.ldf' 其中db2_data.mdf和db2_log.ldf是要的还原数据库的位置,db1_Data和db1_Log是要还原数据库的逻辑文件名--还原数据日志到时间点
restore log db2 from disk='db_log_backup' with stopat='2003/4/22 9:57'