SQLSERVER2008R2 T-SQL備份指令碼
背景:
使用管理--->維護計劃-->新增備份計劃-->報錯:
訊息
已以使用者 FSLGZ\rfadmin 的身份執行。 Microsoft (R) SQL Server 執行包實用工具 Version 10.0.1600.22 for 64-bit 版權所有 (C) Microsoft Corp 1984-2005。保留所有權利。 SQL Server 執行包實用工具要求 Integration Services 由 SQL Server 2008 的以下某個版本安裝: Standard、Enterprise、Developer 或 Evaluation。若要安裝 Integration Services,請執行 SQL Server 安裝程式並選擇 Integration Services。. 包執行失敗。. 該步驟失敗。
經查,發現是在安裝資料庫時未安裝SSIS包,導致無法使用維護計劃來進行備份。
使用指令碼進行備份:
SQLSERVER2008R2
開啟SQL SERVER 代理--->作業--->新建作業--->在步驟處編寫T-SQL指令碼--->設定好計劃任務
T-SQL備份指令碼:
declare @device varchar(50);
declare @filename varchar(50);
declare @filename2 varchar(50);
declare @datetime varchar(50);
declare @weekname varchar(50);
declare @weeknametmp varchar(4);
declare @weekday int;
declare @database varchar(10);
set @weekname=datename(weekday,getdate());
set @datetime = convert(varchar(20),getdate(),112);
set @weeknametmp=substring(@weekname,3,1);
if (@weeknametmp='一')
set @weekday=1;
else if (@weeknametmp='二')
set @weekday=2;
else if (@weeknametmp='三')
set @weekday=3;
else if (@weeknametmp='四')
set @weekday=4;
else if (@weeknametmp='五')
set @weekday=5;
else if (@weeknametmp='六')
set @weekday=6;
else if (@weeknametmp='日')
set @weekday=0;
set @datetime = convert(varchar(20),getdate()-@weekday,112);
set @device= 'QQTT_backup' + @datetime; --備份裝置名,隨便命名吧
set @filename='D:\BACKUP\QQTT_backup'+@datetime+ '_all.bak' --備份檔案儲存路徑及檔名
set @filename2='E:\BACKUP\QQTT_backup'+@datetime+ '_all.bak'
set @filename3='D:\BACKUP\QQTT_backup'+@datetime+ '_incr.bak'
set @filename4='E:\BACKUP\QQTT_backup'+@datetime+ '_incr.bak'
set @database='QQTT'
if (@weekname='星期日')
begin
execute sp_addumpdevice 'disk',@device,@filename; --新增備份裝置
backup database @database to disk=@filename mirror to disk=@filename2 with format,init,checksum; --加上with checksum為校驗備份檔案的引數
--mirror to disk=XXX 表示映象備份,相當於在不同路徑做了2份一樣的備份
exec sp_dropdevice @device; --刪除備份裝置
end
else
begin
execute sp_addumpdevice 'disk',@device,@filename2;
backup database @database to disk=@filename3 mirror to disk=@filename4 with differential,format,init,checksum; --加上with differential為差異備份的引數
exec sp_dropdevice @device;
end
另外還可以新增其他引數:
WITH CHECKSUM --校驗備份檔案
WITH FORMAT --覆蓋任何現有的備份和建立一個新的媒體集,可以避免一些由於備份設定產生的錯誤.
WITH INIT --覆蓋同名的備份檔案
WITH COMPRESSION --壓縮備份
WITH DIFFERENTIAL --差異備份
WITH BUFFERCOUNT = 10 --指定用於備份操作的 I/O 緩衝區總數
WITH MAXTRANSFERSIZE = 4194304 --指定要在 SQL Server 和備份介質之間使用的最大傳輸單元(位元組)
取值範圍: 65536 位元組 (64 KB) 的倍數至4194304位元組(4M)
檢視所有備份裝置
select * from sys.backup_devices
刪除備份裝置
exec sp_dropdevice 'QQTT_backup20151009'
注意:
備份語句還可以備份多個備份集(存放多個目錄路徑)
例如:
BACKUP DATABASE [databasename]
TO DISK = 'C:\Backup\BakFile1.bak', DISK = 'C:\Backup\BakFile2.bak', WITH FORMAT, INIT, NAME = 'TEST-完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
也可以用變數替代
backup database @database to disk=@filename,disk=@filename2,@devicewith checksum;
使用管理--->維護計劃-->新增備份計劃-->報錯:
訊息
已以使用者 FSLGZ\rfadmin 的身份執行。 Microsoft (R) SQL Server 執行包實用工具 Version 10.0.1600.22 for 64-bit 版權所有 (C) Microsoft Corp 1984-2005。保留所有權利。 SQL Server 執行包實用工具要求 Integration Services 由 SQL Server 2008 的以下某個版本安裝: Standard、Enterprise、Developer 或 Evaluation。若要安裝 Integration Services,請執行 SQL Server 安裝程式並選擇 Integration Services。. 包執行失敗。. 該步驟失敗。
經查,發現是在安裝資料庫時未安裝SSIS包,導致無法使用維護計劃來進行備份。
使用指令碼進行備份:
SQLSERVER2008R2
開啟SQL SERVER 代理--->作業--->新建作業--->在步驟處編寫T-SQL指令碼--->設定好計劃任務
T-SQL備份指令碼:
declare @device varchar(50);
declare @filename varchar(50);
declare @filename2 varchar(50);
declare @datetime varchar(50);
declare @weekname varchar(50);
declare @weeknametmp varchar(4);
declare @weekday int;
declare @database varchar(10);
set @weekname=datename(weekday,getdate());
set @datetime = convert(varchar(20),getdate(),112);
set @weeknametmp=substring(@weekname,3,1);
if (@weeknametmp='一')
set @weekday=1;
else if (@weeknametmp='二')
set @weekday=2;
else if (@weeknametmp='三')
set @weekday=3;
else if (@weeknametmp='四')
set @weekday=4;
else if (@weeknametmp='五')
set @weekday=5;
else if (@weeknametmp='六')
set @weekday=6;
else if (@weeknametmp='日')
set @weekday=0;
set @datetime = convert(varchar(20),getdate()-@weekday,112);
set @device= 'QQTT_backup' + @datetime; --備份裝置名,隨便命名吧
set @filename='D:\BACKUP\QQTT_backup'+@datetime+ '_all.bak' --備份檔案儲存路徑及檔名
set @filename2='E:\BACKUP\QQTT_backup'+@datetime+ '_all.bak'
set @filename3='D:\BACKUP\QQTT_backup'+@datetime+ '_incr.bak'
set @filename4='E:\BACKUP\QQTT_backup'+@datetime+ '_incr.bak'
set @database='QQTT'
if (@weekname='星期日')
begin
execute sp_addumpdevice 'disk',@device,@filename; --新增備份裝置
backup database @database to disk=@filename mirror to disk=@filename2 with format,init,checksum; --加上with checksum為校驗備份檔案的引數
--mirror to disk=XXX 表示映象備份,相當於在不同路徑做了2份一樣的備份
exec sp_dropdevice @device; --刪除備份裝置
end
else
begin
execute sp_addumpdevice 'disk',@device,@filename2;
backup database @database to disk=@filename3 mirror to disk=@filename4 with differential,format,init,checksum; --加上with differential為差異備份的引數
exec sp_dropdevice @device;
end
另外還可以新增其他引數:
WITH CHECKSUM --校驗備份檔案
WITH FORMAT --覆蓋任何現有的備份和建立一個新的媒體集,可以避免一些由於備份設定產生的錯誤.
WITH INIT --覆蓋同名的備份檔案
WITH COMPRESSION --壓縮備份
WITH DIFFERENTIAL --差異備份
WITH BUFFERCOUNT = 10 --指定用於備份操作的 I/O 緩衝區總數
WITH MAXTRANSFERSIZE = 4194304 --指定要在 SQL Server 和備份介質之間使用的最大傳輸單元(位元組)
取值範圍: 65536 位元組 (64 KB) 的倍數至4194304位元組(4M)
檢視所有備份裝置
select * from sys.backup_devices
刪除備份裝置
exec sp_dropdevice 'QQTT_backup20151009'
注意:
備份語句還可以備份多個備份集(存放多個目錄路徑)
例如:
BACKUP DATABASE [databasename]
TO DISK = 'C:\Backup\BakFile1.bak', DISK = 'C:\Backup\BakFile2.bak', WITH FORMAT, INIT, NAME = 'TEST-完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
也可以用變數替代
backup database @database to disk=@filename,disk=@filename2,@devicewith checksum;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-1813610/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- rman備份和增量備份指令碼指令碼
- ORACLE備份指令碼Oracle指令碼
- mysqldump 備份指令碼MySql指令碼
- rman 備份指令碼指令碼
- mysqldump備份指令碼MySql指令碼
- innobackupex備份指令碼指令碼
- SQLServer備份指令碼SQLServer指令碼
- SQL 備份指令碼SQL指令碼
- Mongodb 備份指令碼MongoDB指令碼
- rman備份指令碼指令碼
- oracle 備份指令碼Oracle指令碼
- mysql備份指令碼MySql指令碼
- windows mysqldump備份指令碼WindowsMySql指令碼
- 自動備份指令碼指令碼
- mysql innobackupex備份指令碼MySql指令碼
- rman 全備份指令碼指令碼
- rman增量備份指令碼指令碼
- windows rman備份指令碼Windows指令碼
- Windows 快速備份指令碼Windows指令碼
- ORACLE日常備份指令碼Oracle指令碼
- RMAN常用備份指令碼指令碼
- Oracle 集中備份指令碼Oracle指令碼
- 生成熱備份指令碼指令碼
- 生成冷備份指令碼指令碼
- 備份指令碼--紀錄指令碼
- oracle RMAN備份指令碼Oracle指令碼
- EXP的備份指令碼指令碼
- oracle_備份指令碼Oracle指令碼
- MySQL備份之分庫分表備份指令碼MySql指令碼
- Oracle冷備份(一致備份)指令碼Oracle指令碼
- 兩套mysql備份指令碼MySql指令碼
- 資料庫備份指令碼資料庫指令碼
- mysql按表備份指令碼MySql指令碼
- [Oracle] rman備份指令碼(2)Oracle指令碼
- expdp 邏輯備份指令碼指令碼
- 檢視備份資訊指令碼指令碼
- oracle for linux 備份指令碼OracleLinux指令碼
- Oracle邏輯備份指令碼Oracle指令碼