创建快照数据库

 创建作业时定执行SP:up_GenSnapshotDB,就可以创建快照数据库了

USE [master]
GO

/****** Object:  StoredProcedure [dbo].[up_GenSnapshotDB]    Script Date: 2021-5-6 11:15:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


create proc [dbo].[up_GenSnapshotDB](
	@DatabaseList varchar(1000),  --要快照的数据库中列表多个数据库“,”分开如: test,test1
	@FilePath NVARCHAR(1000),    --快照文件路径
	@RetPolicy int                --保留最近几个快照的数据库
)
as

/*
declare 
	@DatabaseList varchar(1000)= 'N205,jWMS',
	@FilePath NVARCHAR(1000)='G:\',
	@RetPolicy int=3

--*/

drop table if exists #dblist
select databasename=value,rid=ROW_NUMBER()over(order by value)
into #dblist
from string_split(@DatabaseList,',')
where value>''

declare @sql nvarchar(4000)='',@i int,@max int,@databasename nvarchar(50)
declare @Time nvarchar(50)

select @i=1,@max=max(rid) from #dblist

while @i<=@max begin
	
	select @sql='',@Time=CONVERT(varchar(50),getdate(),112)+replace(CONVERT(varchar(50),getdate(),108),':','')
	select @databasename=databasename from #dblist where rid=@i

	select @sql=@sql+'(name = '+[name]+', filename = '''+@FilePath+[name]+@Time+''' ),'+char(13)
	from sys.sysaltfiles where dbid=DB_ID(@databasename) and groupid>=1

	set @sql=left(@sql,len(@sql)-2)

	set @sql='
		Create Database '+@databasename+'_'+@Time+'
		ON
			'+@sql+'
		As snapshot of '+@databasename+'
	'
	--print @sql

	exec(@sql)

	--------------------------
	set @sql =''
	;
	with list as(
		select name,source_database_id,create_date,rid=ROW_NUMBER()over(partition by source_database_id order by create_date desc)
		from sys.databases 
		where source_database_id is not null 
	)
	select @sql=@sql+'drop database '+[name]+';'+char(13)
	from list
	where rid>@RetPolicy

	--print @sql
	exec(@sql)

	set @i=@i+1
	
end

GO


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值