SQL Server 2008 데이터베이스에서 트랜잭션 로그를 자르려면 어떻게해야합니까?


9

SQL Server 2008 데이터베이스에서 트랜잭션 로그를 자르려면 어떻게해야합니까?

가능한 최선의 방법은 무엇입니까?

나는 이것을 다음과 같이 블로그에서 시도했다.

1) 설정 데이터베이스에서 단순 복구, 파일 축소 및 전체 복구에서 다시 한 번 설정하면 실제로 중요한 로그 데이터가 손실되어 특정 시점을 복원 할 수 없습니다. 뿐만 아니라 후속 로그 파일도 사용할 수 없습니다.

2) 데이터베이스 파일 또는 데이터베이스를 축소하면 조각화가 추가됩니다.

할 수있는 일이 많이 있습니다. 먼저 다음 명령을 사용하여 잘리고 자주 손실하는 대신 적절한 로그 백업을 시작하십시오.

BACKUP LOG [TestDb] TO  DISK = N'C:\Backup\TestDb.bak'
GO

파일 SHRINKING의 코드를 제거하십시오. 적절한 로그 백업을 수행하는 경우 일반적으로 로그 파일 (일반적으로 특수한 경우는 제외)이 크게 커지지 않습니다.


2
좋아, 그리고 당신이 그것을 시도했을 때 무슨 일이 있었습니까?

답변:


4

데이터베이스가 전체 복구 모드에있는 경우 로그 파일을 자르는 가장 안전하고 올바른 방법은 트랜잭션 로그 백업을 수행하는 TRUNCATE_ONLY것입니다 (이 옵션은 향후 릴리스에서 더 이상 사용되지 않으며 권장되지 않습니다).

나중에 로그 파일을 축소하려는 것처럼 들리며,이 경우 DBCC SHRINKFILE(yourTLogName)명령을 실행합니다 . 요청 된 크기로 축소하기위한 선택적 두 번째 매개 변수가 있습니다.


8

널 장치에 로그를 백업 할 수 있습니다.

backup log [databasename] to disk = 'nul';

또는 복구 모델을 단순으로 전환 한 다음 다시 전체 / 대량으로 다시 전환 할 수 있습니다.


이 도구는 dbas 도구 상자의 도구이므로 귀하의 답변에 부정적인 투표가 필요하지 않기 때문에 이것에 +1했습니다. 가장 좋은 방법은 트랜잭션 로그 백업을 수행하는 것이지만 모든 좋은 도구를 올바른 방법이나 나쁜 방법으로 사용할 수 있다는 정서에 동의합니다.
Martin Sjöberg

6

로그 데이터를 신경 쓰지 않고 제거하려는 경우 :

복구 모델을 전체에서 단순으로 변경 한 다음 다시 전체로 변경하십시오. TRUNCATEONLY 인수와 함께 DBCC SHRINKFILE 을 사용하여 파일 축소

다음 명령은 복구 모델을 전체에서 단순으로 변경합니다.

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

다음 명령은 복구 모델을 전체로 변경합니다

ALTER DATABASE <databse_name> SET RECOVERY FULL

로그 파일의 이름을 찾으려면 다음 쿼리를 사용할 수 있습니다

SELECT name 
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')

파일 축소

DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)

SQL Server 로그 파일을 잘라내는 명령무엇입니까?를 참조하십시오 . 이에 대한 자세한 내용은

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.