SQLServer備份指令碼
企業管理器
--管理
--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
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
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
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資料庫中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22392018/viewspace-773984/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [SQLServer]NetCore中將SQLServer資料庫備份為Sql指令碼SQLServerNetCore資料庫指令碼
- 備份指令碼指令碼
- rman 備份指令碼指令碼
- mysql備份指令碼MySql指令碼
- ORACLE備份指令碼Oracle指令碼
- 自動備份指令碼指令碼
- windows mysqldump備份指令碼WindowsMySql指令碼
- expdp 邏輯備份指令碼指令碼
- 資料庫備份指令碼資料庫指令碼
- 兩套mysql備份指令碼MySql指令碼
- 關於SQLSERVER備份SQLServer
- SQLServer遠端備份SQLServer
- SQLServer 常用指令碼SQLServer指令碼
- oracle自動冷備份指令碼Oracle指令碼
- MySQL中binlog備份指令碼分享MySql指令碼
- 分享Oracle Rman的備份指令碼Oracle指令碼
- 使用shell 指令碼備份資料指令碼
- ORACLE常用定時備份指令碼Oracle指令碼
- SqlServer NBU備份出現錯誤程式碼2SQLServer
- 【SQLServer備份策略】透過Windows任務計劃程式清理SQLServer歷史備份SQLServerWindows
- Mysql定時備份資料指令碼MySql指令碼
- 檢查備份情況的指令碼指令碼
- 【MySQL】Xtrabackup備份及恢復指令碼MySql指令碼
- MySQL:Windows下分庫備份指令碼MySqlWindows指令碼
- windows 全量+增量備份指令碼batWindows指令碼BAT
- SqlServer備份和恢復(二)SQLServer
- SqlServer 備份和恢復(一)SQLServer
- mysqldump壓縮備份匯出匯入(含定期備份shell指令碼)MySql指令碼
- MySQL資料庫備份的shell指令碼MySql資料庫指令碼
- windows 批處理備份目錄指令碼Windows指令碼
- MySQL備份指令碼,應該這麼寫MySql指令碼
- oracle資料庫使用rman備份指令碼Oracle資料庫指令碼
- Windows環境PgSql自動備份指令碼WindowsSQL指令碼
- shell 備份檔案指令碼+自動清理指令碼
- linux mysql定時備份指令碼記錄LinuxMySql指令碼
- 【BASIS】HANA備份指令碼,Catalog自動清理指令碼
- SqlServer 備份集和備份片以及mirror的backup_set_idSQLServer
- Liunx備份mysql資料庫的shell指令碼MySql資料庫指令碼
- Mysqldump備份說明及資料庫備份指令碼分享-運維筆記MySql資料庫指令碼運維筆記