数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
根据当月数据库自动生成下个月数据库--2

作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站

--方法2. 脚本复制
use master
go

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_ProcCopyDb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_ProcCopyDb]
GO

/*--数据库自动复制

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

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

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

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

/*--调用示例

-- 复制 Pos
exec sp_ProcCopyDb 'Pos'
--*/

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

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

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

create proc sp_ProcCopyDb
@DB_Head sysname=N''  --数据库前缀
as
declare @sdbname sysname,@ddbname sysname
declare @s Nvarchar(4000),@bkfile Nvarchar(1000)

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

if db_id(@sdbname) is null
begin
raiserror(N'源数据库"%s"不存在',1,16,@sdbname)
return
end

if db_id(@ddbname) is not null
begin
raiserror(N'目标数据库"%s"已经存在',1,16,@ddbname)
return
end

--临时备份文件名
select top 1 @bkfile=rtrim(reverse(filename))
from master.dbo.sysfiles
where name=N'master'
select @bkfile=stuff(@bkfile,1,charindex('\',@bkfile),N'')
,@bkfile=reverse(stuff(@bkfile,1,charindex('\',@bkfile),N''))
+N'\BACKUP\'+cast(newid() as nvarchar(36))+N'.sql'

--脚本生成处理
set @s=N'scptxfr /s '+quotename(cast(serverproperty(N'servername') as nvarchar),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'
exec master..xp_cmdshell @s,no_output

--创建目标数据库
set @s=N'create database '+quotename(@ddbname)
exec sp_executesql @s

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

--删除临时备份文件
set @s='del "'+@bkfile+'"'
exec master..xp_cmdshell @s,no_output
go




相关文章

相关软件