지금도 개발중

MS-SQL : 데이터베이스 용량 줄이기 How to shrink log file in sql Database 본문

DataBase/MS-SQL

MS-SQL : 데이터베이스 용량 줄이기 How to shrink log file in sql Database

홍시쿼카 2019. 5. 7. 21:49

종종 우리는 데이터베이스 데이터 파일 또는 데이터베이스 로그 파일의 용량이 꽉 찼을 때, 축소하는 쿼리문이 필요합니다. 저도 C#과 MSSQL를 이용하여 작업을 할 때 이 구문이 필요했었어요. 물론 해당 구문은 구글에서 검색하면 바로 나옵니다. 쓰는 방법은 매우 간단해요. 아래의 예문처럼 DBCC SHRINKDATABASE(본인의 데이터베이스명) 쿼리를 실행하면 됩니다.
 
DBCC SHRINKDATABASE는 데이터베이스에 있는 데이터 및 로그 파일의 크기를 축소할 때 쓰는 Transact-SQL 구문입니다.

-- MS-SQL 
DBCC SHRINKDATABASE  
( database_name | database_id | 0  
     [ , target_percent ]  
     [ , { NOTRUNCATE | TRUNCATEONLY } ]  
) 
[ WITH NO_INFOMSGS ] 


-- Example 
DBCC SHRINKDATABASE (UserDB);

변경 전과 변경 후의 사진입니다. 변경 전에는 mdf파일이 4096KB이고 log의 ldf파일은 8384KB인 것을 확인 할 수 있습니다. 그 다음 DBCC SHRINKDATABASE를 하니 확실히 용량이 줄어든 것을 확인할 수 있네요.
 
정말 쉽지 않나요? 사실 저는 SQL 구문만 필요하여 찾은 것이 아니라, C#에서 이 해당 SQL 구문을 실행시키려면 어떻게 해야할지를 찾고 있었어요. 뭐 그러다가 dbcc shrinkdatabase라는 transact-SQL 구문도 알게 되었네요.

int recordsAffected; 
string mySqlStatement = "DBCC SHRINKDATABASE (MYDB)"; 
string connectionString = _sConnString; 

SqlCommand command = new SqlCommand(mySqlStatement); 
using (SqlConnection cnn = new SqlConnection(connectionString)) 
{ 
   command.Connection = cnn; 
   cnn.Open(); 
   recordsAffected = command.ExecuteNonQuery(); 
   cnn.Close(); 
} 

return recordsAffected;

위의 소스는 구글에서 발견하여 참고로 가져온 내용입니다. string 변수명을 하나 지정하여 그 안에 "DBCC SHRINKDATABASE" SQL 구문을 넣었고요. 그 다음 sqlcommand를 이용하여 해당 string SQL구문을 실행시킵니다. 생각보다 그렇게까지 어렵진 않네요.

Comments