DB관련/SQL Server

(중요) MSSQL mdf log파일로 Detach->Atach 하기 (백업,복원)

saltdoll 2020. 2. 28. 02:41
반응형

Database를  사용하다 보면, Backup의 중요성을 너무 크게 느끼게 됩니다.

MSSQL도 마찬가지이며,

MSSQL의 Backup과 Restore 하는 방법이 여러 가지 있습니다만, 파일을 통한 방법을 남겨보도록 하겠습니다.

 

 

 

MSSQL mdf log 파일로 복원하기

SQL Server에서 물리적인 DB파일인 *. mdf / *. log파일을 이용한 DB 이전 하기

(1) DB 선택  > 마우스 오른쪽 클릭 > Tasks > Detach... 처리

(2) mdf 파일과 log파일을 원하는 위치에 복사

(3) mdf 파일과 log파일의 Window 기본 User 권한에 모든 권한으로 변경

 

Attach이전에, user name에 MSSQL유저가 없습니다.

파일을 Attache이전에는 권한에 MSSQLSERVER권한이 없습니다.

Attach이후, user name이 MSSQLSERVER 유저로 변경됩니다.

Attach이후에 권한이 변경됩니다.

 

 

(4) Attach.. (mdf 파일 선택)

Attach를 통해서 mdf파일 선택

 

mdf파일을 선택하면 Attach 작업은 끝

 

(5) 복원된 DB의 User 삭제

DB에 기존의 유저의 권한에 문제가 있음으로 삭제하고, 전체 Security에서 연결해 줘야합니다.

 

 

(6) 전체 User에서 User Mapping에서 "DB선택"과 "db_owner"를 선택.

db_ower가 들어가지 않으면 DB 접근이 실패됩니다.

(7) (옵션사항) 파일의 Auto Shrick 설정 <- 해당 작업은 하지 않으셔도 됩니다.

DB의 Properties의 Options에 Automatic카테고리에, Auto Shrink를 False -> True로 변경 

(자동으로 사용하지 않는 부분의 file영역을 제거함)

다시 False로 변경하고, 수동으로 Shrink하기로 함

Auto Shrink값을 Ture로 변경

다시 False로 변경

 

 

 

Database Shrink => DB file 물리적 용량 줄이기

Shink작업은 Database의 용량이 부족할때, 사용하는 방법입니다.

그러나, Disk용량은 줄여주는 효과를 가져오지마, 속도 향상의 개선은 반비례합니다. (속도는 더 느려질 수도 있습니다.)

 

 

참고 DB 삭제

DB 삭제시 Connection 되어 있는 것들 때문에 Delete가 안될 때가 있습니다.

( [v] Close existing connections으로 접속된 부분 닫고, 삭제하게 된다.)

 

 

 

SQL Server Database Growth and Autogrowth

SQL Server 에러 중에, PRIMAEY의 filegroup 용량이 부족하다는 에러가 발생할 때가 있습니다.

해당 부분 Autogrowth 사이즈가 지정되지 않았을때, 에러가 발생할 수 있습니다.

(참고로 Default auto-growth값은 data file은 1MB이며, log file은 10%입니다.) 

출처: https://www.red-gate.com/simple-talk/sql/database-administration/sql-server-database-growth-and-autogrowth-settings/

자동 용량 증가량이 너무 적어서 에러가 나는 것을 수동으로 고쳐줍니다.

 

 

 

 

(아래 에러에 관련 글: https://dba.stackexchange.com/questions/33700/primary-filegroup-is-full-sql-server-2008 )

[에러 내용 예제]

Could not allocate space for object 'myDB' in database 'I 3 Stroke' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

[해결]

 You want to give your database as much storage allocation as you can afford to give it. If it runs out of space you'll receive this error without auto-grow on and if auto-grow is on you'll take a performance hit each time it has to auto-grow. If you are simply out of disk space then that is your answer and you need a bigger disk.

 

 

 

 

 

반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)