sp; +convert(sysname,ids) /*给文件编号*/ +''''.'''' +right(PhysicalName,3) /*给文件加入后缀名,mdf or ndf*/ +'''''''''''','''' end from @tem select @sql=''''RESTORE DATABASE @db_name FROM DISK=@filename with '''' select @sql=@sql+@sql_sub+''''replace'''' select @par=''''@db_name nvarchar(128),@filename nvarchar(260)'''' /*关闭相关进程,把相应进程状况导入临时表中*/ select identity(int,1,1) ids, spid into #temp from master..sysprocesses where dbid=db_id(@restore_db_name) if @@rowcount>0 --找到相应进程 begin select @max_ids=max(ids) from #temp select @loop_time=1 while @loop_time<=@max_ids begin select @sql_kill=''''kill ''''+convert(nvarchar(20),spid) from #temp where ids=@loop_time execute sp_executesql @sql_kill select @loop_time=@loop_time+1 end end drop table #temp execute sp_executesql @sql,@par,@db_name=@restore_db_name,@filename=@filename select @flag=''''ok'''' /*操作成功*/ end else begin SELECT @flag=''''file type error'''' /*参数@filename输入格式错误*/ end
GO
--run
--备份数据库test_database declare @fl varchar(10) execute pr_backup_db @fl out,''''test_database'''',''''c:\test_database.bak'''' select @fl
--恢复数据库,输入的参数错误 declare @fl varchar(20) exec pr_restore_db @fl out,''''sa'''',''''c:\'''' select @fl
--恢复数据库,即创建数据库test_database的复本test_db declare @fl varchar(20) exec pr_restore_db @fl out,''''test_db'''',''''c:\test_database.bak'''' select @fl
以上过程和函数在MS SQL2000运行成功,由于MS SQL7不支持用户自定义函数和表变量,要在MS SQL7下使用可以把函数fn_GetFilePath改写成过
程,把过程pr_restore_db中的表变量改写为临时表即可运行,有兴趣的朋友可以试试! 我的Email:aierong@2118.cn 欢迎大家交流
上一页 [1] [2] [Access]sql随机抽取记录 [Access]ASP&SQL让select查询结果随机排序的实现方法 [聊天工具]企业邮件系统的利器----FoxMail Server [系统软件]OPEN SERVER 5.0.5安装EXP300阵列柜 [系统软件]SQL语句性能优化--LECCO SQL Expert [系统软件]关于Windows2000Server的灾难恢复 [常用软件][网络]下载服务革命性风暴Poco Server评测 [C语言系列]动态创建SQL Server数据库、表、存储过程等架构信… [C语言系列]SQL Server到DB2连接服务器的实现 [C语言系列]SQL Server到SYBASE连接服务器的实现
|