首页 > 开发 > 综合 > 正文

SQL远程恢复

2024-07-21 02:48:51
字体:
来源:转载
供稿:网友
SQL远程恢复-- =============================================-- Author: dcrenl-- Create date: 2013-9-5 14:08:35-- Description: WEB服务器远程恢复数据库,远程恢复和远程备份的思路是一样的。--不过恢复的时候有个释放连接的问题,所以多加了一个释放连接的存储过程。--本来可以整合到一个里面但是考虑到其它地方也会用到释放连接所以把它单独拿出来了。-- =============================================ALTER PROCEDURE [dbo].[RemoteRestore]@DataDisk nvarchar(max),--需要在数据库服务器上映射的盘符@WEBAddr nvarchar(max),--WEB服务器地址@WEBDisk nvarchar(max),--WEB服务器共享目录(例如:D$ 或 C$/Windows)@PassWord nvarchar(max),--WEB服务器密码@UserName nvarchar(max),--WEB服务器用户名@DataName nvarchar(max),--需要恢复的数据库名@BackName nvarchar(max)--需要恢复的数据库名ASBEGINSET NOCOUNT ON;--打开高级设置exec sp_configure 'show advanced options',1reconfigure--开启xp_cmdshellexec sp_configure 'xp_cmdshell',1reconfigure--将WEB服务器路径映射到数据库服务器exec ('master..xp_cmdshell ''net use ' + @DataDisk + ': //' +@WEBAddr + '/' + @WEBDisk + ' "' + @Password + '" /user:' +@WEBAddr + '/' + @UserName + '''')--开始备份并复制到WEB服务器的映射路径declare @DataBaseName varchar(50)set @DataBaseName = 'KF_Reg_' + @BackNameexec p_killspid @DataBaseNameexec ('RESTORE DATABASE [' + @DataName + '] FROM DISK =N'''+@DataDisk+':/' +@BackName+'.bak'' WITH REPLACE')--关闭映射路径exec ('master..xp_cmdshell ''net use ' + @DataDisk + ':/delete''')--关闭xp_cmdshellexec sp_configure 'xp_cmdshell',0reconfigure--关闭高级设置exec sp_configure 'show advanced options',0reconfigureEND---------------------------------------------------------------------------------------------------断开所有用户连接的存储过和ALTER proc [dbo].[p_killspid] (@dbname varchar(100))as begin declare @sql nvarchar(500)declare @spid int set @sql='declare getspid cursor for select spid from master.sys.sysprocesses wheredbid=db_id('''+@dbname+''')'exec (@sql) open getspid fetch next from getspid into @spidwhile @@fetch_status<>-1begin exec('kill '+@spid) fetch next from getspid into @spidend close getspid deallocate getspid end


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表