数据库的创建: BackUp-->Restore方式

--TEST:usp_WebAdmin_SaaSPortal_CustomerCreate 'bpm_622_online','bpm_9309' 
--select physical_name from sys.database_files where name='BPM_622_online' and type=0 
CREATE      procedure dbo.usp_WebAdmin_SaaSPortal_CustomerCreate 

    @primary_database_name varchar(max)='' 
    ,@customer_database_name varchar(max)='' 
 ,@customer_id nvarchar(100) 
 ,@company_name nvarchar(100) 

as 
 
 
declare @modelDBname varchar(100) 
declare @customerDBname varchar(100) 
 
select @modelDBname=@primary_database_name 
select @customerDBname=@customer_database_name 
 
 
declare @nameLogical nvarchar(100) 
SELECT @nameLogical=name FROM sys.master_files WHERE database_id = DB_ID(@primary_database_name) and type_desc='ROWS' 
 
 
---当前数据库的物理路径 
declare @backup_Path nvarchar(100) 
select @backup_Path=substring(physical_name,0,len(physical_name)+2-charindex('\',REVERSE(physical_name))) from sys.database_files where type=0 
 
 
declare @backup_LogicalDeviceName nvarchar(100) 
declare @backup_PhysicalDeviceName nvarchar(100) 
select @backup_LogicalDeviceName = @modelDBname+'_BackUp' 
select @backup_PhysicalDeviceName = @backup_Path+@backup_LogicalDeviceName+'.bak' 
 
 
 
if not exists(select * from msdb..backupmediafamily where logical_device_name=@backup_LogicalDeviceName
begin 
 EXEC sp_addumpdevice 'disk',@backup_LogicalDeviceName, @backup_PhysicalDeviceName 
 print 'add disk:'+@backup_LogicalDeviceName 
end 
 
BACKUP DATABASE @modelDBname  
 TO @backup_LogicalDeviceName 
 WITH INIT; 
 
RESTORE FILELISTONLY  
   FROM @backup_LogicalDeviceName ; 
 
if not exists(select * from sys.databases where name=@customerDBname and state=0) 
begin 
 declare @logicalname_data varchar(100)     
 declare @physicalname_data varchar(100)     
 declare @logicalname_log varchar(100)     
 declare @physicalname_log varchar(100)     
 select @logicalname_data=@nameLogical;     
 select @physicalname_data = @backup_Path+@customerDBname+'.mdf';     
 select @logicalname_log=@nameLogical+'_Log'     
 select @physicalname_log = @backup_Path+@customerDBname+'_LOG.LDF';     
 
 
     
 RESTORE DATABASE @customerDBname      
    FROM @backup_LogicalDeviceName      
    WITH REPLACE,MOVE @logicalname_data TO @physicalname_data,     
    MOVE  @logicalname_log TO @physicalname_log;     
     
 
 DELETE FROM CUSTOMER_DATABASE WHERE CUSTOMER_DATABASE=@customer_database_name
 INSERT INTO CUSTOMER_DATABASE (CUSTOMER_ID,COMPANY_NAME,CUSTOMER_DATABASE) VALUES(@customer_id,@company_name,@customer_database_name); 
 
 
end 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值