文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
SQL Server 不存在或访问被拒绝
未与信任SQL Server连接相关联的解决..
SQL Server数据库六种数据移动方法
提高数据库访问速度
如何在两个SQLSERVER之间数据同步
将ACCESS的数据库转化为SQL SERVER的..
动态创建SQL Server数据库、表、存储..
在SQL Server中寻找资料库的TABLE数量..
SQL Server 7.0储存过程调试指南
关于SQL Server 2000的安全配置
用SQL语句来建立跟踪的问题
SQL SERVER2000备份和恢复存储过程
将Excel中的数据导入到SQL Server 200..
SQL Server数据库文件恢复技术
千万级数据库高速分页显示
找出存放用户名和密码的表
SQL Server 7六种数据移动方法
SQL Server中读取XML文件的简单做法
SQL Server 2000中的触发器使用
SQL Server中各个系统表的作用
在SQL Server存储过程中执行DTS包
Sqlserver中的一些技巧
SQL Server 2005:数据类型最大值
SQL Server 存储过程的分页
SQL Server 中易混淆的数据类型
SQL Server 服务器安装剖析
SQL Server导出导入数据方法
SQL数据恢复问题深入剖析
SQLServer和Oracle常用函数对比
用SQL Server为Web浏览器提供图像(一..


技术教程 -> SQLserver教程 ->  
SQL SERVER2000备份和恢复存储过程
来源:转载   人气:935   录入时间:2007-11-8
     /*备份数据库的过程*/
   if exists(
    select * from sysobjects
    where name=’pr_backup_db’ and xtype=’p’
    )
   begin
    drop proc pr_backup_db
   end
   go
   create proc pr_backup_db
   @flag varchar(20) out,
   @backup_db_name varchar(128),
   @filename varchar(1000) --路径+文件名字
   as
   declare @sql nvarchar(4000),@par nvarchar(1000)
   if not exists(
    select * from master..sysdatabases
    where name=@backup_db_name
    )
   begin
    select @flag=’db not exist’ /*数据库不存在*/
    return
   end
   else
   begin
    if right(@filename,1)<>’\’ and charindex(’\’,@filename)<>0
    begin
    select @par=’@filename varchar(1000)’
    select @sql=’BACKUP DATABASE ’+@backup_db_name+’ to disk=@filename with init’
    execute sp_executesql @sql,@par,@filename
    select @flag=’ok’
    return
    end
    else
    begin
    select @flag=’file type error’ /*参数@filename输入格式错误*/
    return
    end
   end
   GO
   说明:pr_backup_db过程是备份你的数据库
   
   
   /*创建函数,得到文件得路径*/
   if exists(
    select * from sysobjects
    where name=’fn_GetFilePath’ and xtype=’fn’
    )
   begin
    drop function fn_GetFilePath
   end
   go
   create function fn_GetFilePath(@filename nvarchar(260))
   returns nvarchar(260)
   as
   begin
    declare @file_path nvarchar(260)
    declare @filename_reverse nvarchar(260)
    select @filename_reverse=reverse(@filename)
    select @file_path=substring(@filename,1,len(@filename)+1-charindex(’\’,@filename_reverse))
    return @file_path
   end
   
   GO
   
   /*恢复数据库的过程*/
   if exists(
    select * from sysobjects
    where name=’pr_restore_db’ and xtype=’p’
    )
   begin
    drop proc pr_restore_db
   end
   go
   CREATE proc pr_restore_db
   @flag varchar(20) out, /*过程运行的状态标志,是输入参数*/
   @restore_db_name nvarchar(128), /*要恢复的数据名字*/
   @filename nvarchar(260) /*备份文件存放的路径+备份文件名字*/
   as
   declare @proc_result tinyint /*返回系统存储过程xp_cmdshell运行结果*/
   declare @loop_time smallint /*循环次数*/
   declare @max_ids smallint /*@tem表的ids列最大数*/
   declare @file_bak_path nvarchar(260) /*原数据库存放路径*/
   declare @flag_file bit /*文件存放标志*/
   declare @master_path nvarchar(260) /*数据库master文件路径*/
   declare @sql nvarchar(4000),@par nvarchar(1000)
   declare @sql_sub nvarchar(4000)
   declare @sql_cmd nvarchar(100)
   declare @sql_kill nvarchar(100)
   /*
   判断参数@filename文件格式合法性,以防止用户输入类似d: 或者 c:\a\ 等非法文件名
   参数@filename里面必须有’\’并且不以’\’结尾
   */
   if right(@filename,1)<>’\’ and charindex(’\’,@filename)<>0
   begin
    select @sql_cmd=’dir ’+@filename
    EXEC @proc_result = master..xp_cmdshell @sql_cmd,no_output
    IF (@proc_result<>0) /*系统存储过程xp_cmdshell返回代码值:0(成功)或1(失败)*/
    begin
    select @flag=’not exist’ /*备份文件不存在*/
    return /*退出过程*/
    end
    /*创建临时表,保存由备份集内包含的数据库和日志文件列表组成的结果集*/
    create table #tem(
    LogicalName nvarchar(128), /*文件的逻辑名称*/
    PhysicalName nvarchar(260) , /*文件的物理名称或操作系统名称*/
    Type char(1), /*数据文件 (D) 或日志文件 (L)*/
    FileGroupName nvarchar(128), /*包含文件的文件组名称*/
    [Size] numeric(20,0), /*当前大小(以字节为单位)*/
    [MaxSize] numeric(20,0) /*允许的最大大小(以字节为单位)*/
    )
   
   




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987