SQLSERVER備份指令碼

2021-09-20 22:49:41 字數 2182 閱讀 6565

看網上的例子寫的sqlserver資料庫備份指令碼,這個指令碼不是很好,不能刪除以前備份的。

declare @currentdatabasename nvarchar(100)

declare @currentbackfolder nvarchar(200)

declare @weekday varchar(20)

declare @currentbackstring nvarchar(2000)

declare @day varchar(20)

--select getdate() as 'current date'

set @day=convert(varchar(100),getdate(),112)

set @weekday = datepart(weekday, getdate())

set @currentbackfolder='d:\test'

--set @currentdatabasename='ceshi'

--+convert(varchar(50),getdate(),112),dbid

--select * from   master..sysdatabases   where   dbid>=7

--weekday 1 表示星期日

if @weekday = '1'

begin

declare tb cursor local for select name from master..sysdatabases where   dbid>=7;

open tb

fetch next from tb into @currentdatabasename

while @@fetch_status=0

begin

set @currentbackstring='

use [master]

backup database ['+@currentdatabasename+']  to disk = '''+@currentbackfolder+'\'+@currentdatabasename+'.bak'' with noformat, noinit,name='''+@currentdatabasename+'-'+@day+''',skip, norewind,nounload;';

print @currentbackstring;

exec sp_executesql @currentbackstring;

print '備份資料庫'+@currentdatabasename +'完成';

fetch next from tb into @currentdatabasename

endclose tb

deallocate tb

print '備份所有資料庫完成'

endelse

begin

declare tb cursor local for select name from master..sysdatabases where   dbid>=7;

open tb

fetch next from tb into @currentdatabasename

while @@fetch_status=0

begin

set @currentbackstring='

use [master]

backup database ['+@currentdatabasename+']  to disk = '''+@currentbackfolder+'\'+@currentdatabasename+'.bak'' with noformat, noinit,name='''+@currentdatabasename+'-'+@day+'-diff'',differential,skip,

norewind, nounload,retaindays=6;';

print @currentbackstring;

exec sp_executesql @currentbackstring;

print '差異備份資料庫'+@currentdatabasename +'完成';

fetch next from tb into @currentdatabasename

endclose tb

deallocate tb

print '差異備份所有資料庫完成'

end

SQL Server自動備份指令碼

這幾天在給企業培訓時,幫助他們寫了乙個備份的指令碼,留給大家分享吧。此指令碼的目的是,每週日做完全備份,每週一到週六做差異備份,每週的備份寫入到乙個備份裝置當中,備份裝置起名規則為 備份裝置名 週日日期 下週備份再重新備份到乙個新的備份裝置中。此指令碼編寫完以後,可以做成作業,讓它每天自動完成就可以...

SqlServer整庫備份還原指令碼

一。整備資料庫 指令碼分為兩部分,一部分是批處理檔案 dbbak.bat 一部分為sql檔案 dbbak.sql 兩個檔案要放在同乙個目錄下。批處理檔案中為主檔案,真正的資料庫備份操作是在sql檔案中完成的。1.批處理檔案內容 sqlcmd s 192.168.56.36 usa ppassword...

Sqlserver 資料庫 指令碼備份和還原

完全備份 backup database cpas to disk g 20210317 bak cpas bak full.bak with init use master go 宣告變數 declare dbname nvarchar max cpas1 declare dbfullname n...