1. docker CONTAINER ID 확인
user@PC:/$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab11426a70ce mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 9 minutes ago Up 9 minutes 0.0.0.0:11433->1433/tcp, :::11433->1433/tcp sql-server-container
user@PC:/$
2. sqlcmd 실행
2.1 docker 내부 Container console 실행
user@PC:/$ docker exec -it ab11426a70ce /opt/mssql-tools/bin/sqlcmd -S localhost -d master -U sa -P 'YourPassword123!'
2.2 docker 내부 Container console 실행
user@PC:/$ docker exec -it ab11426a70ce /bin/bash
mssql@ab11426a70ce:/$
mssql@ab11426a70ce:/$
mssql@ab11426a70ce:/$ /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourPassword123!'
1>
2>
3. bak파일 서버 볼륨으로 복사 ( c/Temp/20240229/TEST_Backup_2024022910001.bak 이 존재하는경우 ... /mnt/c/WSL/DOCKER/VOLUMES/SQLSERVER/ (docker sqlserver의 volumn) 으로 복사하기
WSL CLI에서 실행
user@PC:/mnt/c/Temp/20240229$
user@PC:/mnt/c/Temp/20240229$cp /mnt/c/Temp/20240229/TEST_Backup_2024022910001.bak /mnt/c/WSL/DOCKER/VOLUMES/SQLSERVER/
4. 데이터베이스 복원
SSMS > sa 로그인 > "데이터베이스" > "데이터베이스복원" > [일반] "디바이스" ..파일선택 > [옵션] "기존 데이터베이스 덮어쓰기" , "복제 설정유지" ,"복원된 데이터베이스에 대한 액세스 제한"
5. sqlcmd 접속후(sa) 데이터베이스생성 / 계정생성 / 권한부여
USE TEST; --데이터베이스 선택
GO --명령을 사용하여 명령을 실행 및 트랜잭션종료
CREATE LOGIN TEST WITH PASSWORD = 'YourPassword123!';
GO --명령을 사용하여 명령을 실행 및 트랜잭션종료
CREATE USER TEST_LOGIN FOR LOGIN TEST;
GO --명령을 사용하여 명령을 실행 및 트랜잭션종료
EXEC sp_addrolemember 'db_owner', 'TEST_LOGIN';
GO --명령을 사용하여 명령을 실행 및 트랜잭션종료
ALTER SERVER ROLE dbcreator ADD MEMBER TEST;
GO --명령을 사용하여 명령을 실행 및 트랜잭션종료
6. 생성된 계정(TEST)으로 자료조회 확인..
7. 백업스크립트 생성
user@PC:/mnt/c/WSL/DOCKER/VOLUMES/SQLSERVER$vi backup.sh
#!/bin/bash
# Docker 컨테이너 이름 또는 ID
container_name="a8fbc0321256"
# SQL Server 연결 정보 설정
server_name="localhost" # SQL Server 인스턴스 이름 또는 IP 주소(포트는 기본포트가 아니라도 상관없음)
database_name="TEST" # 백업할 데이터베이스 이름
backup_path="/var/opt/mssql/backup/" # 백업 파일을 저장할 경로
backup_filename="${database_name}_$(date +'%Y%m%d_%H%M%S').bak" # 백업 파일 이름
# SQL Server 백업 스크립트 실행
docker exec -it $container_name /opt/mssql-tools/bin/sqlcmd -S $server_name -d $database_name -U sa -P 'YourPassword123!' -Q "BACKUP DATABASE [$database_name] TO DISK='$backup_path/$backup_filename' WITH FORMAT, MEDIANAME='DatabaseBackup', NAME='Full Backup';"
if [ $? -eq 0 ]; then
echo "Backup completed successfully. Backup file: $backup_path/$backup_filename"
else
echo "Backup failed."
fi
8. 백업스크립트 실행 후 결과 확인
user@PC:/mnt/c/WSL/DOCKER/VOLUMES/SQLSERVER$ ./backup.sh
Processed 95224 pages for database 'TEST', file 'TEST' on file 1.
Processed 2 pages for database 'TEST', file 'TEST_log' on file 1.
BACKUP DATABASE successfully processed 95226 pages in 1.146 seconds (649.170 MB/sec).
Backup completed successfully. Backup file: /var/opt/mssql/backup//TEST_20240229_145121.bak
user@PC:/mnt/c/WSL/DOCKER/VOLUMES/SQLSERVER$
user@PC:/mnt/c/WSL/DOCKER/VOLUMES/SQLSERVER$ ls -lrth
total 2.2G
-rwxrwxrwx 1 user user 745M Feb 29 14:47 TEST_Backup_2024022910001.bak
-rwxrwxrwx 1 user user 939 Feb 29 14:51 backup.sh
-rwxrwxrwx 1 user user 746M Feb 29 14:51 TEST_20240229_145110.bak
-rwxrwxrwx 1 user user 746M Feb 29 14:51 TEST_20240229_145121.bak
user@PC:/mnt/c/WSL/DOCKER/VOLUMES/SQLSERVER$
'DB > SQL Server' 카테고리의 다른 글
docker / SQLSERVER / MSSQL / 데이터베이스생성 / 계정생성 / 권한부여 (0) | 2024.02.29 |
---|