服装ERP论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 111|回复: 0
打印 上一主题 下一主题

[知识库] sql数据库修复

[复制链接]
跳转到指定楼层
楼主
发表于 2018-12-10 09:48:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,享用更多功能,结交更多好友,让你轻松玩转服装管理软件。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 heilin 于 2018-12-10 09:50 编辑
5 E# x; {9 o( y( I( L) ~: z3 o$ P; E! B! ?4 }
验证数据库一致性:
' x, j* c+ U- X$ M+ X' a9 M1 \; J. a1 R$ O0 _
dbcc checkdb('test')
0 b1 T, f3 `* A7 n  y3 q1 a6 u! ~, e* X
/ F3 w2 \; \6 P- m1 z$ Y
7 x) ]" f* N# b/ V! ^/ p# J
尝试修复数据库的一致性错误:5 X& g3 g# J. @# D
use master; M% D8 \! J8 o6 w

# {* w, m4 b. i+ `" V- o2 pdeclare @databasename varchar(255)# {( l. ~2 z; w* O

  j+ u! Z/ q/ S3 T: mset @databasename= '需要修复的数据库实体的名称'
4 c) p: J! C7 p, K3 K) C* A) y5 Y2 h7 m  g  c% }2 ]
exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态; X  e0 y0 y0 t* Z5 a
. i. y/ n. a5 {# C
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
6 {5 N7 q( t! n3 [6 v7 Q
( H/ `5 l3 U/ n; e, jdbcc checkdb(@databasename,REPAIR_REBUILD); g" Z% S9 x' C; P6 {; p. X( w

- s9 Y* H  |$ D2 I7 z5 X' i" Aexec sp_dboption @databasename, N'single', N'false'
# J- R8 e  a9 m6 C  L# k: e. _- j% w4 K( ~+ f4 s$ R
可能会有如下提示:2 t6 Q7 N8 D& h  v6 ?6 x: i
服务器: 消息 1505,级别 16,状态 1,行 1
; g* G" \$ C  H+ L( R! pCREATE UNIQUE INDEX 终止,因为发现了索引 ID 1 的重复键。最重要的主键为 '1000000236'。) i( s) b  X/ k8 D1 b
( N; d8 R+ _; K5 Q% }0 I
2 O* i8 Q7 n2 W

: U0 N! [- I" G" C, h: Y7 {& P. l
* m5 L/ S8 ?- _) g7 K7 F: R--select表(部分)内容时提示:
' n! f5 t9 N5 L6 R. y服务器: 消息 8908,级别 22,状态 6,行 15 F3 e+ v. d( D& P" y5 H0 J0 c& S
表错误: 数据库 ID 15,对象 ID 324912229,索引 ID 0。链的链接不匹配。(1:34063)->next = (1:33983),但 (1:33983)->prev = (1:32614)。
& D" e- v4 s2 y) r( |% D" W; o1 ]; M+ J. R. \$ D  L
连接中断6 w. @. i4 s3 @* K

5 n% g1 g+ m+ P8 W出现这样提示,说明文件有无法修复的地方: W3 C. Y1 P, T( e
- t% k; O3 a5 `. [: E. j3 P8 e
可尝试用BCP将表导出到txt文档的方法& r* h$ j+ \2 ~, k; I) h5 E

5 C, I  D. ^  A: \' z--BCP的用法如下:0 Z( ~0 s0 K5 i+ [  \! {% @
exec master..xp_cmdshell 'BCP 数据库名..表名 out d:\a.txt -c -U"sa" -P"密码"'/ Z! a& w3 F  f4 c" P# C
--导出数据. g; k; r: D. d) d3 g
# D4 e& b' R2 v
--利用备份还原功能,创建一个新的数据库
; P4 k; y. Q8 F* z& K! Z! ]--用Drop table将无法select的表删了,重新建表2 s+ o& f* D6 |8 l# d8 W1 x
--要知道是哪张表出问题就要看对该数据库的熟悉程度了,可以每个表都select一次
: m) f! K" t6 ]( c$ G. Y. l. \9 ?2 Z2 ~7 ^4 {
exec master..xp_cmdshell 'BCP 数据库名..表名 out d:\a.txt -c -U"sa" -P"密码"'
! B% m/ S9 s/ H% z6 N( @6 j--导入数据3 J2 F2 @# L( O; j% C( B
1 y6 z2 \7 R8 u0 u" O" H/ ^
--其中exec master..xp_cmdshell是master数据库中的一个存储过程2 }- S- Z! X$ w0 u, p, p
& F. ~8 t" P( ^( F' t
--BCP为保留字7 B9 U8 M7 F& ?7 L; P
2 z9 ^6 i) ?1 s8 S$ [1 ~8 |2 I* f
--l数据库名..表名这个是指定要输出的数据库的表- j- L  t0 O5 s' f( g

9 Z4 T9 n9 d% B. I4 R2 U# \--in是方式,有out(输出)、in(导入)、queryout、format四种% G7 H7 N6 X/ h. a* @$ Y6 U4 J0 p

  B, [+ X/ i- Q; k--d:\a.txt是目标文件6 d/ ?& k1 ?5 U& ?( @9 \, ^
2 h, ]  J+ f2 y* s! N3 f" E: b
-- -c这个未知,记住一定要小些,后面的参数也一定分大小写的
/ R7 K6 q+ F/ M$ D. O
$ N, C/ |# e. f% ^: Q: m2 A-- -U"sa"数据库登录名1 g& G, |3 X* R' p/ ]

+ [  e/ i  y9 F8 c  z6 a8 B$ B-- -P"密码"数据库登录名的密码
) }, A+ ?3 [8 Q7 {$ o& o
& n+ Y: ~( _4 O+ `  k& r 9 N8 v. x/ O6 [/ H7 W

$ O" f7 a* |/ C7 D+ g. S9 _* c
  r  @# x2 ?" G; _2 G; V
) d& c7 v/ z。 x2 `; ^ 3 B# P2 o5 ~) B

  ?9 Y* J0 r- f/ Y. t ! J6 g+ ~- T+ `. @) u: V+ t5 q# ]

$ ?$ ~& z2 v) l/ K8 Q" V7 n+ H9 i, r3 g 3 S: L4 Y4 g3 k: [; a
  a+ r* A3 I+ _

/ t! w% W/ ~! ~/ u  ^& x+ w- {' I: G, d; w2 l* f7 _
7 m( V  \0 Q; A+ K4 [

6 T3 D, K/ m  W' c/ m有些硬盘有坏道导致文件无法复制的
9 I% t7 `! L$ e, D6 T
& a2 u% J" T- n) w4 ]badcopy文件分段复制后重新组合。
" b9 \- c: i/ h3 `% f1 C; Y0 t: n1 J! V
Recovery Toolbox for SQL Server将数据库里的表记录以插入语句保存到文本中。3 ?' I& l, P( s
分享到:  微信微信
收藏收藏 分享淘帖 赞 踩
服装ERP论坛,非软件官方技术交流论坛 0769ec.com www.erplt.net www.csolt.com
回复
更多

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

网站声明|手机版|小黑屋|Archiver|服装ERP论坛 ( ) 

GMT+8, 2019-3-26 13:52 , Processed in 0。080834 second(s), 22 queries , Gzip On。

Powered by X3.4

© 2001-2017

快速回复 返回顶部 返回列表