故障恢复关键步骤与灾备方案设计 7月10日 星期四 15:00 云祺视频号准时直播
云祺直播二维码
扫码预约直播,观看精彩内容! 扫码预约直播,观看精彩内容!
关闭按钮
云祺Logo 云祺Logo
关于我们

技术分享

技术分享 sql server 数据库模型 备份 恢复 总结 备份脚本

sql server 数据库模型 备份 恢复 总结 备份脚本

2020-03-20

事务日志是可以基于时间点恢复的,必须在full或bulk_logged模式下
Alter database [DBName] set recover bulk_logged
, then the following operation will not be logged:
*SELECT INTO
*BULK COPY and Bulk Copy Program (BCP)
*CREATE INDEX
*特定文字操作

差异备份的数据文件不和数据备份的文件用一个文件,尽管可以
每一种备份模式下,备份的同时要备份master和msdb数据库
数据备份和清空日志没有关系,但清空日志要发生在事务日志备份之后,在这个之间

模式设置:
alter database CACDB_S1000 set recovery bulk_logged

数据备份:
backup database CACDB_S1000 to disk='E:\backup\data\CACDB_S1000_200801031245.data'

差异备份:
backup database CACDB_S1000 to disk=' E:\backup\diff\CACDB_S1000_200801031245.diff' with DIFFERENTIAL

清空日志:
DUMP TRANSACTION CACDB_S1000 WITH NO_LOG    
BACKUP LOG CACDB_S1000 WITH NO_LOG
DBCC SHRINKDATABASE (CACDB_S1000)

事务日志备份:
BACKUP LOG CACDB_S1000 to disk = ' E:\backup\log\CACDB_S1000_200801031245.log'

还原:
RESTORE DATABASE CACDB_S1000 FROM DISK = 'E:\backup\data\CACDB_S1000_200801031245.data' with NORECOVERY
RESTORE LOG CACDB_S1000 from disk = ' E:\backup\log\CACDB_S1000_200801031250.log'






备份脚本:
declare @sql varchar(8000), @name varchar(255), @type varchar(255), @sqlT nvarchar(4000)

declare x cursor for select name from master.dbo.sysdatabases
open x

fetch next from x into @name
while(@@fetch_status = 0)
begin
        if(@name <> 'tempdb')
        begin
                print @name
                set @sql = 'backup database '+@name+' to disk=''D:\backup_20080421\'
                set @sql = @sql + @name + '_20080421117.data'''
                exec(@sql)
                set @sqlT = 'SELECT DATABASEPROPERTYEX('''+@name+''',''Recovery'')'
                exec sp_executesql @sqlT,N'@type varchar(255) out',@type out
                if(@type <> 'SIMPLE')
                begin
                        set @sql = 'backup log '+@name+' to disk=''D:\backup_20080421\'
                        set @sql = @sql + @name + '_20080421117.log'''
                        exec(@sql)
                end
        end
        fetch next from x into @name
end

close x
deallocate x





备份再还原时遇到 设备激活错误 之类的问题,解决方案:
(原因,同名数据库的文件逻辑名不一样)
sql server手动创建的数据库,例dbtest,会带上_Data,结果文件逻辑名为dbtest_Data
程序自动创建的,如果照sql server手册写,文件逻辑名为dbtest_dat
手动创建时,没有指定参数,文件逻辑名为dbtest

这样备份后再还原时,就会出错,因为'被还原的库的文件逻辑名'与'备份文件中的文件逻辑名'不对应

RESTORE FILELISTONLY

来显示文件逻辑名和物理文件名的对应关系


alter database 数据库名
modify file (
name=逻辑名
,newname=新逻辑名
)

来改变文件逻辑名

如果遇到文件路径的问题,可以restore database 的时候,带上with move/,move参数

云祺备份软件,云祺容灾备份系统,虚拟机备份,数据库备份,文件备份,实时备份,勒索软件,美国,图书馆
  • 标签:
  • 容灾备份

您可能感兴趣的新闻 换一批

现在下载,可享30天免费试用

立即下载

请添加好友为您提供支持
jia7jia_7

微信售后服务二维码

请拨打电话
为您提供支持

400-9955-698