sql server还原数据

发布时间:2019/2/12 17:21:00
sql server还原数据
如果运行sql server 的数据库的系统 突然意外崩溃  需要重做系统 而我们一般数据库数据都会存放在其他盘符 这是就需要重做系统之后 重新安装数据库并还原之前存储的数据库了
1; 找到系统崩坏前数据库的存放路径一般为d:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data 具体的需要根据个人情况判定。
2;把Date下的数据打包复制保存出来,重新安装所需数据库。知道安装成功。
3;打开数据库登录,点击数据库-右键-附加 在附加选项中选择之前打包的数据库备份,这是系统会自动识别里面的数据库文件 选中之后 点击确认便可附加成功 以此类推把所有数据库都附加上即可。
#个别情况由于数据库比较多 一个一个点太过麻烦 这里有一键附加的脚本 (内容比较复杂且容易出错,新手仅供参考 不建议使用 );
运行环境:
服务器系统:win2008s 
数据库版本:mssql 2000 s3
代码:
create table tempFile(
Name nvarchar(255) Not Null,depth int Null, IsFile bit Null
)
create table smoPrimaryFileProp(
property sql_variant Null, value sql_variant Null
)
create table smoPrimayChildren(
status int,fileid int,name sysname,filename nvarchar(512)
)
GO
--以上三个表为临时表  完成后可以删除  如果在2005以上的版本可以使用临时变量表
Insert Into tempFile Exec master.dbo.xp_dirtree 'D:\Program Files (x86)\Microsoft SQL Server\MSSQL\LibraryData',1,1
--以上就为所有要附加的数据库文件所在文件夹
Declare @Path varchar(2000),
@File nvarchar(255),
        @sql nvarchar(4000),
        @DataBase sysname
set @Path = 'D:\Program Files (x86)\Microsoft SQL Server\MSSQL\LibraryData\'
-- @Path变量即为所有要附加的数据库文件所在的文件夹
Declare cur_File Cursor For 
    Select Name From tempFile As a Where IsFile=1 And Name Like '%.mdf'  
Open cur_File
  Fetch Next From cur_File Into @File
While @@Fetch_Status=0
Begin
    Set @sql = 'dbcc checkprimaryfile (N'''+ @Path+ @File + ''' , 2) With No_Infomsgs'
    Insert Into smoPrimaryFileProp Exec (@sql)
    Set @sql='dbcc checkprimaryfile (N''' +@Path+ @File + ''' , 3) With No_Infomsgs'
    Insert Into smoPrimayChildren Exec (@sql)
    Select @DataBase=Quotename(Convert(nvarchar(255),value)),
         @sql=null        
    From smoPrimaryFileProp Where Convert(nvarchar(255),property)='Database name'  
    Select @sql=Isnull(@sql+','+Char(13)+Char(10), 'Create DataBase '+@DataBase+' On'+Char(13)+Char(10))+'(FileName=N'''+@Path+Right(Rtrim(filename),Charindex('\',Reverse(Rtrim(filename)))-1)+''')'
    From smoPrimayChildren
    Exec(@sql+' For Attach')
      Print N'成功附加数据库: '+@DataBase  
    Delete From tempFile
    Delete From smoPrimayChildren
    Delete From smoPrimaryFileProp  
    Fetch Next From cur_File Into @File
End
Close cur_File
Deallocate cur_File
Go
代码结束。
运行完成后 就会显示哪些数据库成功附加了  就成功了。


Copyright© 2004-2020 河南海腾电子技术有限公司 版权所有   经营性ICP/ISP证 备案号:B1-20180452   豫公网安备 41019702002018号    电子营业执照