怎么用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语句备份和恢复数据库:等您坐沙发呢!