use master
RESTORE DATABASE test2 FROM DISK = 'c:\a.bak' WITH REPLACE,move 'test_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test2_Data.MDF',
 move 'test_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test2_Log.LDF'

解决方案 »

  1.   

    create   PROCEDURE  GY_DBBak  
              @bakequip    int,         --  备份设备:磁盘&磁带  
              @bakpath     varchar(50), --  带全路径的备份文件名  
              @baktype     int,         --  完全备份&增量备份  
              @baklog      int,         --  ‘0’备份日志  
              @bakdb       int,         --  ‘0’备份数据库  
              @kind  varchar(7),        --备份还是恢复  
              
      @retmsg  varchar(20)  output     --返回信息  
    AS  
       DECLARE  @DevName_data    varchar(50)  
       DECLARE  @DevName_log   varchar(50)
       declare @db_path varchar(100)
       declare @log_path varchar(100)
           
       DECLARE  @RC INT     SELECT    @db_path    =  @bakpath    +  '.dat'  
    SELECT    @log_path   =  @bakpath    +  'log.dat'  
            SELECT    @RC=0
            select  @DevName_data='dali',@DevName_log='dalilog'   DBCC  CHECKDB(数据库名)  
    /***********************************************************
    ** CREATE BACKUP AND RESTORE DEVICES
    ************************************************************/
    IF @RC=0
       BEGIN

        EXEC sp_addumpdevice 'disk', @DevName_data,@db_path

    exec sp_addumpdevice 'disk', @DevName_log,@log_path
        select @rc=@@error
    IF @RC<>0
    begin
    EXEC SP_DropDevice @Devname_data
    exec sp_dropdevice @devname_log
    SELECT @RC=-1000
    return @rc
    end
      END

       IF  @kind='backup'  
       BEGIN  
           IF  @bakequip=0  
           BEGIN  
               IF  @baktype=0  
               BEGIN  
                   IF  @bakdb=0  
                   BEGIN    
                       BACKUP  DATABASE  数据库名  TO  DISK=@Devname_data   
                       WITH  INIT  
                   END  
                   IF  @baklog=0  
                   BEGIN              
                       BACKUP  LOG  数据库名  WITH  NO_LOG              
                       BACKUP  LOG  数据库名  TO  DISK=@DevName_log 
                       WITH  INIT,NO_TRUNCATE  
                   END  
               END  
               ELSE  BEGIN  
                   IF  @bakdb=0  
                   BEGIN  
                       BACKUP  DATABASE  数据库名  TO  DISK=@DevName_data
                       WITH  NOINIT  
                   END  
                   IF  @baklog=0  
                   BEGIN  
                       BACKUP  LOG  数据库名  WITH  NO_LOG              
                       BACKUP  LOG  数据库名  TO  DISK=@DevName_log 
                       WITH  NOINIT,NO_TRUNCATE  
                   END  
               END          
           END  
           SELECT  @retmsg='数据库备份成功!'  
       END  
     
       IF  @kind='restore'      
       BEGIN  
           RESTORE  DATABASE  数据库名  FROM  DISK=  @DevName_data WITH  REPLACE  
           SELECT  @retmsg='恢复数据库成功!'  
       END   EXEC SP_DropDevice @Devname_data
    exec sp_dropdevice @devname_log
     
       RETURN  0---测试:
    declare @ varchar(100)
    exec gy_dbbak 0,'aa',0,0,0,'backup',@ output
    select @
      

  2.   

    我这边数据库里是还原后,数据库中的存储过程都是有的,但是打开后里面却是空的?
    我以前没用过sql server所以很抱歉,刚才的没有看明白
    能不能说一下怎样用鼠标就能完成,把以前的备份还原到我现在的数据库里?
      

  3.   

    右键数据库-->所有任务-->还原数据库-->写入你想要的新的数据库名字-->从设备-->选择设备-->添加-->选择你的文件-->确定-->确定-->选项-->改为现在的data目录的路径-->OK其中:
    "写入名字"-->不要与现在的冲突了,或选强制恢复
    "改为现在的data目录的路径"-->如默认是"c:\....data\....mdf"而你现在的sql的data目录是d:\....data你就改为d:\...data\...mdf
      

  4.   

    怎么会有这种事,太怪了,到企业管理器->到"数据库"这个字上右键,不要选中某个库->所有任务->恢复数据库->1,输入新的数据库名,并打开你的备份文件.
    2,在选项中,选中在现有数据库上强制恢复,并在下面输入新的还原目录.
      

  5.   

    pengdali(大力 V2.0) 谢谢了
    其实我用的就是你说的方法,可就是存储过程有问题
    我现在想是不是我的数据库那里设置有问题
      

  6.   

    是不是本来就没有数据呢?你可以试一试写一个简单的比如: create proc test
     as 
     select getdate()然后备份数据库,在还原一下看看还有没有数据!
      

  7.   

    你的问题是你没有备份好1、打开ENTERPRISE MANAGER,展开到DATABASES。
    2、在DATABASES上点右键,“所有任务”中选“RESTORY DATABASE”
    3、在GENERAL标签页中选择“FROM DEVICE”,再点击“SELECT DEVICE”
    4、在出现的窗口中点击“ADD”,再在窗口中选择“FILE NAME”,点击...按钮
    5、选中您所创建的备份文件,即可成功。