只有mdf文件,怎么恢复SQLSERVER数据库?

只有mdf文件,怎么恢复SQLSERVER数据库?,第1张

1、开启数据

2、从企业管理器,建一个同名的数据

3、停止sql

server

4、用原mdf文件覆盖新建库的数据库文件

5、重启sql

server(这时数据库应该是置疑)

6、修改服务器设置:允许对系统目录进行直接修改

sp_configure

'allow

updates',1

reconfigure

with

override

7、将数据库置为紧急状态:

update

master.dbo.sysdatabases

set

status

=

32768

where

name

=

'数据库名'

8、删除新的ldf文件,重建日志:

dbcc

rebuild_log('数据库名',

'f:\数据库名_log_new.ldf')--假设把新日志在f盘

9、update

master.dbo.sysdatabases

set

status

=

16

where

name

=

'数据库名'

10、修改服务器设置:取消

允许对系统目录进行直接修改

sp_configure

'allow

updates',

0

reconfigure

with

override

11、再使用检查工具修复错误

use

[数据库名]

alter

database

[数据库名]

set

single_user

with

rollback

immediate

dbcc

checkdb

('数据库名',REPAIR_ALLOW_DATA_LOSS)

alter

database

[数据库名]

set

multi_user

执行完毕之后,如果还有错误,重复执行11,直到没有错误为止。

如果是 Oracle , 那么还有可能, 使用 Flashback Query 恢复得回来。

其他数据库, 就不大清楚了。

下面是一个 Oracle 恢复的例子:

SQL>CREATE TABLE test_fb_table (

2ID int,

3VAL VARCHAR2(10)

4 )

Table created.

SQL>INSERT INTO test_fb_table VALUES (1, 'TEST')

1 row created.

SQL>commit

Commit complete.

假如 数据被错误的删除/更新

需要检索某个时间点上,表原有的数据。

SQL>SELECT TO_CHAR(sysdate, 'yyyy-mm-dd hh24:mi:ss') FROM dual

TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'

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

2010-11-07 13:01:37

这里删除掉数据。

SQL>delete from test_fb_table

1 row deleted.

SQL>commit

Commit complete.

确认数据已经被删除。

SQL>select * from test_fb_table

no rows selected

方法一:

这里检索出,指定时间点上,指定表的数据情况。

SQL>select * from test_fb_table

2AS OF TIMESTAMP TO_TIMESTAMP('2010-11-07 13:01:37',

3 'yyyy-mm-dd hh24:mi:ss')

ID VAL

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

1 TEST

方法二:

使用 dbms_flashback下面的方法来切换。

SQL>conn system

Enter password:

Connected.

SQL>select * from hr.test_fb_table

no rows selected

SQL>execute dbms_flashback.enable_at_time(-

>TO_TIMESTAMP('2010-11-07 13:01:37','yyyy-mm-dd hh24:mi:ss'))

PL/SQL procedure successfully completed.

SQL>select * from hr.test_fb_table

ID VAL

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

1 TEST

SQL>execute dbms_flashback.disable

PL/SQL procedure successfully completed.

SQL>select * from hr.test_fb_table

no rows selected


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6759033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存