回答

收藏

SQL Server 2008年不会截断

技术问答 技术问答 165 人阅读 | 0 人回复 | 2023-09-11

我觉得自己很有经验SQL但是我没有做这两件事:
/ v$ J! D8 t, d' B减少分配的日志的大小。
& v$ ]  y; I6 N$ f- F截断日志。
DBCC sqlperf(日志空间)
: X7 O! Y! P- u8 ^6 z返回:7 I" _; A" k% C7 X4 F* H) g
Database Name   Log Size (MB)   Log Space Used (%) StatusByBox     .25     30.0657    以下不适用SQL 2008
  e  q+ H7 Q; P7 _6 X/ nDUMP TRANSACTION ByBox WITH TRUNCATE_ONLY操作下列命令无济于事0 Q7 E6 y6 C$ k8 E+ v# B
DBCC SHRINKFILE ('ByBox_1_Log' ,1)DBCC shrinkdatabase(N'bybox')我试过备份。我还试图将数据库的属性设置为-恢复模型同时设置为完整和简单,以及上述所有组合。我也试图设置正确的SQL Server
0 g: v6 W4 F6 X" Y4 |. v2005和SQL Server 2008兼容性。2 J2 T7 ~" @3 G6 t' ]
不管我尝试什么,这个日志仍然是1964年.25 MB,已使用了30%,而且还在增长。' l/ e7 i! v0 M2 k, Q4 m8 x
希望日志回落到0%将日志文件的大小降低到100 MB,这就够了。我的数据库一定讨厌我。它只是忽略了我要求它执行的所有关于日志的操作。( [3 ~, f' H* D2 w9 D# f- N+ o
进一步说明。生产数据库中有很多复制的表,当我使用以下命令在开发盒上执行还原时,这些表将关闭:1 F5 z7 u: T( {5 A0 V
-- Clear out pending replication stuffexec sp_removedbreplicationgoEXEC sp_repldone @xactid = NULL,@xact_segno = NULL,    @numtrans = 0,@time = 0,@reset = 1go试:/ z% P* [' z9 n! C- D, D+ W; n
SELECT log_reuse_wait,log_reuse_wait_descFROM sys.databasesWHERE NAME='bybox'退货5 I9 d* I  F1 Y- d' i5 j# g) B& S
log_reuse_wait  log_reuse_wait_desc0   NOTHING如何解决这个问题?4 {* f- V: }" y4 c1 p
看这个,把恢复模型设置为FULL,我尝试了以下操作:
8 T5 I: R! X) X! D4 uUSE masterGOEXEC sp_addumpdevice 'disk','ByBoxData',N'C:\\bybox.bak'-- Create a logical backup device,ByBoxLog.EXEC sp_addumpdevice 'disk','ByBoxLog',N'C:\\bybox_log.bak'-- Back up the full bybox database.BACKUP DATABASE bybox TO ByBoxData-- Back up the bybox log.BACKUP LOG bybox TO ByBoxLog返回:
# ?/ ], U& n* U: q' O3 q  aProcessed 151800 pages for database 'bybox',file 'ByBox_Data' on file 3.Processed 12256 pages for database 'bybox',file 'ByBox_Secondary' on file 3.Processed 1 pages for database 'bybox',file 'ByBox_1_Log' on file 3.BACKUP DATABASE successfully processed 164057 pages in 35.456 seconds (36.148 MB/sec).Processed 2 pages for database 'bybox',file 'ByBox_1_Log' on file 4.BACKUP LOG successfully processed 2 pages in 0.056 seconds (0.252 MB/sec).完美的!但事实并非如此。% F# d- K  E# s0 h# L8 q
DBCC SHRINKFILE(’ByBox_1_Log’,1)现在返回! C6 E& V2 o6 _" K! U* M/ C
DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages  251425  251425 251424  251424并且DBCC SQLPERF(LOGSPACE)仍然报告30%的使用率。. A/ b! V# l/ h2 f- h' _
我想我可能不得不辞职SQL Server
8 F- c; k& e8 Y2008年可能会出现错误,或者我的日志文件以某种方式被损坏。然而,我的数据库处于良好的工作状态,这让我觉得有错误(    对此 不满意)    。  S" p' X2 w/ @6 N1 [
                                                               
' y# _. _+ A; L8 i/ x& x+ N; j    解决方案:                                                               
, w4 C5 o" E. {( ?) o$ U: R; ]                                                                找到解决方案!  V* |2 ^/ C, x- s) `. a/ p
我将数据负载添加到数据库中,所以我不得不扩展日志。然后,我删除了不必要的数据,使数据库恢复到原始状态。$ \) C* h5 m+ X- k
备份和看,完美的0%日志。
: t1 A' E) r  p$ ^  `' ~因此,解决方案是扩展日志。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则