利用SQLServer备份文件创建数据库(针对C/S系统)
2007-08-18 01:26
645 查看
create procedure P_databaseInit
@bakFileName varchar(128)=null,--备份文件位置以及名称如:d:/bak.bak
@DataBaseName varchar(128)=null,--新数据库名称如:myTestDb
@dbPath varchar(128)=null, --新数据路径如:d:/或d:
@replace bit=0 --是否强制制恢复,如果遇到同名的数据库是否牵制恢复
as
create table #tmp( --建立临时表用来存储备份文件信息
LogicalName nvarchar(128),
PhysicalName nvarchar(260),
Type char(1),
FileGroupName nvarchar(128),
Size numeric(20,0),
MaxSize numeric(20,0))
--insert into #tmp Exec #p_getBakFileList
insert into #tmp exec('RESTORE FILELISTONLY FROM DISK = ''e:/motorbak.bak''') --获取备份文件信息存入临时表
declare @LogicalName varchar(128),@restoreStr varchar(5000),@PhysicalName varchar(260)
declare myCur cursor
for
select LogicalName,physicalName from #tmp
if substring(reverse(@dbPath),1,1)<>'/' --新数据库路径处理,当然路径先要建立好来。可以在其他语言中处理
set @dbPath=@dbPath+'/';
if @replace=1 --处理是否强制还原
set @restoreStr ='restore database '+@DataBaseName+' from disk='''+@bakFileName+'''with recovery,replace';
else
set @restoreStr ='restore database '+@DataBaseName+' from disk='''+@bakFileName+'''with recovery';
open myCur
fetch next from myCur into @logicalName,@PhysicalName
while (@@fetch_status=0)
begin
set @physicalName=reverse(subString(reverse(@physicalName),1,charIndex('/',reverse(@physicalName),1)-1)) --获取原来的物理文件名
set @restoreStr=@restoreStr+',move '''+@logicalName+''' to '''+@dbPath+@physicalName+''''
fetch next from myCur into @logicalName,@PhysicalName
end
exec @restoreStr
@bakFileName varchar(128)=null,--备份文件位置以及名称如:d:/bak.bak
@DataBaseName varchar(128)=null,--新数据库名称如:myTestDb
@dbPath varchar(128)=null, --新数据路径如:d:/或d:
@replace bit=0 --是否强制制恢复,如果遇到同名的数据库是否牵制恢复
as
create table #tmp( --建立临时表用来存储备份文件信息
LogicalName nvarchar(128),
PhysicalName nvarchar(260),
Type char(1),
FileGroupName nvarchar(128),
Size numeric(20,0),
MaxSize numeric(20,0))
--insert into #tmp Exec #p_getBakFileList
insert into #tmp exec('RESTORE FILELISTONLY FROM DISK = ''e:/motorbak.bak''') --获取备份文件信息存入临时表
declare @LogicalName varchar(128),@restoreStr varchar(5000),@PhysicalName varchar(260)
declare myCur cursor
for
select LogicalName,physicalName from #tmp
if substring(reverse(@dbPath),1,1)<>'/' --新数据库路径处理,当然路径先要建立好来。可以在其他语言中处理
set @dbPath=@dbPath+'/';
if @replace=1 --处理是否强制还原
set @restoreStr ='restore database '+@DataBaseName+' from disk='''+@bakFileName+'''with recovery,replace';
else
set @restoreStr ='restore database '+@DataBaseName+' from disk='''+@bakFileName+'''with recovery';
open myCur
fetch next from myCur into @logicalName,@PhysicalName
while (@@fetch_status=0)
begin
set @physicalName=reverse(subString(reverse(@physicalName),1,charIndex('/',reverse(@physicalName),1)-1)) --获取原来的物理文件名
set @restoreStr=@restoreStr+',move '''+@logicalName+''' to '''+@dbPath+@physicalName+''''
fetch next from myCur into @logicalName,@PhysicalName
end
exec @restoreStr
相关文章推荐
- SqlServer2000中利用备份文件创建数据库
- windows系统利用批处理文件自动备份数据库及文件
- linux上利用crontab定时备份postgres数据库及文件到windows系统
- winxp系统32位平台下利用oracle10g自带的DBCA(database configuration assistant)工具创建数据库
- SQLSERVER使用密码加密备份文件以防止未经授权还原数据库
- MySql利用.bat文件生成创建数据库表的SQL文
- 利用crontab定时备份数据库为sql文件
- Sybase系统崩溃了,没有备份,但设备文件还存在,如何恢复数据库?
- (喷血分享)利用.NET生成数据库表的创建脚本,类似SqlServer编写表的CREATE语句
- linux下面根据不同的日期创建不同文件,一般用户数据库的备份的shell编程
- 温州市公路管理处数据库和文件容灾备份软件系统项目
- 利用SQLSERVER创建大文件用来测速
- 利用springboot,mybatis和luncene整合创建博客系统(只给出全数据库搜索并显示在搜索页面)
- SQLSERVER使用密码加密备份文件以防止未经授权还原数据库
- 利用FTP和WEBSERVICE实现数据库和用户文件的备份
- 系统损坏,移植Oracle(9.2.0.1)数据库(无备份数据文件进行恢复)
- 利用busybox1.1.3进行简单的文件系统的创建
- 将Oracle数据库改为归档模式并启用RMAN备份 如下Linux环境下对Oracle单节点数据库采用文件系统情况的配置归档模式过程。首先查看数据库归档模式和磁盘使用情况,确定归档文件放到什么位置。
- 构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构]
- 利用.NET生成数据库表的创建脚本,类似SqlServer编写表的CREATE语句