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구문을 실행시킵니다. 생각보다 그렇게까지 어렵진 않네요.