企業管理器
--管理
--SQL Server代理
--右鍵做業
--新建做業
--"常規"項中輸入做業名稱
--"步驟"項
--新建
--"步驟名"中輸入步驟名
--"類型"中選擇"Transact-SQL 腳本(TSQL)"
--"數據庫"選擇執行命令的數據庫
--"命令"中輸入要執行的語句:
--肯定
--"調度"項
--新建調度
--"名稱"中輸入調度名稱
--"調度類型"中選擇你的做業執行安排
--若是選擇"反覆出現"
--點"更改"來設置你的時間安排爲一天一次sql
而後將SQL Agent服務啓動,並設置爲自動啓動,不然你的做業不會被執行shell
設置方法:
個人電腦--控制面板--管理工具--服務--右鍵 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
GOui
/******************日誌備份做業*******************/
--日誌備份,每小時一次
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 @strrest
======================================================================
SQL還原
======================================================================
一、驗證備份
------------------------------------------------------------
restore headeronly from bak3
restore filelistonly from bak3 with file=1
restore labelonly from bak3
restore verifyonly from bak3
----------------------------------------------------------------------
二、從備份中還原
-------------------------------------------------------------------------
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
----------------------------------------------------------------------
三、分離與重鏈接數據庫
--------------------------------------
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
----------------------------------------------------------------------
四、恢復損壞的系統數據庫
----------------------------------------------------------------------
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數據庫中。日誌