<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>
--方法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>