数据库修复语句
㈠ 如何恢复数据库的内容
昨天帮一个朋友恢复了sql server 数据库 现在把过程写出来 大瞎穗家一起分享
我那个哥们是从别人那拷了一个数据库的数据文件 (c:mssql data 目肆蚂录下的文件)
最初我是用的
在一台好的机器上重新安装SQL Server 建立相同的数据库设备(大小) 和数据库
停掉SQL Server 用拷贝出来的数据库文件覆盖刚建立的数据库文件 再重新启动
SQL Server 但一直不可以 我猜关键是无法建立相同的数据库设备(大小)
后来采用了
系统存储过程
sp_attach_db // 附加数裂神埋据库文件到服务器
或
sp_attach_db_single_file // 附加数据库的单个文件到服务器
具体的sql 语句就是
例如
EXEC sp_attach_single_file_db pubs e:datapubs mdf sp_attach_db @dbname= conmis @filename = d: conmis _data mdf @filename = d: conmis _log ldf
如何附加数据库文件到服务器(即 通过* mdf *ldf 文件修复数据库)
另外查找资料时看到也可以通过日志恢复以前的数据 不知那位哥们看看是不是可以
用日志恢复
restore log {data_name|@database_name_var}fromwith [norecovery ecoverystandby_undo_file_name][ ][stopat={data_time|@data_time_var}
例如 库名为database 日志为database _log要求恢复 / / : 前的数据
lishixin/Article/program/SQL/201311/16392
㈡ 请教如何使用DBCC命令修复数据库的相关推荐
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 替换成真实的数据库名字。
㈢ 怎么修复sql2005数据库
sql2005数据库修复方法如下:
1、停止数据库服务。
2、将需要恢复的数据库文件复制到另外的位置。
3、启动数据库服务。
4、确认要恢复的数据库文件已经成功复制到另外的位置,然后在SQL
Server
Management
Studio中删除要恢复的数据库。
5、新建同名的数据库(数据库文件名也要相同)。
6、停止数据库服务。
7、用第2步中备份的.mdf文件覆盖新数据库的同名文件。
8、启动数据库服务。
9、运行alter
database
dbname
set
emergency,将数据库设置为emergency
mode
10、运行下面的命令就可以恢复数据库:Titleuse
masterdeclare
@databasename
varchar(255)
set
@databasename='要恢复的数据库名称'
㈣ 数据库修复的数据库升级错误修复
1.我们使用默认方式建立一个供恢复使用的数据库(如pos)。可以在SQL Server Enterprise Manager里面建立。
2.停掉数据库服务器。
3.将刚才生成的数据库的日志文件pos_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件pos_data.mdf。
4.启动数据库服务器。此时会看到数据库pos的状态为“置疑”。这时候不能对此数据库进行任何操作。
5.设置数据库允许直接操悉模闷作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库睁弯服务器,按右键,选择“属性”,在“服务器设置”页面中
将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
exec sp_configure 'allow updates',1
go
reconfigure with override
go
6.设置pos为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID('pos')
--此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读置疑脱机紧急模式”可以看到数据库里面的表,但是仅仅有系统表
7.下面执行真正的恢复操作,重建数据库日志文件
go
dbcc rebuild_log('pos','D:Program FilesMicrosoft SQL ServerMSSQLDatapos_log.ldf')
go
--执行过程中,如果遇到下列提示信息:
--服务器: 消息 5030,级别 16,状态 1,行 1
--未能排它地锁定数据库以执行该操作。
--DBCC 执行完毕。如果 DBCC 输出了错码态误信息,请与系统管理员联系。
--说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了pos库的系统表,那么退出SQL Server
Enterprise Manager就可以了。
--正确执行完成的提示应该类似于:
--警告: 数据库 'pos' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能
需要删除多余的日志文件。
--DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
--此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
8.验证数据库一致性(可省略)
go
dbcc checkdb('pos')
--一般执行结果如下:
--CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'pos' 中)。
--DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
9.设置数据库为正常状态
go
exec sp_dboption 'pos','dbo use only','false'
go
--如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
10.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server
Enterprise Manager里面恢复,也可以使用如下语句完成
exec sp_configure 'allow updates',0
go
reconfigure with override
go
㈤ 如何修复sql数据库master
在网上搜索了一下,发现了一篇介绍比较详细的,而且也确实解决了这一问题(我在VM上测试过可以),特将其全文转贴如下:
关于系统数据库的恢复总结如下:
在SQL Server数据库中,系统信息存储在系统数据库中,主要的系统数据库包括:
master-从整体上控制用户数据库和SQL Server操作,在创建了任何用户定义的对象后,都要备份它
model-为新数据库提供模版和原型
msdb-包含了有关作业、报警及操作员等信息
如果包含系统数据库的介质变了,那么必须重建系统数据库,如果你仍然可以启动SQL Server服务,则可以通过RESTORE语句从系统数据库的备份中恢复数据库。
如果master坏了,不能启动系统,可以按照下面步骤进行恢复
1.重建系统数据库 运行c:/mssql7/binn/rebuildm.exe,按照提示进行即可,
过程中需要系统数据库样本的路径,可在安装光盘中找到;
2 重建系统数据库后,启动SQL Server服务,用系统数据库的备份恢复数据库
就行了通常恢复顺序为master->msdb->model
在恢复master的备份时要注意:必须在单用户(single user)模式下进行
a.进入单用户模式的方法:
1.在命令行模式下输入sqlservr -c -f -m或者输入sqlservr -m
其中:-c 可以缩短启动时间,SQL Server 不作为Windows NT的服务启动
-f 用最小配置启动SQL Server
-m 单用户模式启动SQL Server
2.可以在控制面板-服务-MSSQLServer的启动参数中输入-c -f -m或者输入-m,点击开始
3.进行master数据库的恢复
a.直接进入查询分析器,有个提示不要理会它
输入恢复语句进行数据库恢复:
RESTORE DATABASE master from disk='c:/具体的备份文件名'
b.或者用这个,在命令提示符下输入,注意大小写
使用"windows身份验证"的,输入:isql /E
使用"sql server和windows身份验证"的,输入:isql /U"用户名" /P"密码"
然后在出现的提示符下输入(注意1>,2>是提示符):
㈥ 数据库损坏如何修复(bcp
ORDER BY NAME把查询的结果集全部复制下来,新建一个文本文件取名为“导出.bat”把结果集复制进去并保存,把该文件存放在d盘目录下。2.在查询分析器中选择思迅数据库运行:
select 'bcp 问题数据库..'name' IN ''d: estdb'name'.txt -c -Usa -S服务器名小写 -P ' FROM SYSOBJECTS WHERE TYPE = 'U'
ORDER BY NAME
把查询的结果集全部复制下来,磨物山新建一个文本文件取名为“导入.bat”把结果集复制进去并保存,把该文件存放在d盘目录下。3.运行“导出.bat”(注意:该文件双击即可运行),数据库中的数据会倒出到TESTDB目录中。4.删除原来的问题数据库,重新建立新的数据库。5.在查询分析器中选择思迅数据库运行:
select 'delete 'name FROM SYSOBJECTS WHERE TYPE = 'U'
然后把返回的结果集复瞎中制,新建一个查询分析器窗口,把复制的内容粘贴下运行!6.最后运行“导入.bat” ,倒入成功后就恢复数据库了!7.最后在查询分析器中选择思迅数据库运行
uset_sys_system set sys_var_value=(select max(flow_id) from t_im_flow where num2=1) where sys_var_id='ioflow_pointer'
go8.日结蚂颂,检查数据。注意:a.请根据语句中的汉字提示,进行修改对应内容。如:语句中的“问题数据库”,修改为hbposv5
㈦ 数据库如何修复
可能有文件缺失或损坏,可以停掉SQL Server服务,先将数据库文件夹复制一份并安全存储,对数据库所在磁盘执行CHKDSK,排除磁盘错误,然后启动SQL Server服务,尝试修复数据库:
1.在SQL Server Management Studio中随便创建一个数据库,例如:PVLink。
2.停止SQL Server服务。
如果不停止此服务,刚才创建的PVLink数据库将即不能被拷贝,也不能被覆盖。
3.把已经损坏的数据库的mdf文件拷贝并覆盖刚才新建的数据库产生的mdf文件。
4.启动SQL Server服务。
此时可以看见刚才创建的PVLink数据库名字后面没有加号,无法察看其任何信息,其实目前它已经处于无法使用的状态。
5.把数据库设置为紧急状态。
通过在“查询分析器”中执行:alter database PVLink set EMERGENCY 可以将数据库设置为紧急状态,此时数据库PVLink的图标改变成粉红色并出现“紧急”字样。
6.将数据库设置为单用户模式。
如果不设置为单用户模式,我们将无法使用带有效repair选项的DBCC CHECKDB来检查/修复数据库,SQL Server 2005设置单用户模式比SQL Server 2000容易,只要在“查询分析器”中执行:
use master
go
sp_dboption 'PVLink',single,true
7.修复数据库
修复数据库主要使用DBCC来操作,一般来讲,我们可以使用以下三个选项来修复:
●REPAIR_ALLOW_ DATA_LOSS
尝试修复报告的所有错误。这些修复可能会导致一些数据丢失。
●REPAIR_FAST
仅为保持向后兼容性而保留。
●REPAIR_REBUILD
执行由 REPAIR_FAST 执行的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。
一般我们通过执行:DBCC CHECKDB('PVLink',REPAIR_REBUILD) 即可完成修复工作,此时 SQL Server 2005会给出很多提示,因为这个过程可能会导致一些数据库设计或者数据的丢失,并且在这个过程中,会产生新的以ldf为扩展名的数据库日志文件。
8.完成以上的步骤后,一般情况下数据库应该可用了,如果数据库此时仍然是紧急状态,可以通过:alter database PVLink set ONLINE ,把数据库变成在线状态。
检查PVLink数据库内数据是否正常,是的话换回原数据库即可。
㈧ 如何修复SQL数据库置疑 修复SQL数据库置疑方法
1、在实际的操作中由于突然断电或者突然断网造成数据库置疑(在企业管理器中数据库后面出现置疑两个字),下面我们通过以下方法来进行修复置疑的数据库。
2、我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
3、停掉数据库服务器。
4、将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
5、启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。
6、设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
㈨ 如何恢复和修复MS SQL数据库的MDF文件[2]
怎么办呢?别着急 下面我们举例说明恢复办法
A 我们使用默认方式建立一个供恢复使用的数据库(如test) 可以在SQL Server Enterprise Manager里面建立
B 停掉数据库服务器
C 将刚才生成的数闷谈仿据库的日志文件test_log ldf删除 用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data mdf
D 启动数据库服务器 此时会看到数据库test的状态为 置疑 这时候不能对此数据库进行任何操作
E 设置数据库允许直接
操作系统表 此操作可以在SQL Server Enterprise Manager里面选择数据库服务器 按右键 选择 属性 在 服务器设置 页面中将蚂纤 允许对系统目录直接修改 一项选中 也可以使用如下语句来实现
以下是引用片段 usemaster go sp_configure allowupdates go reconfigurewithoverride go
F 设置test为紧急修复模式
update sysdatabases set status= where dbid=DB_ID( test )
此时可以在SQL Server Enterprise Manager里面看到该数据库处于 只读置疑脱机紧急模式 可以看到数据库里面的表 但是仅仅有系统表
G 下面执行真正的恢复操作 重建数据库日志文件
dbcc rebuild_log( test C:Program FilesMicrosoft SQL ServerMSSQLData est_log ldf )
执行过程中 如果遇到下列提示信息
服务器: 消息 级别 状态 行
未能排它地锁定数据库以执行该操作
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 发现了 个分配错误和 个一致性错误(在数据库 test 中)
DBCC 执行完毕 如果 DBCC 输出了错误信息 请与系统管理员联系
I 设置数据库为正常状态
sp_dboption test dbo use only false
侍拍如果没有出错 那么恭喜 现在就可以正常的使用恢复后的数据库啦
J 最后一步 我们要将步骤E中设置的 允许对系统目录直接修改 一项恢复 因为平时直接操作系统表是一件比较危险的事情 当然 我们可以在SQL Server Enterprise Manager里面恢复 也可以使用如下语句完成
以下是引用片段 sp_configure allowupdates go reconfigurewithoverride go
lishixin/Article/program/SQL/201311/16354