备份脚本
-- ---创建测试库 --CREATE DATABASE testDB --USE testDB --CREATE TABLE [testTable]([id] INT,[name] VARCHAR(100)) --INSERT INTO [testTable] SELECT 1,'test' DECLARE @CurrentTime VARCHAR(50), @FileName VARCHAR(200) SET @CurrentTime = REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120 ),'-','_'),' ','_'),':','') --(test 数据库完整备份) SET @FileName = 'D:\SQLDB\Backup\test_FullBackup_' + @CurrentTime+'.bak' BACKUP DATABASE [testDB] TO DISK=@FileName WITH FORMAT ,COMPRESSION --(test 数据库日志备份) SET @FileName = 'D:\SQLDB\Backup\test_logBackup_' + @CurrentTime+'.bak' BACKUP log [testDB] TO DISK=@FileName WITH FORMAT ,COMPRESSION
主从还原备份
--如果在执行 RESTORE DATABASE 操作时遇到错误,如消息 3101(无法获得独占访问权)、消息 3013(异常终止)和消息 3117(无法还原日志或差异备份) --将数据库设置为单用户模式,以确保没有其他用户连接到数据库,从而获得独占访问权。使用以下 SQL 语句: --ALTER DATABASE testDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE; --在成功还原数据库后,将其恢复为多用户模式, --ALTER DATABASE testDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
----------------------------------------------------
--设备的硬件扇区大小为 4096,但块大小参数却指定了不兼容的替代值 512。请用兼容的块大小重新发出该语句,只改BLOCKSIZE = 512为BLOCKSIZE = 4096
--alter database xzccdev set multi_user
--RESTORE DATABASE [xzccdev]
--FROM DISK = N'D:\SQLDB\Backup\test_FullBackup_2026_01_13_174605.bak'
--WITH BLOCKSIZE = 4096, REPLACE, STATS = 5;
---------------------------------------------------------
USE [master] RESTORE DATABASE [testDB] FROM DISK = N'D:\SQLDB\Backup\test_FullBackup_2026_01_13_174605.bak' WITH FILE = 1, MOVE N'testDB' TO N'D:\SQLDB\Data\testDB.mdf', MOVE N'testDB_log' TO N'D:\SQLDB\Data\testDB_log.ldf', NOUNLOAD,NORECOVERY, REPLACE, STATS = 5 go --注意一定要用NORECOVERY来还原备份 USE [master] RESTORE DATABASE [testDB] FROM DISK = N'D:\SQLDB\Backup\test_logBackup_2026_01_13_174605.bak' WITH FILE = 1, NOUNLOAD,NORECOVERY, REPLACE, STATS = 5 --使用 RESTORE VERIFYONLY 命令验证备份文件的完整性。 --RESTORE VERIFYONLY FROM DISK = N'D:\SQLDB\Backup\test_FullBackup_2026_01_13_174605.bak'; --RESTORE VERIFYONLY FROM DISK = N'D:\SQLDB\Backup\test_logBackup_2026_01_13_174605.bak'; --查询状态 --SELECT name, state_desc FROM sys.databases WHERE name = 'testDB'; -- 如果在执行 RESTORE DATABASE 时使用了 WITH NORECOVERY 选项,主数据库会保持在“正在还原”状态,直到执行 WITH RECOVERY 命令为止。从库会不用该语句,会自动同步 --RESTORE DATABASE testDB WITH RECOVERY;
浙公网安备 33010602011771号