根据当月自动生成下个月数据库--2

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>



--方法2.脚本复制usemastergo

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[sp_ProcCopyDb]')andOBJECTPROPERTY(id,N'IsProcedure')=1)dropprocedure[dbo].[sp_ProcCopyDb]GO

/*--数据库自动复制

将指定前缘的数据库,复制为一个以当前月份+1为库名的数据库中,并且清除所有的数据例如,数据库前缘为Pos,当前日期为2005-3-27则要求复制数据Pos200503为Pos200504,并且清空里面的数据

用生成源库脚本的方法实现好处是速度快,不需要考虑源数据库的数据但如果要保留源数据库的部分数据,则要专门做数据复制处理

--运行需求需要如下两个文件,可以在sql安装盘X86/UPGRADE目录下找到scptxfr.exescptxfr.rll

将其复制到下述目录%systemroot%ystem32/--邹建2005.03(引用请保留此信息)--*/

/*--调用示例

--复制Posexecsp_ProcCopyDb'Pos'--*/

--1.master数据库中创建一个处理的存储过程,实现当月数据库到下月数据的自动复制

/*--系统需求需要如下两个文件,可以在sql安装盘X86/UPGRADE目录下找到scptxfr.exescptxfr.rll

将其复制到下述目录%systemroot%ystem32/--*/

createprocsp_ProcCopyDb@DB_Headsysname=N'' --数据库前缀asdeclare@sdbnamesysname,@ddbnamesysnamedeclare@sNvarchar(4000),@bkfileNvarchar(1000)

--复制的源库名及目标库名select@sdbname=@DB_Head+convert(char(6),getdate(),112),@ddbname=@DB_Head+convert(char(6),dateadd(month,1,getdate()),112)

ifdb_id(@sdbname)isnullbeginraiserror(N'源数据库"%s"不存在',1,16,@sdbname)returnend

ifdb_id(@ddbname)isnotnullbeginraiserror(N'目标数据库"%s"已经存在',1,16,@ddbname)returnend

--临时备份文件名selecttop1@bkfile=rtrim(reverse(filename))frommaster.dbo.sysfileswherename=N'master'select@bkfile=stuff(@bkfile,1,charindex('/',@bkfile),N''),@bkfile=reverse(stuff(@bkfile,1,charindex('/',@bkfile),N''))+N'/BACKUP/'+cast(newid()asnvarchar(36))+N'.sql'

--脚本生成处理set@s=N'scptxfr/s'+quotename(cast(serverproperty(N'servername')asnvarchar),N'"')+N'/d'+quotename(@sdbname,N'"')+N'/I' --使用windows身份验证,如果使用sql身份验证,则愀为+N'/P"sa密码"',固定使用sa用户+N'/f'+quotename(@bkfile,N'"')+N'/Y/q/T/C/Y'execmaster..xp_cmdshell@s,no_output

--创建目标数据库set@s=N'createdatabase'+quotename(@ddbname)execsp_executesql@s

--使用源库脚本,为目标数据库创建对象set@s=N'osql/S'+quotename(cast(serverproperty(N'servername')asnvarchar),N'"')+N'/d'+quotename(@ddbname,N'"')+N'/E' --使用windows身份验证,如果使用sql身份验证,则愀为+N'/U"sa"/P"sa密码"'+N'/i'+quotename(@bkfile,N'"')execmaster..xp_cmdshell@s,no_output

--删除临时备份文件set@s='del"'+@bkfile+'"'execmaster..xp_cmdshell@s,no_outputgo
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值