Home  >  Article  >  Database  >  SQLSERVER文件组误脱机后如何联机

SQLSERVER文件组误脱机后如何联机

WBOY
WBOYOriginal
2016-06-07 15:44:351543browse

场景:在学习文件组的恢复过程中,通过 ALTER DATABASE TEST MODIFY FILE (NAME = SUBF,OFFLINE) 把文件组给弄脱机了。这时却发现脱机之前忘记备份了。 这时该如何恢复该脱机的文件组呢? 同样的命令没有ONLINE选项: ALTER DATABASE TEST MODIFY FILE (NAME

场景:在学习文件组的恢复过程中,通过

<span>ALTER</span> <span>DATABASE</span> TEST MODIFY <span>FILE</span>(NAME <span>=</span> SUBF,OFFLINE)

把文件组给弄脱机了。这时却发现脱机之前忘记备份了。

这时该如何恢复该脱机的文件组呢?

 

同样的命令没有ONLINE选项:

<span>ALTER</span> <span>DATABASE</span> TEST MODIFY <span>FILE</span>(NAME <span>=</span> SUBF,ONLINE)

消息 155,级别 15,状态 1,第 1 行
'ONLINE' 不是可以识别的 CREATE/ALTER DATABASE 选项。

 

修改数据库脱机,联机后,脱机的文件组还是脱机状态。

<span>ALTER</span> <span>DATABASE</span> TEST <span>SET</span><span> OFFLINE
</span><span>ALTER</span> <span>DATABASE</span> TEST <span>SET</span> ONLINE

 

分离数据库再附加数据库,脱机的文件组也仍然是脱机状态。

 ---------------------------------------------------------------------------------

其实,把文件恢复就可以了(哪怕没有备份也可以执行):

<span>RESTORE</span> <span>DATABASE</span> TEST <span>FILE</span><span>=</span><span>'</span><span>SUBF</span><span>'</span> <span>WITH</span> RECOVERY

 ---------------------------------------------------------------------------------

补充另一个由桦仔提供的文件替换大法:

1. 将数据库分离 ( sp_detach_db 'xx')

2. 将数据库的所有文件移个位置

3. 按照原来的文件颁创建一个同名空库

4. 将空库 OFFLINE ( alter database xx set offline )

5. 将步骤2移走的文件移回来,替换掉步骤3创建的空库产生的对应文件

6. 将数据库 online ( alter database xx set online ), 如果不能 online, 可以试试先设置为 emergency 状态

以上方法已经测试过能通过。

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn