SQL SERVER 用存储过程 自动创建维护数据库快照
来源:互联网 发布:找网络推手可以走红吗? 编辑:程序博客网 时间:2024/05/12 04:09
下面方法,是用存储过程的方式来自动创建数据库快照,这样只要再创建一个作业来调度,就可以实现每个小时建立一个快照.
同时还可以用后面的过程自动删除前一天的快照,这样就保证数据库始终保留一天的快照.
调用方式
--生成快照
exec usp_CreateDatabaseSnapshot 'databaseName','C:\'
--删除一天前的所有快照
exec usp_DropDatabaseSnapshot
过程
-------------------------------------------------------------------------------------------------------------------
Create proc [dbo].[usp_CreateDatabaseSnapshot]( @DatabaseName varchar(20),@Filepath varchar(100))
asset nocount on
declare @query varchar(1000)
declare @snapshotName varchar(128)
declare @snapDataName varchar(128)
declare @snapFileName varchar(128)
declare @RQ varchar(12) --
set @RQ= convert(varchar(12), getdate(),112)+convert(varchar(4), datepart(hh, getdate()))
Set @SnapDataName=@DatabaseName+'_Snapshot_'+@RQ --快照数据库
Set @SnapshotName =@DatabaseName+'_Snapshot_'+@RQ --数据库文件
--已建立就删除
select * from sys.databases where source_database_id =db_id(@databasename) and name = @SnapshotName
if @@rowcount <>0
begin
set @query = 'Drop database '+ @SnapshotName
print @query
exec(@query)
end
-- 临时表,生成快照文件路径 ,如果有多个数据文件,就省心了,不用一个个的命名了.
CREATE TABLE #dbfiles
(
dbname varchar(100),
filetype varchar(100),
filename varchar(200)
)
declare @sql varchar(1024) --临时sql 语句
set @sql = 'INSERT INTO #dbfiles SELECT ''' + @DatabaseName + ''',name,filename from ' + @DatabaseName + '.sys.sysfiles where groupid>0';
EXEC(@sql)
declare @snapFileString varchar(max)
set @snapFileString=''
select @snapFileString=@snapFileString+'(Name='+filetype+',filename="'+@Filepath+'\'+filetype+'_Snapshot_'+@RQ+'.ss"),'+char(10)
from #dbfiles
drop table #dbfiles --删除临时文件
--生成数据库快照
set @query ='Create database ' + @SnapshotName + ' on '+left(@snapFileString,len(@snapFileString)-2)+' AS SNAPSHOT of ' + @databasename+';'
exec(@query)
----------------------------------------------------------------------------------
自动删除前一天的快照.
Create proc [dbo].[usp_DropDatabaseSnapshot]
as
declare @query varchar(5000)
set @query=''
select @query=@query+'Drop database '+name+';'+char(10) from sys.databases where source_database_id is not null
and create_date<getdate()-1
--print @query
exec(@query)
- SQL SERVER 用存储过程 自动创建维护数据库快照
- SQL Server存储过程创建数据库
- 自动创建MSSQL Server 2005 数据库快照
- 自动创建MSSQL Server 2005 数据库快照
- sql server 脚本创建备份数据库的存储过程及利用前述存储过程自动备份数据库的作业
- 【SQL Server】存储过程的设计与概念(1)存储过程的创建、维护
- SQL Server 数据库快照
- sql server数据库快照
- SQL 创建数据库快照
- SQL Server创建存储过程
- SQL Server创建存储过程
- SQL Server创建存储过程
- SQL Server创建存储过程
- SQL Server创建存储过程
- SQL Server创建存储过程
- SQL Server创建存储过程
- Sql Server 创建存储过程
- SQL Server创建存储过程
- HDU 1700 数学题
- 第二章 IoC 构造器注入
- 生成GUID的方法
- 下载工具
- gg
- SQL SERVER 用存储过程 自动创建维护数据库快照
- DevCon 命令行实用工具用法(安装卸载驱动)
- 支持unity3D的AR(增强现实)框架!!!
- IOS设计模式学习(11)中介者
- Unity3D读取Ios中的动态UIImage图片内容!!!!
- flash与动画:AS3图片移动 实现
- linux的sqlplus环境下方向键、Backspace键使用不正常的解决方法
- 调用约定
- ORACLE EXP/IMP的使用详解