我是个新手,下载了VB+SQL例子,但例子中的数据库只有没有扩展名的SMSDB_SCWL文件,像.MDF和.LDF,求助怎么把这数据库还原或恢复到SQL SERVER2000中?
在此先谢谢各位了!!

解决方案 »

  1.   

    SQL备份与还原经典文档
    ======================================================================
    SQL备份
    ======================================================================
    ----------------------------------------------------------------------
    1、SQL数据库恢复模型
    ----------------------------------------------------------------------
    1)完全恢复模型
    -----------------
    (1)备份时要备份数据库的数据文件和日志文件
    (2)还原时使用数据库的备份的数据文件副本和全部日志信息来恢复数据库。
    (3)能还原全部数据,并可以将数据库恢复到任意指定的时刻。
    (4)为保证实现即时点恢复,对数据库的所有*作都将完整地记入日志,这样,日志占用空间较大,对性能也有所影响。
    ------------------
    (2)大容量日志记录恢复模型
    ------------------
    (1)备份时要备份数据库的数据文件和日志文件
    (2)还原时使用数据库的备份的数据文件副本和全部日志信息来恢复数据库。
    (3)日志中不记录*作细节(如select into、create index等),而只记录*作的最终结果,因此占用日志空间小。
    (4)只支持将数据库还原到事务日志备份的时刻,而不支持即时点恢复,因此可能产生数据丢失。
    -------------------
    (3)简单恢复模型
    -------------------
    (1)备份时只备份数据文件,还原时也用备份的数据文件恢复数据库。
    (2)只能将数据恢复到数据文件备份的时刻,可能产生最多的数据丢失。
    (3)不适于生产系统和大规模*作环境下选用。
    -----------------------------------------
    alter database d1 set recovery simple     --设置数据库恢复模型
    alter database d1 set recovery bulk_logged
    alter database d1 set recovery full
    ----------------------------------------------------------------------
    2、备份设备
    ----------------------------------------------------------------------
    1)物理设备
    ---------------------------
    disk:支持本地磁盘或者网络备份
    tape:支持磁带机备份
    name pipe:支持第三方备份软件
    ---------------------------
    2)逻辑设备
    ---------------------------
    永久备份文件:可以重复使用,应该在备份前创建。
    临时备份文件:用于一次性备份,在备份时创建。
    -------------------------------------------------
    exec sp_addumpdevice 'disk','bak2','e:\back_device\bak2.bak' --创建永久磁盘备份设备
    exec sp_addumpdevice 'disk','bak3','e:\back_device\bak3.bak'
    ----------------------------------------------------------------------
    exec sp_addumpdevice 'disk','bak4','\\sv2\backup\bak4.bak' --创建网络永久磁盘备份设备
    exec sp_addumpdevice 'disk','bak5','\\sv2\backup\bak5.bak'
    ----------------------------------------------------------------------
    exec sp_dropdevice 'bak5'              --删除备份设备
    ----------------------------------------------------------------------
    backup database d3 to bak3      --将数据库备份到备份设备
    backup database d4 to bak4
    ----------------------------------------------------------------------
    restore headeronly from bak2    --查看备份设备中的内容
    ----------------------------------------------------------------------
    backup database d3 to disk='e:\back_file\d3.bak'    --将数据库备份到临时备份文件
    backup database d4 to disk='e:\back_file\d4.bak'
    ----------------------------------------------------------------------
    restore database d3 from bak3           --从备份设备还原数据库       
    restore database d4 from disk='e:\back_file\d4.bak' --从备份文件还原数据库
    ----------------------------------------------------------------------
    3、使用多个备份文件存储备份
    ----------------------------------------------------------------------
    1)SQL可同时向多个备份文件进行写*作。如果把这些文件放到多个磁带机或磁盘中,则可提高备份速度。
    2)这多个备份文件必须用同业型的媒体,并放到一个媒体集中。
    3)媒体集中的文件必须同时使用,而不能单独使用。
    4)可以通过format命令将媒体集重新划分,但原备份集中的数据不能再使用。
    --------------------------------------------------------------------
    backup database d4 to bak4,bak5,bak6 with medianame='bak456',format --备份D4并形成Media Set
    backup database d3 to bak4      --失败,因Media set中文件必须同时使用
    backup database d3 to bak4,bak5,bak6    --成功,将D3也备份到Media Set中
    restore headeronly from bak4,bak5,bak6--查看Media Set中的备份内容
    ----------------------------------------------------------------------
    backup database d4 to bak4 with medianame='bak4',format     --重新划分Media Set
    backup database d3 to bak5,bak6 with medianame='bak56',format
    ----------------------------------------------------------------------
    backup database d1 to bak1 with init     --with init重写备份设备中内容
    backup database d2 to bak1 with noinit --with noinit将内容追加到备份设备中
    restore headeronly from bak1
    ----------------------------------------------------------------------
    4、备份的方法
    ----------------------------------------------------------------------
    1)完全备份
    -------------------------------------------
    (1)是备份的基准。在做备份时第一次备份都建议使用完全备份。
    (2)完全备份会备份数据库的所有数据文件、数据对象和数据。
    (3)会备份事务日志中任何未提交的事务。因为已提交的事务已经写入数据文件中。
    --------------------------------------------
    backup database d1 to bak1 with init     --完全备份
    backup database d1 to bak1 with noinit
    ----------------------------------------------------------------------
    2)差异备份
    ---------------------------------------------
    (1)基于完全备份。
    (2)备份自最近一次完全备份以来的所有数据库改变。
    (3)恢复时,只应用最近一次完全备份和最新的差异备份。
    -----------------------------------------------
    backup database d2 to bak2 with init,name='d2_full' --差异备份,第一次备份时应做完全备份
    create table b1(c1 int not null,c2 char(10) not null)
    backup database d2 to bak2 with differential,name='d2_diff1'
    insert b1 values(1,'a')
    backup database d2 to bak2 with differential,name='d2_diff2'
    insert b1 values(2,'b')
    backup database d2 to bak2 with differential,name='d2_diff3'
    insert b1 values(3,'c')
    backup database d2 to bak2 with differential,name='d2_diff4'
    restore headeronly from bak2
    ----------------------------------------------------------------------
    3)事务日志备份
    -------------------------------------------------------------
    (1)基于完全备份。
    (2)为递增备份,即备份从上一次备份以来到备份时所写的事务日志。
    (3)允许恢复到故障时刻或者一个强制时间点。
    (4)恢复时,需要应用完全备份和完全备份后的每次日志备份。
    -------------------------------------------------------------
    backup database d3 to bak3 with init,name='d3_full' --日志备份,第一次备份时应做完全备份
    create table b1(c1 int not null,c2 char(10) not null)
    backup log d3 to bak3 with
    insert b1 values(1,'a')
    backup log d3 to bak3 with
    insert b1 values(2,'b')
    backup log d3 to bak3 with
    insert b1 values(3,'c')
    backup log d3 to bak3 with
    restore headeronly from bak3
    ----------------------------------------------------------------------
    create table b1(c1 int not null,c2 char(10) not null)    --Full+Log+Diff
    backup log d4 to bak4 with
    insert b1 values(1,'a')
    backup log d4 to bak4 with
    insert b1 values(2,'b')
    backup database d4 to bak4 with differential,name='d4_diff1'
    insert b1 values(3,'c')
    backup log d4 to bak4 with
    insert b1 values(4,'d')
    backup log d4 to bak4 with
    insert b1 values(5,'d')
    backup database d4 to bak4 with differential,name='d4_diff2'
    restore headeronly from bak4
    ----------------------------------------------------------------------
      

  2.   

    SQL还原
    ======================================================================
    1、验证备份
    ------------------------------------------------------------
    restore headeronly from bak3
    restore filelistonly from bak3 with file=1
    restore labelonly from bak3
    restore verifyonly from bak3
    ----------------------------------------------------------------------
    2、从备份中还原
    -------------------------------------------------------------------------
    restore headeronly from bak1
    restore database d1 from bak1 with file=2         --从完全备份中恢复
    ----------------------------------------------------------------------
    restore headeronly from bak2              --从差异备份中恢复
    restore database d2 from bak2 with file=1,norecovery    
    restore database d2 from bak2 with file=5,recovery
    ----------------------------------------------------------------------
    restore headeronly from bak3              --从日志备份中恢复
    restore database d3 from bak3 with file=1,norecovery
    restore log    d3 from bak3 with file=2,norecovery
    restore log    d3 from bak3 with file=3,norecovery
    restore log    d3 from bak3 with file=4,norecovery
    restore log    d3 from bak3 with file=5,recovery
    ----------------------------------------------------------------------
    restore database d3 from bak3 with file=1,norecovery      --恢复到指定时间
    restore log    d3 from bak3 with file=2,norecovery
    restore log    d3 from bak3 with file=3,norecovery
    restore log    d3 from bak3 with file=4,recovery,stopat='2003-08-15 11:29:00.000'
    ----------------------------------------------------------------------
    restore database d5 filegroup='FG2' from bak5 with file=4,norecovery --还原文件组备份
    restore log d5 from bak5 with file=5,norecovery
    restore log d5 from bak5 with file=7,recovery
    ----------------------------------------------------------------------
    restore headeronly from bak6                 --还原文件备份
    restore database d5 file='d5_data3' from bak6 with file=6,norecovery
    restore log d5 from bak6 with file=7,norecovery
    restore log d5 from bak6 with file=9,recovery
    ----------------------------------------------------------------------
    restore database d5 from bak6 with replace    --删除现有数据库,从备份中重建数据库
    ----------------------------------------------------------------------
    create database d6            --move to将数据库文件移动到新位置
    on primary
    (name=d6_data,
    filename='E:\Program Files\Microsoft SQL Server\MSSQL\data\d6_Data.MDF',
    size=2MB)
    log on
    (name=d6_log,
    filename='E:\Program Files\Microsoft SQL Server\MSSQL\data\d6_log.ldf',
    size=2MB)
    go
    backupdatabase d6 to bak6 with init
    drop database d6
    restore database d6 from bak6
    with move 'd6_data' to 'e:\data\d6\d6_data.mdf',
    move 'd6_log'to 'e:\data\d6\d6_log.ldf'
    sp_helpdb d6
    ----------------------------------------------------------------------
    3、分离与重连接数据库
    --------------------------------------
    sp_detach_db 'd6'         
    sp_attach_db 'd6','e:\data\d6\d6_data.mdf','e:\data\d6\d6_log.ldf'
    --------------------------------------
    sp_detach_db d6
    go
    create database d6
    on primary
    (filename='e:\data\d6\d6_data.mdf')
    for attach
    go
    ----------------------------------------------------------------------
    4、恢复损坏的系统数据库
    ----------------------------------------------------------------------
    1)先备份MASTER、MSDB
    2)停止SQL服务,将MASTER数据库文件删除或者重命名。这样,SQL服务将不能启动。
    3)系统数据库的还原
    -----------------------------------------------
    (1)如果SQL服务还能启动,则从备份中恢复系统数据库。
    (2)如果SQL服务不能启动,则需要重建系统数据库。
    使用SQL文件夹TOOLS\BINN目录下的Rebuildm.exe重建master数据库。
    (3)创建备份设备,指向以前的备份设备。
    (4)以单用户模式启动SQL
    cd programe files\microsoft sql server\mssql\binn
    sqlservr.exe -c -m
    (5)进查询分析器,从备份中恢复master数据库。
    restore database master from masterbak
    restore database msdb from disk='e:\bak\msdb.bak'
    MASTER还原后,SQL中用户数据库的信息也会恢复。
    (6)如果MASTER没有备份,则需要用sp_attach_db命令将用户数据库附加到新的MASTER数据库中。全备份+差异备份:以一周为周期,星期日进行全备份,星期一到星期六每天进行差异备份。全备份+日志备份:以一周为周期,星期日进行全备份,星期一到星期六每天进行日志备份。文件组备份+日志备份:备份周期取决于数据库的大小和能力,每周期分别进行一部分数据文件备份,每天进行日志备份。手动创建备份:使用T_SQL   语句创建备份设备。在SQL   Server   中使用sp_addumpdevice语句创建备份设备,其语法形式如下:sp_addumpdevice   磁盘类型,备份设备的逻辑名称,备份设备的物理名称例:创建备份设备zwbackuse   masterExec   sp_addumpdevice   ‘disk’   ,’zwback’,   ’d:\back.bak’   -   -创建备份设备exec   sp_dropdevice   ‘zwback   ‘     --删除备份设备T-SQL创建完全备份语法:backup   database   数据库名     to     永久设备逻辑名with   init   /noinit--init         表示重写--noinit     表示追加(默认)【例】把xscj1数据库完全备份到xscj1backup设备里backup   database   xscj   to   backup_xscj   with   noinitT-SQL创建差异备份语法:backup   database   数据库名     to     永久备份设备逻辑名with   differentialT-SQL创建日志备份语法:backup   log   数据库名     to     永久备份设备逻辑名with   init/noinit【例】追加xscj数据库的日志备份到backup_xscj设备里    backup   log   xscj   to   backup_xscj   with   noinit注意:还原模型为简单时,不允许做日志备份.恢复数据库:从完全备份中恢复数据库语法:restore   database   数据库名   from     永久备份设备逻辑名【例】先把xscj数据库备完全份到xscj_full设备里,再恢复数据库.backup   databse   xscj     to   xscj_fullrestore   database   xscj   from   xscj_full分步恢复数据库语法:restore   database   数据库名   from     永久备份设备名with   file=n   ,recovery/norecovery--n   表示第几个文件   在备份设备中从1开始数--recovery     使数据库可以运行,但无法还原其它事务--norecovery   是数据库不在运行,但可以还原其它事务【例】从backup_xscj数据库中分布恢复数据库restore   database   xscj   from   backup_xscjwith   file=1   ,norecoveryrestore   database   xscj   from   backup_xscjwith   file=2   ,norecoveryrestore   log   from   xscj   from   backup_xscjwith   file=3   recovery
      

  3.   

    右击数据库 -》知道你的.MDF文件的地址 选中它 点击添加就OK
      

  4.   

    你现在手里有.mdf 和 .ldf 文件么?
      

  5.   

    新建库 右击->所有任务->还原数据库 有MDF 和 LDF 有更好
      

  6.   

    有MDF 和 LDF  就直接附加了
      

  7.   

    右击数据库 -》找到你的.MDF文件的地址 选中它 点击添加就OK
      

  8.   

    TO:楼上的各位朋友
    这个数据库文件没有扩展名,
    另我按fredrickhu朋友所说的,选择从设备后,在选择设备中加入了路径后,在选项 选项卡上也勾上了在现有数据库上强制还原,确定后提示:"无法打开备份设备'D:\路径\'。设备出现错误或设备脱机.....。RESTORE DATABASE操作民常终止.
      

  9.   

    如果你有mdf,ldf文件,可以用附加的方式来还原。
    另外,如果你之前是备份出来的,则可以用还原的方式来执行