SQLServer備份腳本語句

轉自:https://www.cnblogs.com/accumulater/p/6214407.html 

如有雷同,純屬意外 

企業管理器
--管理
--SQL Server代理
--右鍵作業
--新建作業
--"常規"項中輸入作業名稱
--"步驟"項
--新建
--"步驟名"中輸入步驟名
--"類型"中選擇"Transact-SQL 腳本(TSQL)"
--"數據庫"選擇執行命令的數據庫
--"命令"中輸入要執行的語句:
                      
--確定
--"調度"項
--新建調度
--"名稱"中輸入調度名稱
--"調度類型"中選擇你的作業執行安排
--如果選擇"反覆出現"
--點"更改"來設置你的時間安排爲一天一次


然後將SQL Agent服務啓動,並設置爲自動啓動,否則你的作業不會被執行

設置方法:
我的電腦--控制面板--管理工具--服務--右鍵 SQLSERVERAGENT--屬性--啓動類型--選擇"自動啓動"--確定.

 

/*******************完整備份作業*******************/
--完整備份,每週一次
USE Master
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\FullBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.bak'
BACKUP DATABASE [demo] TO DISK=@str
WITH RETAINDAYS=15,NOFORMAT,NOINIT,
NAME=N'Demo完整備份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

 


/*******************差異備份作業*******************/
--截斷日誌
USE Master
GO
BACKUP LOG Demo  WITH NO_LOG
GO
--收縮日誌文件
USE Demo
GO
DBCC SHRINKFILE (N'Demo_log',0,TRUNCATEONLY)
GO
--差異備份,每天一次
USE Master
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\DiffBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.diff'
BACKUP DATABASE [Demo] TO DISK=@str
WITH DIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,
NAME=N'Demo差異備份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

 


/******************日誌備份作業*******************/
--日誌備份,每小時一次
USE Demo
GO
declare @str varchar(100)
set @str='D:\DBtext\jgj\DBABak\logbak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.trn'
BACKUP LOG [Demo] TO DISK=@str
WITH RETAINDAYS=3,NOFORMAT,NOINIT,
NAME=N'Demo日誌備份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

 


--刪除過期的備份文件,每天兩次
declare @str varchar(100),@dir varchar(100),@fileName varchar(30)
set @dir='del D:\DBtext\jgj\DBABak\'
set @filename=left(replace(replace(replace(convert(varchar,getdate()-15,20),'-',''),' ',''),':',''),8)
set @str=@dir+'fullbak'+@filename+'*.bak'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
set @str=@dir+'diffbak'+@filename+'*.diff'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
set @str=@dir+'logbak'+@filename+'*.trn'
exec xp_cmdshell @str

 

====================================================================== 
SQL還原 
====================================================================== 
1、驗證備份 
------------------------------------------------------------ 
restore headeronly from bak3 
restore filelistonly from bak3 with file=1 
restore labelonly from bak3 
restore verifyonly from bak3 
---------------------------------------------------------------------- 
2、從備份中還原 
------------------------------------------------------------------------- 
restore headeronly from bak1 
restore database d1 from bak1 with file=2        --從完全備份中恢復 
---------------------------------------------------------------------- 
restore headeronly from bak2              --從差異備份中恢復 
restore database d2 from bak2 with file=1,norecovery    
restore database d2 from bak2 with file=5,recovery 
---------------------------------------------------------------------- 
restore headeronly from bak3              --從日誌備份中恢復 
restore database d3 from bak3 with file=1,norecovery 
restore log    d3 from bak3 with file=2,norecovery 
restore log    d3 from bak3 with file=3,norecovery 
restore log    d3 from bak3 with file=4,norecovery 
restore log    d3 from bak3 with file=5,recovery 
---------------------------------------------------------------------- 
restore database d3 from bak3 with file=1,norecovery      --恢復到指定時間 
restore log    d3 from bak3 with file=2,norecovery 
restore log    d3 from bak3 with file=3,norecovery 
restore log    d3 from bak3 with file=4,recovery,stopat='2003-08-15 11:29:00.000' 
---------------------------------------------------------------------- 
restore database d5 filegroup='FG2' from bak5 with file=4,norecovery --還原文件組備份 
restore log d5 from bak5 with file=5,norecovery 
restore log d5 from bak5 with file=7,recovery 
---------------------------------------------------------------------- 
restore headeronly from bak6                --還原文件備份 
restore database d5 file='d5_data3' from bak6 with file=6,norecovery 
restore log d5 from bak6 with file=7,norecovery 
restore log d5 from bak6 with file=9,recovery 
---------------------------------------------------------------------- 
restore database d5 from bak6 with replace    --刪除現有數據庫,從備份中重建數據庫 
---------------------------------------------------------------------- 
create database d6            --move to將數據庫文件移動到新位置 
on primary 
(name=d6_data, 
filename='E:\Program Files\Microsoft SQL Server\MSSQL\data\d6_Data.MDF', 
size=2MB) 
log on 
(name=d6_log, 
filename='E:\Program Files\Microsoft SQL Server\MSSQL\data\d6_log.ldf', 
size=2MB) 
go 
backupdatabase d6 to bak6 with init 
drop database d6 
restore database d6 from bak6 
with move 'd6_data' to 'e:\data\d6\d6_data.mdf', 
move 'd6_log'to 'e:\data\d6\d6_log.ldf' 
sp_helpdb d6 
---------------------------------------------------------------------- 
3、分離與重連接數據庫 
-------------------------------------- 
sp_detach_db 'd6'        
sp_attach_db 'd6','e:\data\d6\d6_data.mdf','e:\data\d6\d6_log.ldf' 
-------------------------------------- 
sp_detach_db d6 
go 
create database d6 
on primary 
(filename='e:\data\d6\d6_data.mdf') 
for attach 
go 
---------------------------------------------------------------------- 
4、恢復損壞的系統數據庫 
---------------------------------------------------------------------- 
1)先備份MASTER、MSDB 
2)停止SQL服務,將MASTER數據庫文件刪除或者重命名。這樣,SQL服務將不能啓動。 
3)系統數據庫的還原 
----------------------------------------------- 
(1)如果SQL服務還能啓動,則從備份中恢復系統數據庫。 
(2)如果SQL服務不能啓動,則需要重建系統數據庫。 
使用SQL文件夾TOOLS\BINN目錄下的Rebuildm.exe重建master數據庫。 
(3)創建備份設備,指向以前的備份設備。 
(4)以單用戶模式啓動SQL 
cd programe files\microsoft sql server\mssql\binn 
sqlservr.exe -c -m 
(5)進查詢分析器,從備份中恢復master數據庫。 
restore database master from masterbak 
restore database msdb from disk='e:\bak\msdb.bak' 
MASTER還原後,SQL中用戶數據庫的信息也會恢復。 
(6)如果MASTER沒有備份,則需要用sp_attach_db命令將用戶數據庫附加到新的MASTER數據庫中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章