解决复制数据库的问题.
在一套软件中分为多用户的情况下需要为每个用户创建及初始数据库的内容,特写了以下存储过程,希望可以为有这样需求的开发者带来方便!
CREATE PROCEDURE CaUserDb
(
@user varchar(50), --用户名
@soureFile varchar(100), --原备分文件
@soureName varchar(100) --原数据库名称 不需要写_Data
)
AS
declare @sql varchar(3000)
declare @sourePATH varchar(100) --备份文件路径
declare @descPATH varchar(100) --目标文件路径
--初始化数据库路径
set @sourePATH='d:\sqlDatabase\'
set @descPATH='d:\sqlDatabase\'
set @sql='
create database 前缀_'+@user+'
ON
(
name='+@soureName+'_Data,
filename='''+@descPATH+'前缀_'+@user+'_Data.mdf'',
SIZE = 10,
FILEGROWTH = 15%
)
LOG ON
(
name='''+@soureName+'_Log'',
filename='''+@descPATH+'前缀_'+@user+'_Log.LDF'',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB
)
--开始还原
RESTORE DATABASE 前缀_'+@user+' from disk='''+@sourePATH+@soureFile+''' WITH REPLACE
'
exec(@sql)
GO
(
@user varchar(50), --用户名
@soureFile varchar(100), --原备分文件
@soureName varchar(100) --原数据库名称 不需要写_Data
)
AS
declare @sql varchar(3000)
declare @sourePATH varchar(100) --备份文件路径
declare @descPATH varchar(100) --目标文件路径
--初始化数据库路径
set @sourePATH='d:\sqlDatabase\'
set @descPATH='d:\sqlDatabase\'
set @sql='
create database 前缀_'+@user+'
ON
(
name='+@soureName+'_Data,
filename='''+@descPATH+'前缀_'+@user+'_Data.mdf'',
SIZE = 10,
FILEGROWTH = 15%
)
LOG ON
(
name='''+@soureName+'_Log'',
filename='''+@descPATH+'前缀_'+@user+'_Log.LDF'',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB
)
--开始还原
RESTORE DATABASE 前缀_'+@user+' from disk='''+@sourePATH+@soureFile+''' WITH REPLACE
'
exec(@sql)
GO