독까의 이야기

 MSSQL 트랜잭션 로그파일 삭제 및 줄이는 방법

 

-로그잘라내기

1. BACKUP LOG 'DB명' TO '디바이스명(장치명)'   --로그백업 
   BACKUP LOG 'DB명' WITH TRUNCATE_ONLY        --로그 잘라내기

 


ex)BACKUP LOG GUNNM TO GUNNM   
    BACKUP LOG GUNNM WITH TRUNCATE_ONLY

위의 두가지 방법 모두 사용할 수 있으나 로그백업을 권장함(단순복구모델일때는 로그 잘라내기를 함)


2. DBCC SHRINKFILE('로그파일명', 파일크기)      --파일크기를 정해주어 파일을 축소하는 방법
   DBCC SHRINKFILE('로그파일명', TRUNCATEONLY)  --불필요한 로그 파일을 잘라 파일을 축소하는 방법 

ex)DBCC SHRINKFILE ('GUNNM_LOG',500)
    DBCC SHRINKFILE ('GUNNM_LOG',TRUNCATEONLY)

       DBCC LOGINFO


위의 두가지 방법 모두 사용할 수 있으니 TRUNCATEONLY를 더 권장

 

 =====================================================================

 

--파일명 알아내기

EXEC SP_HELPFILE


SELECT * FROM SYSFILES


 =====================================================================

 

* MSSQL 2008 의 경우

USE [DataBase];
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE [DataBase]
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 10 MB. <- 로그파일을 10MB로 축소
DBCC SHRINKFILE ([DataBase_Log], 10);
GO
-- Reset the database recovery model.
ALTER DATABASE [DataBase]
SET RECOVERY FULL;
GO


 =====================================================================

 

* MSSQL 2005 의 경우

use [DB명];
sp_helpfile; <- 로그파일 정보 확인

backup log [DB명] with no_log;
dbcc shrinkfile ([로그파일명], 10); <- [로그파일명]을 10MB로 축소


 =====================================================================

 

* MSSQL 2000 의 경우

use [DB명];
sp_helpfile; <- 로그파일 정보 확인

backup log [DB명] with truncate_only;
dbcc shrinkfile ([로그파일명], 10); <- [로그파일명]을 10MB로 축소

(예: 총 10MB , 사용률 6MB --> 9MB 축소 실행 --> 실체 축소량 4M)

기존의 테이블명이 testDB.BoardBranchSales / 새로 변경하고자하는 테이블명 dbo.BoardBranchSales

ALTER SCHEMA dbo TRANSFER iseuko.BoardBranchSales;

'Database > MS-SQL' 카테고리의 다른 글

DB 용량 확인  (0) 2016.07.21
SQL 트랜잭션 로그 삭제 및 축소  (0) 2016.07.21
백업 및 복원 (Backup & Restore)  (0) 2016.07.21
DB 생성 및 테이블 생성, 삭제  (0) 2016.07.21
오토픽스 Auto Fix  (0) 2016.07.21



[ DB 백업 ]

backup database [DB명] to disk='폴더경로\파일명.bak'

backup database [DB명] to disk='D:\SQLSERVER\MSSQL11.SSCLAN\MSSQL\Backup\login_backup_20140718.BAK'

=========================================================================================

[ DB 복원 ]

1번.

RESTORE FILELISTONLY FROM DISK = '폴더경로\파일명.bak'

RESTORE FILELISTONLY FROM DISK = 'D:\Test_backup_201607210300.bak'


논리적 DB명 확인 후,


2번.

restore database [DB명] from disk ='폴더경로\파일명.bak'  --백업파일 위치
with move 'MDF명' to '폴더경로\MDF명.mdf',  --1번 실행결과의 LogicalName의 MDF 파일
move 'LDF명' to '폴더경로\LDF명.ldf'  --1번 실행결과의 LogicalName의 LDF 파일

restore database Test from disk ='D:\Test_backup_201607210300.bak'
with move 'Test ' to 'D:\MSSQL_DB\Test.mdf',
move 'Test_log' to 'D:\MSSQL_DB\Test _log.ldf'

=========================================================================================

[ DB 복원 - mdf, ldf 로 복원 ]

DB를 생성하지 말고 새쿼리 실행하여 아래 코드 입력 및 파일 경로 지정

CREATE DATABASE DB명 ON
     (FILENAME = 'D:\DB\board_Data.MDF'),
     (FILENAME = 'D:\DB\board_Log.LDF')
   FOR ATTACH;
   GO

=========================================================================================

[ 테이블 백업 및 복원 (GUI 방식) ]

특정 테이블 백업 및 복원
  -  신규 테이블 생성
  -  원본 테이블 선택 - 우클릭 - 태스크 - 내보내기
  -  마법사 실행
  -  디폴트 진행 - 기존 데이터 삭제 후 복원 선택

=========================================================================================

[ 테이블 백업 및 복원 (BCP 방식) ]

CMD

1. 백업

bcp [DB명].dbo.[테이블명] out 파일명 -c -U[사용자ID] -P[패스워드]

bcp "[쿼리]" queryout 파일명 -c -U[사용자ID] -P[패스워드]


ex1) bcp test.dbo.employee out D:\TEST_Backup.bak -c -Usa -P1234

ex2) bcp "select * from employee where id=test01" queryout D:\TEST_Backup.bak -c -Usa -P1234


2. 복원

테이블 생성된 상태

bcp [DB명].dbo.[테이블명] in 파일명 -c -U[사용자ID] -P[패스워드]

ex) bcp test.dbo.employee in D:\TEST_Backup.bak -c -Usa -P1234

'Database > MS-SQL' 카테고리의 다른 글

SQL 트랜잭션 로그 삭제 및 축소  (0) 2016.07.21
테이블 스키마 변경  (0) 2016.07.21
DB 생성 및 테이블 생성, 삭제  (0) 2016.07.21
오토픽스 Auto Fix  (0) 2016.07.21
sa 계정 패스워드 초기화  (0) 2016.07.21