포럼 에 등장 하 는 각종 난제: 로그 수축 문제

2776 단어
최근 온라인 커 뮤 니 티 에 서 는 어 려 운 질문 들 이 쏟 아 지고 있 습 니 다. 이 특별 기록 과 함께 게시 자의 공유, 그리고 다른 네티즌 들 의 뜨 거 운 답변 에 도 감 사 드 립 니 다.
1, 일 지 는 폭발 하여 수축 할 수 없습니다. 누가 도전 해 보 세 요!
http://bbs.csdn.net/topics/390674731?page=1#post-396518238
  :windows server 2008  sqlserver 2008
      ,          ldf    ,      sqlserver 1 ,      , sqlserver     ,        ?
       ,    。
alter database DBName set recovery simple;      --    ,VLF 248 kb       ,        
use DBName 
DECLARE @lname AS VARCHAR(50)   
SELECT name
FROM sys.database_files WHERE type=1
DBCC SHRINKFILE (@lname,100);                   --             。          。                    。
alter database DBName set recovery full;

use DBName
go
dbcc opentran
--    
/*
        :
               LSN     : (0:0:0)
                LSN : (5067131:1370:2)
DBCC     。   DBCC        ,         。
*/

DBCC loginfo()  --  2    0       ,   ,     。

--     spid   。    ?    ,
select transaction_begin_time,  
case transaction_type   
when 1 then 'Read/Write transaction'  
when 2 then 'Read-Only transaction'  
when 3 then 'System transaction'  
when 4 then 'Distributed transaction'  
end tran_Type,  
case transaction_state  
when 0 then 'not been comoletely initaialiaed yet'  
when 1 then 'initaialiaed but ha notstarted'  
when 2 then 'active'  
when 3 then 'ended (read-only transaction)'  
when 4 then 'commit initiated for distributed transaction'  
when 5 then 'transaction prepared and waiting resolution'  
when 6 then 'commited'  
when 7 then 'being rolled back'  
when 0 then 'been rolled back'  
end transaction_state  
from   
sys.dm_tran_active_transactions
--         。      ,      。

--  log  
SELECT log_reuse_wait_desc  FROM sys.databases WHERE NAME='DBName' 
--REPLICATION       ,      。

use DBName
checkpoint
go
sp_removedbreplication 'DBName'
DBCC SHRINKFILE(DBName_Log,100);

DBCC loginfo()  --       。
dbcc opentran        spid     。

     !
      ,    log      ,   10  。           ?

이것 은 나의 건의 이지 만 테스트 를 통 해 효과 가 없다.
alter database xxx
set single_user
with rollback immediate

  ,      ,     ,              

위의 이것 을 통 해 알 수 있 듯 이 이 문 제 는 데이터베이스 복사 와 관련 이 있다.
--  log  
SELECT log_reuse_wait_desc  FROM sys.databases WHERE NAME='DBName' 
--REPLICATION       ,      。

이 거 는 DBA 입 니 다.Huangzj 판주 의 방법 이지 만 효과 가 없습니다.
EXEC sp_removedbreplication msdb
   remove msdb 

마지막 건물 주 방법:
   ,    ,      ,  DBA       。            ,  sp_removedbrepliation    ,        log  (  log 1TB)。      log        !  !

좋은 웹페이지 즐겨찾기