> 唯美句子 > 怎么用SQL语句备份和恢复数据库

怎么用SQL语句备份和恢复数据库

怎么用SQL语句备份和恢复数据库?

SQL语句备份和恢复

SQL Server:

备份命令:

BACKUP DATABASE test

TO disk = 'c:\test'

WITH FORMAT,

NAME = 'Full Backup of MyNwind'

解释如下:

NAME = 'Full Backup of MyNwind' --这个是备注,随便写。 还原命令:

USE master

GO

RESTORE DATABASE test_wt

FROM disk = 'c:\test_wt'

GO

MySQL:

备份:

mysqldump -u root -p database_name > d:\db.bak

恢复:

mysql -u root -p database_name < d:\db.bak

注意:在WIN下,路径用path/filename.sql是不行的,那就用path\filename.sql

如何修复 SQL 数据库置疑

修复sql2000数据库置疑

在实际的操作中由于突然断电或者突然断网造成数据库置疑(在企业管理器中数据库后面出现置疑两个字),下面我们通过以下方法来进行修复置疑的数据库。

A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。

B.停掉数据库服务器。

C. 将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。

D. 启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。

E. 设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。

use master

go

sp_configure 'allow updates',1

go

reconfigure with override

go

F.设置test为紧急修复模式

update sysdatabases set status=-32768 where dbid=DB_ID('test')

此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表

G.下面执行真正的恢复操作,重建数据库日志文件

dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')

执行过程中,如果遇到下列提示信息:

服务器: 消息 5030,级别 16,状态 1,行 1

未能排它地锁定数据库以执行该操作。

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。

正确执行完成的提示应该类似于:

警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。

H.验证数据库一致性(可省略)

dbcc checkdb('test')

一般执行结果如下:

CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

I.设置数据库为正常状态

sp_dboption 'test','dbo use only','false'

如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。

J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成

sp_configure 'allow updates',0

go

reconfigure with override

go

怎样修复已经损坏的SQL数据库

1.停止SQL Server的服务,备份SQL Server安装目录下的\data子目录

下故障数据库的两个文件,一个数据文件hbposv6_branch_data.mdf,

一个hbposv6_branch_log.ldf(也有可能非此命名),同时查看磁盘

空间是否有足够的空间;

2.启动SQL Server服务(如已停止),创建一个新的数据库,命名为

原来数据库的名字。

3.停止SQL Server

4.把老数据库的MDF文件(hbposv6_branch_data.mdf)替换

新数据库的相应的MDF文件,

并把LDF文件(hbposv6_branch_log.ldg)删除。

5.重新启动SQL Server服务,然后运行如下命令:

Use Master

go

sp_configure 'allow updates', 1

reconfigure with override

go

begin tran

update sysdatabases set status = 32768 where name = 'hbposv6_branch'

--Verify one row is updated before committing

commit tran

go

6.停止SQL然后重新启动SQL Server服务,然后运行如下命令

(更换日志文件路径地址):

use master

go

DBCC TRACEON(3604)

DBCC REBUILD_LOG

('hbposv6_branch',

'c:\Program Files\Microsoft SQL Server\MSSQL\Data\hbposv6_branch_log.ldf')

--在这里,请输入你的数据库的路径

go

7.停止SQL然后重新启动SQL Server服务,然后运行:

use master

go

update sysdatabases set status = 8 where name = 'hbposv6_branch'

go

sp_configure 'allow updates', 0

reconfigure with override

go

8.运行dbcc checkdb(db_name) 检查数据库的完整性

9.修复数库

--请在查询分析器中执行下列语句.执行前断开其它

所有数据库连接,最好是断开网线

--如果不是该数据库名,请将数据库

--hbposv6_branch

--改为要修复的数据库

USE master

Go

--单用户模式

EXEC sp_dboption 'hbposv6_branch', 'single user', 'TRUE'

go

--数据库检查

DBCC CHECKDB ('hbposv6_branch')

Go

--如果返回结果出现了红色的提示文字,说明数据库中存在错误,需要修复

--数据库修复

DBCC CHECKDB ('hbposv6_branch','repair_rebuild')

Go

--再次数据库检查,如果返回结果中没有了红色的提示文字,

说明修复成功;

DBCC CHECKDB ('hbposv6_branch')

Go

--否则意味着还需要更高级别的修复;尝试将上面修复语句的

'repair_rebuild'换为'repair_allow_data_loss'再试,

之后再次检查数据库。

--如果还有错误未修复,请把这些信息以文字的方式发给我们

--退出前请一定要执行以下语句返回到多用户模式

EXEC sp_dboption 'hbposv6_branch', 'single user','FALSE'

go

注:都要把 dbname 替换成真实的数据库名字。

怎么用SQL语句备份和恢复数据库?

SQL语句备份和恢复

SQL Server:

备份命令:

BACKUP 绩ATABASE test

TO disk = 'c:\test'

WITH FORMAT,

NAME = 'Full Backup of MyNwind'

解释如下:

NAME = 'Full Backup of MyNwind' --这个是备注,随便写。

还原命令:

USE master

GO

RESTORE DATABASE test_wt

FROM disk = 'c:\test_wt'

GO

MySQL:

备份:

mysqldump -u root -p database_name > d:\db.bak

恢复:

mysql -u root -p database_name < d:\db.bak

注意:在WIN下,路径用path/filename.sql是不行的,那就用path\filename.sql

mysql数据库怎样用日志恢复数据sql语句

要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出。启用二进制日志的选项为-- log-bin。要想确定当前的二进制日志文件的文件名,输入下面的MySQL语句:

SHOW BINLOG EVENTS /G

你还可以从命令行输入下面的内容:

mysql --user=root -pmy_pwd -e 'SHOW BINLOG EVENTS /G'

将密码my_pwd替换为服务器的root密码。

1. 指定恢复时间

对于MySQL 4.1.4,可以在mysqlbinlog语句中通过--start-date和--stop-date选项指定DATETIME格式的起止时间。举例说 明,假设在今天上午10:00(今天是2006年4月20日),执行SQL语句来删除一个大表。要想恢复表和数据,你可以恢复前晚上的备份,并输入:

mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 /

mysql -u root -pmypwd

该命令将恢复截止到在--stop-date选项中以DATETIME格式给出的日期和时间的所有数据。如果你没有检测到几个小时后输入的错误的SQL语句,可能你想要恢复后面发生的活动。根据这些,你可以用起使日期和时间再次运行mysqlbinlog:

mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/bin.123456 /

mysql -u root -pmypwd /

在该行中,从上午10:01登录的SQL语句将运行。组合执行前夜的转储文件和mysqlbinlog的两行可以将所有数据恢复到上午10:00前一秒钟。你应检查日志以确保时间确切。

数据库置疑之后修复完,用 dbcc checkdb(数据库名) 检查数据的时候提示有一致性错误

数据库 CHECKDB 发现了x个分配错误和 x 个一致性错误

现在以数据库text为例,说明该问题的处理方法:

--1、在SQL查询分析器中执行以下语句:(注以下所用的text为数据库名称,请用户手工改为自己的数据库名)

use text

dbcc checkdb

--2、查看查询结果,有很多红色字体显示,最后结果有这样的提示:

--CHECKDB --发现了x个分配错误和 x 个一致性错误(在数据库 'text' 中)。

--一般情况下,引起分配错误的原因是磁盘损坏或突然停电;一致性错误可能是数据库中的表或索引坏,一般都可修复。

--3、查看红色字体,并把有错误的数据库表名记录下来,或把索引损坏的表名记录下来。

--4、把数据库设置为单用户模式,直接在查询分析器中执行以下语句即可:(如发现语句运行不成功,请把用户的电脑注销一下,后再重新运行一下。)

EXEC sp_dboption 'text, 'single user', 'TRUE'

--5、进入查询分析器执行如下语句:

use text

dbcc checkdb('text',repair_allow_data_loss) -------修复数据库

dbcc checkdb ('text',REPAIR_REBUILD) -------修复数据库索引

--6、再执行:dbcc checkdb,检测数据库,出现结果为:

--CHECKDB 发现了0个分配错误和 0个一致性错误(在数据库 'text' 中)。

--数据库已经修复完毕。

--7、取消单用户模式,即直接在查询分析器中执行以下语句即可:

EXEC sp_dboption 'pos', 'single user','FALSE'

sql恢复修改前数据

一,如果是oracle数据库,且刚删除不久,那么可以执行下面语句

insert into 表名 select * from 表名 as of timestamp to_timestamp('2007-07-23 10:20:00', 'yyyy-mm-dd hh24:mi:ss');

语句中的日期时间改成你误操作之前的最近时间

二,如果是sqlserver数据库,那么

1、首先对误删后的数据库做个日志备份;

backup log 数据库名 to disk='路径及日志备份文件名'

2、把数据库恢复到最近一次全库备份的日期;

RESTORE DATABASE 数据库名 FROM DISK='路径及数据库备份文件名'

WITH REPLACE,NORECOVERY

3、用步骤1的日志备份把数据库恢复到你误删的那一刻之前;

RESTORE LOG 数据库名 FROM DISK='路径及日志备份文件名'

WITH RECOVERY,STOPAT='2009-4-24 16:40:10'

语句中的日期时间改成你误操作之前的最近时间

三,如果修改之前有做数据库备份,可以新建一个库,把备份还原上去,导出表数据,再导入到现在用的库中去。.

实时备份数据库到另一个磁盘,有多种不同的实现方式,例如:

1,有两台服务器的话可以做双机热备

2,只有一台服务器可以做磁盘镜像

3,也可以用专门的数据库备份软件

sql数据库用语句删除表,怎么恢复

有备份就拿备份应付吧,没有就只能像一楼说的那样了

怎么用SQL语句备份和恢复数据库?

SQL语句备份和恢复

SQL Server:

备份命令:

BACKUP DATABASE test

TO disk = 'c:\test'

WITH FORMAT,

NAME = 'Full Backup of MyNwind'

解释如下:

NAME = 'Full Backup of MyNwind' --这个是备注,随便写。

还原命令:

USE master

GO

RESTORE DATABASE test_wt

FROM disk = 'c:\test_wt'

GO

MySQL:

备份:

mysqldump -u root -p database_name > d:\db.bak

恢复:

mysql -u root -p database_name < d:\db.bak

注意:在WIN下,路径用path/filename.sql是不行的,那就用path\filename.sql

SQL数据库修复工具怎么使用

极佳SQL数据库修复工具功能:

支持 各种版本SQL数据库

支持 SQL数据库损坏 无法附加 各种报错问题修复

支持 SQL数据库 823 824 等错误修复

完美支持各种字符集,支持从MDF文件反删除记录.

支持 MDF NDF文件组恢复

怎么用SQL语句备份和恢复数据库:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!