문제

나는 SQL 전문가,그리고 나는 사실을 상기 모든 시간이 필요 뭔가를 넘어서 기본입니다.내가 시험하지 않는 데이터베이스 크기가 큰하지만,트랜잭션 로그 확실히입니다.어떻게 취소 트랜잭션 로그?

도움이 되었습니까?

해결책

를 만드는 로그 파일 작은 정말 예약 시나리오에 대한 곳에 그것을 발생하는 예기치 못한 성장을 기대하지 않는다 다시 발생합니다.로그 파일이 있는 경우 성장할 것 같은 크기는 다시 아주 많은행에 의해 그것을 일시적으로 축소.지금에 따라 복구의 목표 데이터베이스,이와 같은 행동을 취해야 한다.

첫째,전체 백업

지 않을 변경하지 않고 데이터베이스 보장 복원할 수 있습니다 그것은 뭔가가 잘못입니다.

에 대해 걱정하는 경우 시점에서 복구

(고 포인트에 의해 복구,내가 당신을 걱정할 수 있는 복원이 다른 것보다 전체 또는 차등 백업입니다.)

아마도 당신의 데이터베이스에 FULL 습니다.그렇지 않은 경우,다음 그것이 확실:

ALTER DATABASE testdb SET RECOVERY FULL;

는 경우에도 당신은 정기적으로 전체 백업 로그 파일이 성장하고 성장을 수행할 때까지 로그인 백업이 보호를 위해지지 않는 불필요하게 먹을 거리에서 귀하의 디스크 공간을 차지합니다.당신이해야 할 수행하는 이 로그를 백업을 아주 자주,에 따라 복 목표입니다.예를 들어,사업을 하는 경우에는 규칙국 당신이 감당할 수 있는 더 이상 잃을 것보다 15 분 동안의 데이터에서는 이벤트의 재해가 있어야 합 작업을 백업하는 로그에는 매 15 분이다.여기에는 이 스크립트를 생성하는 파일의 타임 스탬프 이름을 기반으로 현재 시간이다(그러나 이 작업을 수행할 수도 있습 유지 관리 계획으 etc., 지 않는 어떤 선택의 축소에서 옵션을 유지 관리 계획은,그들은 끔찍한).

DECLARE @path NVARCHAR(255) = N'\\backup_share\log\testdb_' 
  + CONVERT(CHAR(8), GETDATE(), 112) + '_'
  + REPLACE(CONVERT(CHAR(8), GETDATE(), 108),':','')
  + '.trn';

BACKUP LOG foo TO DISK = @path WITH INIT, COMPRESSION;

Note \\backup_share\ 에 있어야 다른 기계를 나타내는 다른 기본 저장장치로 인식합니다.이러한 백업까지 동일한 기계(다른 기계를 사용하는 동일한 근본적인 디스크,또는 다른 VM 에 있는 동일한 실제 호스트)지 않는 정말 당신을 도울 때문에,경우의 기계 불면,당신은 잃어버린 당신의 데이터베이스 의 백업을 수행합니다.에 따라 귀하의 네트워크 인프라가는 것이 더 효과적일 수 있습 백업 로컬과는 다음을 전송하는 다른 위치 뒤에서;어느 경우에,당신은 당신을 얻고 싶은 그들을 기본 데이터베이스 시스템을 가능한 한 빨리.

지금,당신은 일단 정기적 로그를 백업을 실행,그것이 있어야 합리적인 로그 파일을 축소하는가보다 더 합리적이 무엇이든 그것이 터져 지금까지.이 을 의미 실행 SHRINKFILE 까지 로그 파일은 1MB-는 경우에도 당신은 로그를 백업하고,자주 그것은 여전히 수용해야 하는 합의 어떤 트랜잭션을 동시에 그가 발생할 수 있습니다.로그 파일의 이벤트가 자동으로 증가 비싸기 때문 SQL 서버가를 제로로 파일(과는 달리는 데이터 파일을 때 인스턴트 파일을 초기화용),사용자거래 기다려야 하는 동안 이 발생합니다.당신은 이것을 하고 싶 성장-축소-성장-축소 일상적인,가능한 한 작은 그리고 당신은 확실히 하고 싶지 않 귀하의 사용자가 지불한다.

참고 필요할 수 있는 로그를 백업하기 전에 두 번 축소 가능(감사합니다 Robert).

그래서,당신은 필요하여 올라와 실제 크기 위해 로그 파일이 있습니다.아무도 여기에 당신을 말할 수는 없이에 대해 더 많이 알고 시스템,하지만했던 경우는 자주 로그 파일을 축소하고 그것이 성장하고 있고,다시 좋을 워터마크에 아마이 10~50%이상 높은 가장 큰 있습니다.말하자는 200 메가바이트,그리고 당신이 원하는 모든 후속 자동 증가는 이벤트의 50MB 다음을 조정할 수 있습 로그 파일 크기 이 방법:

USE [master];
GO
ALTER DATABASE Test1 
  MODIFY FILE
  (NAME = yourdb_log, SIZE = 200MB, FILEGROWTH = 50MB);
GO

한 경우에는 로그 파일이 현재>200 메가바이트,실행해야 할 수도 있습니다 첫 번째:

USE yourdb;
GO
DBCC SHRINKFILE(yourdb_log, 200);
GO

는 경우에 대해 걱정하지 않는 시점에서 복구

이 테스트 데이터베이스,그리고 당신은 걱정하지 않는 시점에서 복음는지 확인해야 합니다 당신의 데이터베이스에 SIMPLE 습니다.

ALTER DATABASE testdb SET RECOVERY SIMPLE;

의 데이터베이스에 SIMPLE 복 모드지 확인하는 SQL Server 다시 사용하는 부분의 log 파일을(기본적으로 단계적으로 비활성 상태 트랜잭션)에 대신 성장의 기록을 유지 모든 트랜잭션(아 FULL 복구까지 로그를 백업). CHECKPOINT 이벤트 데 도움이 될 것입 제어 로그인하는 것이 필요하지 않 성장하지 않으면 당신은 많이 생성하 t-로그 활동 사 CHECKPOINTs.

다음에 만들어야 합니다 절대는지 이 로그인 성장을 진정으로 인해 비정상적인 행사(말,매년 봄 청소 또는 재건의 가장 큰 인덱스),그리고지 않으로 인해 정상적인,일상적인 사용합니다.당신이 축소는 로그 파일을 엄청나게 작은 크기,SQL 서버는 그것을 성장시를 수용하기 위해 정상적인 활동,무엇을 얻을까요?당신의 사용을 할 수 있는 디스크 공간을 확보한 일시적으로 만?필요하신 경우 즉시 수정한 다음,다음을 실행할 수 있습니다:

USE yourdb;
GO
CHECKPOINT;
GO
CHECKPOINT; -- run twice to ensure file wrap-around
GO
DBCC SHRINKFILE(yourdb_log, 200); -- unit is set in MBs
GO

그렇지 않으면 설정이 적절한 크기와 성장률이 있습니다.당로의 예제에서는 시점에 복 경우,사용할 수 있는 코드와 동일한 논리를 결정하는 파일의 크기는 적절한 설정 합리적인 자동 매개 변수입니다.

어떤 일을 하고 싶지 않은

  • 다시 로그인 TRUNCATE_ONLY 옵션을 선택하고 다음 SHRINKFILE.에 대한 중 하나이 TRUNCATE_ONLY 옵션은 사용되지 않고 더 이상 사용할 수 있는 현재 버전의 SQL 서버입니다.두번째,당신 FULL 복 모델,이전 로그 체인하고 필요한 새로운 전체 백업을 수행합니다.

  • 데이터베이스를 분리,삭제,로그 파일을 다시 연결.나는 아무리 강조해 어떻게 위험이 될 수 있습니다.데이터베이스가 있습 돌아 오지 않을,그것은 올 수 있으로 의심해야 할 수 있습으로 되돌리려면 백업(하나가있는 경우)등이 있습니다.etc.

  • 를 사용하여"데이터베이스 축소"옵션. DBCC SHRINKDATABASE 및 유지보수 계획 할 수있는 옵션이 같은 나쁜 아이디어,특히 경우에 당신은 정말 필요를 해결할 로그인 문제는 문제입니다.대상할 파일을 조정하고 조정,자주적으로 사용 DBCC SHRINKFILEALTER DATABASE ... MODIFY FILE (위의 예).

  • 로그 파일을 축소하는 1MB.이는 매력적인 외모 때문에,어이,SQL Server 런스를 유지하도록 도와드립니다.그것에서 특정 시나리오와 모든 공간을 절약할 수 있으므로!하지 않는 데이터베이스를 읽기 전용으로만(고 그것은,당신을 표시해야한다 이와 같이 사용하는 ALTER DATABASE한다),이 절대적으로 그냥 지도 많은 불필요한 성장에 이벤트 로그가 있을 수용하는 현재의 거래와 관계없이 복 모델입니다.인을 확보하는 공간을 일시적으로,그래서 그냥할 수 있는 SQL Server 그것을 다시 천천히 고통스럽게?

  • 두 번째 만들의 로그 파일.이 제공을 일시적으로 구호에 대한 드라이브의 디스크,그러나 이것은 같은 해결하는 것을 시도하고 폐에 구멍을 가진다.해야 합격으로 문제가 있으로 로그를 파일에 직접 대신 다른 잠재적인 문제입니다.다른 리디렉션하는 것보다 어떤 트랜잭션 로그 활동하는 다른 드라이브,두 번째는 로그 파일이 정말 당신을 위해 아무것도(과는 달리 두 번째 데이터 파일)기 때문에만 하나의 파일을 수용됩니다. 폴 랜달 또한 이유를 설명하는 여러 로그 파일을 수 있습니 나중에 물어.

사전

대신에 축소하는 로그 파일을 몇 가지 작은 금액과 그것을 지속적으로 자동 증가에서는 작은 비율에서 자신의 설정,그것은 몇 가지 합리적으로 큰 크기(중 하나는 것입니다을 수용 합계 당신의 가장 큰 세트의 동시 거래)설정 합리적인가 자동 설정으로 대체하지 않도록 해야 성장을 여러 번 만족하는 하나의 트랜잭션과 그래서 될 것입니다 상대적으로 드물에 대한 그것은 지금까지 성장해야 정상적인 비즈니스 운영을 보장합니다.

최악의 가능한 설정 여기는 1MB 의 성장 또는 10%의 성장이다.충분히 재미 있고,이러한 기본값에 대한 SQL 서버(는 나에 대해 불평했고 요청 변경을 아무 소용)-1 메가바이트에 대한 데이터 파일,그리고 10%에 대한 로그 파일이 있습니다.이전이 이 시대에,후자이 길어집 및 이벤트 매간(예,귀하의 로그 파일이 500MB,첫 번째의 성장은 50MB 다음 성장은 55MB 다음의 성장이 60.5 메가바이트,등등.etc.-와 느린 I/O,저를 믿고,당신은 정말 알 수 있는 이 곡선).

추가 읽기

십시오 여기서 멈추지 마십시오;는 동안 많은 조언을 당신이 볼 거기에 대한 로그 파일을 축소하는 본질적으로 나와도 잠재적으로 비참한 몇몇 사람들이에 더 관심이 많은 데이터 무결성보다는 디스크 공간을 확보.

블로그 포스팅에 쓴 2009,봤을 때 몇"여기를 축소하는 방법 로그의 파일"게시물을 봄.

블로그 포스트 브렌트 Ozar 쓴 네 년 전,을 가리키는 여러 자원에 응답하여 SQL Server 잡지 기사는 발표되었다.

블로그 게시물에 의해 폴 Randal 는 이유를 설명하는 t-로그인 유지 관리가 중요한왜 당신 수축 귀하의 데이터 파일,중.

마이크 월쉬한 응답의 일부를 포함하는 이러한 측면을 포함하여,너무 이유되지 않을 수도 있습 축소하실 수 있 귀하의 로그 파일을 즉시.

다른 팁

면책 조항: 읽어 보시기 바랍 아래의 의견 신중하게,그리고 나는 가정 당신이 이미 읽고 받아들이 대답.내가 말했듯이 약 5 년 전:

사람은 어떤 의견을 추가한 상황이 적절한 또는 최적의 솔루션은 다음 아래에 의견을 주시기 바랍니다


  • 에서 오른쪽 클릭하여 데이터베이스 이름입니다.

  • 선택 작업을→수축→데이터베이스

  • 클릭 OK!

내가 열려 일반적으로 윈도우 탐색기에 포함된 디렉토리 데이터베이스 파일,할 수 있도록 즉시 효과를 참조하십시오.

내가 사실은 매우 놀라는이 일했다!일반적으로 사용했 DBCC 기 전에,하지만 난 그냥했는지 아무것도 수축했 GUI(2005)일했다 훌륭한 해방까지 17GB 에서는 10 초

전체 복구 모드로이 작동하지 않을 수 있습니다,그래서 당신은에 백업하거나 로그 첫째,또는 변경하여 간단한 복구,다음 축소하는 파일입니다.[덕분에@onupdatecascade 이]

--

PS:저는 일부는 주석의 위험에 관한 이지만 환경에서 나는 문제가 없었어요 이렇게 자신 때문에 특히 항상 전체 백업 처음이다.그래서 고려하시기 바랍 무엇 환경,그 어떤 영향을 미치는지 백업 전략 및 작업안 전에 계속하고 있습니다.모든 일은 나를 가리키는 사람들에게 기능을 제공함으로 Microsoft!

USE AdventureWorks2008R2;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE AdventureWorks2008R2
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (AdventureWorks2008R2_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE AdventureWorks2008R2
SET RECOVERY FULL;
GO

From: 또한 프런트 엔드 웹(Transact-SQL)

할 수 있는 백업 처음이다.

아래 스크립트를 축소하는 트랜잭션을 로그하지만,나는 확실히 추천한 트랜잭션 로그를 백업하기 전에 축소습니다.

는 경우에 당신은 수축 파일이 있을 잃어 가고 있 톤의 데이터는 것으로 올 수 있습니다 생명에 경의 재앙입니다.트랜잭션 로그인이 많이 포함되어 유용한 데이터를 사용하여 읽을 수 있는 타사에 트랜잭션 log reader(그것을 읽을 수 있습니다 하지만 수동으로 극단적인 노력하지만).

트랜잭션 로그인이 올 때 그 시점에서 복구,그래서를 던지지 말라 그것은 멀리 확인,하지만 당신은 그것을 다시합니다.

여기 게시물은 사람들이 사용 저장된 데이터 트랜잭션에서 로그를 달성하는 복구:

 

USE DATABASE_NAME;
GO

ALTER DATABASE DATABASE_NAME
SET RECOVERY SIMPLE;
GO
--First parameter is log file name and second is size in MB
DBCC SHRINKFILE (DATABASE_NAME_Log, 1);

ALTER DATABASE DATABASE_NAME
SET RECOVERY FULL;
GO

오류가 발생할 수 있습니다 이처럼 보이는 경우는 명령을 실행하기 위

"축소 할 수 없습 로그 파일(로그 파일 이름)이기 때문에 논리 로그 파일의 끝에 위치한 파일에서 사용하"

즉 tlog 는 사용하고있다.이 경우에도 실행이 여러 번에 행을 감소하는 방법을 찾아 데이터베이스를 활동입니다.

을 사용하지 않는 경우는 트랜잭션에 대한 로그를 복원을(즉당신은 이제까지 전체 백업)설정할 수 있습 복구하는 모드"간단한"고,트랜잭션 로그는 매우 짧게 축소하지 못합니다.

사용하는 경우에는 SQL7,2000"사용할 수 있습니 자를 로그에는 체크포인트에서"데이터베이스 옵션 탭입니다.이는 같은 효과가 있습니다.

이것은 추천 프로덕션 환경에서 명백하게 때문에,당신이 할 수 없을 것이 복원하는 시기가 있습니다.

여기에는 간단하고 매우 우아하지 못한 & 잠재적으로 위험한 방법입니다.

  1. DB Backup
  2. 분리 DB
  3. 이름 바꾸기 로그 파일
  4. DB 연결
  5. 새로운 로그 파일을 재현
  6. 삭제 이름은 로그 파일입니다.

나는 당신을 하지 않고 로그를 백업을 수행합니다.(는 로그).나의 통보로 변경해 복구 모델 전체 하기 .이렇게 하면 로그인 부풀린다.

대부분의 답변 그래서 여기까지는 가정하면 당신은 실제로 필요하지 않다는 거래 로그 파일,그러나 만약 당신의 데이터베이스를 사용하는 FULL 복 모델,그리고 당신을 유지하려면 백업해야 하는 경우에는 데이터베이스를 복원하기 위해 다음 자르거나 삭제 로그 파일은 방법으로 많은 이들의 답변을 제안합니다.

를 제거하는 로그 파일(를 통해 잘라내고,그것을 버리는 그것은,그것을 지우고,etc.)휴대 백업 체인에서 당신을 막을 것이 복원하는 모든 지점에서 시간 이후 마지막 전체,차,또는 트랜잭션에 로그를 백업,다음까지 전체 또는 차등 백업입니다.

Microsoft 문서BACKUP

는 것이 좋습니다 당신이 사용하지 않을 사용하거나 TRUNCATE_ONLY 동 트랜잭션 로그를 자르기 때문에,이 경우 로그 체인이 끊어집니다.지 다음 전체 또는 차이 데이터베이스의 백업 데이터베이스가 보호되는 미디어에서 실패입니다.사용 설명서 로그인이 잘리에만 매우 특별한 상황을 만들의 백업 데이터를 즉시.

피하고,백업하는 로그 파일 디스크 전 축소습니다.을 구문은 다음과 같이 보일 것입니다:

BACKUP LOG MyDatabaseName 
TO DISK='C:\DatabaseBackups\MyDatabaseName_backup_2013_01_31_095212_8797154.trn'

DBCC SHRINKFILE (N'MyDatabaseName_Log', 200)

SQL Server 트랜잭션에서 로그인해야 제대로 유지하기 위해를 방지하기 위해 원치 않는 성장이다.이를 실행하는 것을 의미하는 트랜잭션 로그를 백업는 경우가 많습니다.에 의해 하지 않는,당신은 위험을 트랜잭션 로그가 가득하고 성장하기 시작합니다.

외 대한 답변 이 질문에 대한 읽는 것이 좋습과 이해 트랜잭션 로그에는 일반적인 신화.이러한 측정할 수 있를 이해하는 데 도움이 트랜잭션 로그와 무엇을 결정하는 기술을 사용하는"지우기"it:

10 개의 가장 중요한 SQL Server 트랜잭션 신화 로그인:

신화:나의 SQL 서버는 너무 바빴습니다.나는 원하지 않을 만들의 SQL 서버 로그 백업 트랜잭션

하나의 가장 큰 성과 집중적인 작업에서 SQL 서버가 자동으로 성장의 이벤트 온라인 트랜잭션 로그 파일이 있습니다.하지 않음으로써 트랜잭션 로그를 백업을 충분히,온라인 트랜잭션 로그인이 될 것이 가득하고야 성장합니다.기본 성장 크기는 것은 10%입니다.바쁜 데이터베이스가,빨리 온라인 트랜잭션 로그인 성장할 것입니다 경우에 트랜잭션 로그를 백업이 만들어지지 않습 을 만드는 SQL Server 트랜잭션 로그를 백업하지 못하게 차단하지 않습니다 온라인 트랜잭션을 로그하지만,자동차장을 이벤트 않습니다.그것을 차단할 수 있는 모든 활동에서 온라인 트랜잭션 로그인

트랜잭션 신화 로그인:

신화:일반적인 로그축은 좋은 연습 유지보수

거짓입니다.로그인 성장은 매우 비싸기 때문에 새 덩어리어야 합로습니다.모든 쓰기 활동에서 중지하는 데이터베이스에까지 영점 조정이 완성되면 귀하의 디스크를 쓰기 속도가 느려지거나 자동 증가 사용 여부를 확인하시기 바랍니다.는 일시 중지될 수 있는 거대하고 사용자가 될 수 있습니다.는 하나의 이유는 당신이 피하고 싶은 성장입니다.을 줄이면 로그,그것은 다시 성장할 것이고 당신은 낭비하는 디스크 작업에 필요도 없이 축소 및 성장을 다시 게임

이 기술은 요한이 좋은 권장하지 않으로 보장은 없는 데이터베이스 연결 없이 로그 파일이 있습니다.경 데이터베이스에서 전하는 간단하고,강점 및 몇 분을 기다립니다.SQL 서버는 명확한 이 로그할 수 있는 축소 사용 또한 프런트 엔드 웹.

먼저 확인하는 데이터베이스에 복구 모델입니다.SQL Server 에서는 기본적으로 익스프레스 버전성 데이터베이스에 대한 간단한 복구 모델(착각하지 않다 경우 나).

백업 로그 데이터베이스 이름으로 Truncate_Only:

DBCC ShrinkFile(yourLogical_LogFileName, 50)

SP_helpfile 를 줄 것이 논리적인 로그의 파일 이름입니다.

참조하시기 바랍니다:

복구 전체에서 로그인 트랜잭션에서 SQL 서버 데이터베이스

는 경우의 데이터베이스에 있는 복구 전체 모델과하지 않은 경우 취 TL 백업,그때 그것을 변경하는 간단하다.

DBCC ShrinkFile ({logicalLogName}, TRUNCATEONLY) 명령입니다.이 테스트 데이터베이스와 당신이 시도하고 있는 저장/확보,공간이 도움이 될 것입니다.

하지만 기억하는 TX 로그가 있는 일종의 최소/꾸준한 상태로 크기는 그들은 성장할 것입니다.에 따라 복 모델할 수 없을 축소하는 로그인하면 전체에서 그리고 당신은 발행 TX 로그를 백업을 로그할 수 없는 축소-그것은 성장할 것입니다.가 필요하지 않은 경우 TX 로그를 백업 스위치 복구 모델 .

그리고,절대 어떤 상황에서 로그를 삭제(LDF)파일!당신은 거의 즉시 데이터베이스에 손상이다.요리!행!데이터 손실!면"실"주 MDF 파일이 될 수 없거나 손상된 영구적으로 합니다.

적 삭제할 트랜잭션 로그 데이터를 잃게됩니다!의 일부 데이터가 TX 로그(에 관계없이 복 모델)...는 경우에 당신을 분리하고"이름을 바꾸"TX 로그 파일을 효과적으로 삭제 의 일부 데이터베이스입니다.

는 사람들을 위해 삭제 TX 로그를 실행할 수 있습 몇덱 명령하고 복구하기 전에 손상을 잃게 더 많은 데이터를 저장합니다.

체크아웃 폴 랜달의 블로그에 글이 주제 나쁜 조언.

또한 일반적인 사용하지 않는십시오에서는 MDF 는 파일을 수 있으므로 심각하게 조각합니다.체크인 나 자신의 잘못된 조언 섹션에 대한 자세한 정보("왜을 축소하지 않아야 합 데이터 파일을")

체크아웃 폴 웹사이트에-그 다음 아주 질문이 있습니다.지난 달에 걸 그의 많은 통해 이러한 문제에서 그의 신화 일 시리즈입니다.

해 로그 파일을 자를:

  • 백업 데이터베이스
  • 분리,데이터베이스를 사용하거나 엔터프라이즈 관리자 또는 실행하여: Sp_DetachDB[DBName]
  • 삭제할 트랜잭션 로그 파일이 있습니다.(또는 파일의 이름을 변경,단지의 경우)
  • 재 데이터베이스에 연결시 사용: Sp_AttachDB[DBName]
  • 을 때 데이터베이스를 연결,새로운 트랜잭션 로그 파일이 만들어집니다.

해 로그 파일을 축소:

  • 백업 로그[DBName]사용
  • 축하여 데이터베이스는 하나:

    사용 Enterprise manager:- 오른쪽 클릭하여 데이터베이스에서,모든 작업,축소,데이터베이스 파일,로그 파일 선택,확인을 클릭합니다.

    를 사용하여 T-SQL:- 또한 프런트 엔드 웹([Log_Logical_Name])

당신을 찾을 수 있습니다 논리적인 로그의 이름을 파일을 실행하여 sp_helpdb 또는 보고의 속성에서 데이터베이스 엔터프라이즈 관리자에서.

내 경험에 대부분의 SQL 서버 백업이 없다는 거래의 로그입니다.전체 백업 또는 차등 백업은 일반적이지만,트랜잭션 로그를 백업은 정말 드물게.그래서 트랜잭션 로그 파일을 영원히 성장(디스크가 꽉 찰 때까지).이 경우 복 모델 설정해야 합니다"".는 것을 잊지 않을 수정하는 데이터베이스 시스템"모델은"과"tempdb",too.

데이터베이스의 백업"tempdb"의미가 없다,그래서 복 모델의 이 db 항상"간단한".

  1. 의 백업을 MDB 파일입니다.
  2. 지 SQL 서비스
  3. 이름 바꾸기 로그 파일
  4. 서비스 시작

(시스템을 만들 것입니다 새로운 로그 파일이 있습니다.)

삭제하거나 이 이름을 바꾼 로그 파일이 있습니다.

이것을 보십시오:

USE DatabaseName

GO

DBCC SHRINKFILE( TransactionLogName, 1)

BACKUP LOG DatabaseName WITH TRUNCATE_ONLY

DBCC SHRINKFILE( TransactionLogName, 1)

GO 

데이터베이스→오른쪽 클릭 →파일→추가 또 다른 로그 파일이 다른 이름 및 경로를 설정과 같은 오래된 로그 파일이 다른 파일 이름입니다.

데이터베이스에 자동으로 선택 새로 생성된 로그 파일이 있습니다.

  1. DB Backup
  2. 분리 DB
  3. 이름 바꾸기 로그 파일
  4. 첨부 DB(를 부착하는 동안 제거한 이름이 바뀝니다.ldf(로그 파일)입니다.선택하고 제거를 눌러서 버튼을 제거)
  5. 새로운 로그 파일을 재현
  6. 삭제 이름은 로그 파일입니다.

이 작동하지만 그것은 제안을 데이터베이스의 백업 처음이다.

예제:

DBCC SQLPERF(LOGSPACE)

BACKUP LOG Comapny WITH TRUNCATE_ONLY

DBCC SHRINKFILE (Company_log, 500)

DBCC SQLPERF(LOGSPACE)

그 일이 일어 나가는 데이터베이스 로그 파일 28GBs.

무엇을 줄이기 위해 할 수있다?실제로,로그 파일은 파일 데이터는 SQL server 유지할 때는 거래하지 않습니다.트랜잭션 처리 SQL 서버를 할당 페이지에 대한 동일합니다.하지만 완료 후,트랜잭션의 이러한 발표하지 않는 갑자기 바라고 있을 수 있습 트랜잭션이 나오는 다음과 같습니다.이 보유합니다.

1 단계:첫 번째 이 명령을 실행에서 데이터베이스 쿼리를 탐험 체크포인트

2 단계:에서 오른쪽 클릭하여 데이터베이스 작업>백업 선택하시 형식으로 로그인 트랜잭션 추가 주소 및 파일 이름을 유지하는 데이터 백업(.bak)

이 단계를 반복하시고 이 시간에게 또 다른 파일 이름

enter image description here

3 단계:지금 데이터베이스 을 오른쪽 클릭하여 데이터베이스

작업>축소>파일 선택한 파일 형식으로 로그인 수축 행동으로 해제 사용되지 않는 공간

enter image description here

4 단계:

체크인 로그의 파일 일반적으로 SQL 에서는 2014 년에 발견될 수 있는

C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014EXPRESS\MSSQL\데이터

내 경우에는 그 감소에서 28GB1MB

의 일부 다른 대답하지 않았 작업에 대한 저:그것을 만들 수 없었 체크포인트는 db 온라인했기 때문에,트랜잭션 로그로 가득했다(하지만 무엇보다 아이러니한).그러나,설정한 후 데이터베이스를 응급 모드로 할 수 있었 로그 파일을 축소:

alter database <database_name> set emergency;
use <database_name>;
checkpoint;
checkpoint;
alter database <database_name> set online;
dbcc shrinkfile(<database_name>_log, 200);

DB 로그인 트랜잭션 으로 축소되는 최소 크기:

  1. 백:로그인 트랜잭션
  2. 파일을 축소:로그인 트랜잭션
  3. 백:로그인 트랜잭션
  4. 파일을 축소:로그인 트랜잭션

내가 테스트에 여러 번의 DBs: 이 순서 작동.

그것은 일반적으로 축소 2 메가바이트.

또는 스크립트:

DECLARE @DB_Name nvarchar(255);
DECLARE @DB_LogFileName nvarchar(255);
SET @DB_Name = '<Database Name>';               --Input Variable
SET @DB_LogFileName = '<LogFileEntryName>';         --Input Variable
EXEC 
(
'USE ['+@DB_Name+']; '+
'BACKUP LOG ['+@DB_Name+'] WITH TRUNCATE_ONLY ' +
'DBCC SHRINKFILE( '''+@DB_LogFileName+''', 2) ' +
'BACKUP LOG ['+@DB_Name+'] WITH TRUNCATE_ONLY ' +
'DBCC SHRINKFILE( '''+@DB_LogFileName+''', 2)'
)
GO
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top