回答

收藏

SQL Server 2008年不会截断

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

我觉得自己很有经验SQL但是我没有做这两件事:7 j3 ^( W6 `: [3 i: c  z$ X
减少分配的日志的大小。
. o4 t6 M2 F) p6 a( R! J截断日志。
DBCC sqlperf(日志空间)
6 b5 N9 L8 s9 J+ j. M. ~8 P& q返回:$ V+ i. g  [  k- ^- k0 Z0 b8 q3 C( i
Database Name   Log Size (MB)   Log Space Used (%) StatusByBox     .25     30.0657    以下不适用SQL 2008
7 u2 M5 t0 `1 l" A' w% IDUMP TRANSACTION ByBox WITH TRUNCATE_ONLY操作下列命令无济于事
: N0 a2 t$ m/ g0 x3 GDBCC SHRINKFILE ('ByBox_1_Log' ,1)DBCC shrinkdatabase(N'bybox')我试过备份。我还试图将数据库的属性设置为-恢复模型同时设置为完整和简单,以及上述所有组合。我也试图设置正确的SQL Server4 N# k% X( U3 R: w% S+ t
2005和SQL Server 2008兼容性。
; n( {* ]0 N  }# l5 S2 b/ i# w不管我尝试什么,这个日志仍然是1964年.25 MB,已使用了30%,而且还在增长。1 p$ P1 {" _* e; [! b( a) i) ]+ G
希望日志回落到0%将日志文件的大小降低到100 MB,这就够了。我的数据库一定讨厌我。它只是忽略了我要求它执行的所有关于日志的操作。
$ h, ~; b  S& R5 _! V; Q进一步说明。生产数据库中有很多复制的表,当我使用以下命令在开发盒上执行还原时,这些表将关闭:
; @% n/ t* d( K" e5 {" L& r-- Clear out pending replication stuffexec sp_removedbreplicationgoEXEC sp_repldone @xactid = NULL,@xact_segno = NULL,    @numtrans = 0,@time = 0,@reset = 1go试:: o( F. w- g0 |" M5 `; T  b
SELECT log_reuse_wait,log_reuse_wait_descFROM sys.databasesWHERE NAME='bybox'退货
& W  S0 I1 D/ [, f; F% plog_reuse_wait  log_reuse_wait_desc0   NOTHING如何解决这个问题?, a! U: I. X" |
看这个,把恢复模型设置为FULL,我尝试了以下操作:; W% X. _( x( c- N' Y
USE 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返回:7 g# D# ^8 A9 R/ N$ ^- G
Processed 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).完美的!但事实并非如此。. L* `, g8 ?1 A" V7 M+ X' l
DBCC SHRINKFILE(’ByBox_1_Log’,1)现在返回5 ]% m3 B2 f0 V  d  A$ o/ }4 _
DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages  251425  251425 251424  251424并且DBCC SQLPERF(LOGSPACE)仍然报告30%的使用率。: Z( E7 {* A# s
我想我可能不得不辞职SQL Server
$ n) `1 r# E+ F; c8 u5 R$ e' q4 j3 a% M2008年可能会出现错误,或者我的日志文件以某种方式被损坏。然而,我的数据库处于良好的工作状态,这让我觉得有错误(    对此 不满意)    。
5 c4 R" H9 R. V* i9 D1 n" T                                                                - O6 }6 C/ n9 b8 t9 F( _. i
    解决方案:                                                                : m8 ]) n1 |) E: ^
                                                                找到解决方案!4 L0 n6 }$ ]* W) V
我将数据负载添加到数据库中,所以我不得不扩展日志。然后,我删除了不必要的数据,使数据库恢复到原始状态。
( [! k+ w3 T7 v- D备份和看,完美的0%日志。  y% z$ ]# @, ^3 i( w" K
因此,解决方案是扩展日志。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则