단일 사용자 모드로 Linux에서 master 데이터베이스 복원
적용 대상: SQL Server - Linux
특정 상황에서는 Linux에서 단일 사용자 모드로 SQL Server 인스턴스의 master
데이터베이스를 복원해야 할 수 있습니다. 시나리오에는 새 인스턴스로 마이그레이션하거나 불일치에서 복구하는 것이 포함됩니다.
참고 항목
SQL Server는 복원이 완료된 후 자동으로 종료됩니다. 이 동작은 의도된 것입니다.
master
데이터베이스를 복원하려면 명령줄에서 시작 옵션 -m
를 사용하여 단일 사용자 모드에서 SQL Server를 시작해야 합니다.
Windows에서 단일 사용자 모드로 SQL Server 인스턴스를 시작하려면 SQL Server의 단일 사용자 모드를 참조하세요.
필수 조건
단일 사용자 모드로 SQL Server를 시작하면 로컬 관리자 그룹의 모든 멤버가 sysadmin 고정 서버 역할의 멤버로 SQL Server 인스턴스에 연결할 수 있습니다. 자세한 내용은 시스템 관리자가 잠겨 있는 경우 SQL Server에 연결을 참조하세요.
단일 사용자 모드에서 SQL Server 인스턴스를 시작하는 경우:
- 한 명의 사용자만 서버에 연결할 수 있습니다.
CHECKPOINT
프로세스가 실행되지 않습니다. 기본적으로 시작 시 자동으로 실행됩니다.
SQL Server 서비스 중지
다음 명령은 현재 실행 중인 경우 SQL Server 인스턴스를 중지합니다.
systemctl stop mssql-server
현자 사용자를 mssql
로 변경
SQL Server on Linux는
mssql
사용자로 실행되므로 먼저 이 사용자로 전환해야 합니다. 이 명령을 실행할 때root
암호를 입력하라는 메시지가 표시됩니다.su mssql
단일 사용자 모드로 SQL Server 시작
SQLCMD
와 함께-m
옵션을 사용할 경우 지정한 클라이언트 응용 프로그램에 대한 연결 수를 제한할 수 있습니다(SQLCMD
는 표시된 대로 대문자로 표시되어야 함)./opt/mssql/bin/sqlservr -m"SQLCMD"
이전 예제에서
-m"SQLCMD"
는 연결 수를 단일 연결로 제한하며 이 경우 연결은 스스로 sqlcmd 클라이언트 프로그램으로 인식해야 합니다. 단일 사용자 모드로 SQL Server를 시작하여master
데이터베이스를 복원할 때 이 옵션을 사용합니다.SQL Server가 시작되면 여러 로그 항목이 생성됩니다. 출력에서 다음 줄을 찾아 단일 사용자 모드로 실행 중인지 확인할 수 있습니다.
[...] 2022-05-24 04:26:27.24 Server Command Line Startup Parameters: -m "SQLCMD" [...] 2022-05-24 04:26:28.20 spid8s Warning ****************** 2022-05-24 04:26:28.21 spid8s SQL Server started in single-user mode. This an informational message only. No user action is required.
SQL Server 인스턴스에 연결
sqlcmd를 사용하여 SQL Server 인스턴스에 연결합니다.
/opt/mssql-tools/bin/sqlcmd -S <ServerName> -U sa -P <password>
이전 예제에서
<ServerName>
은 원격으로 연결하는 경우 SQL Server를 실행하는 호스트의 이름입니다. SQL Server가 실행 중인 호스트에서 직접 연결하는 경우 이 매개 변수를 건너뛰거나localhost
를 사용할 수 있습니다.<StringPassword>
는 SA 계정의 암호입니다.
master
데이터베이스 복원
sqlcmd 내에서 다음 명령을 실행합니다. sqlcmd에서는 스크립트의 끝에
GO
를 실행해야 합니다.USE [master]; GO RESTORE DATABASE [master] FROM DISK = N'/var/opt/mssql/data/master.bak' WITH FILE = 1, MOVE N'master' TO N'/var/opt/mssql/data/master.mdf', MOVE N'mastlog' TO N'/var/opt/mssql/data/mastlog.ldf', NOUNLOAD, REPLACE, STATS = 5; GO
이전 예제에서
master
데이터베이스 백업 파일의 경로는/var/opt/mssql/data/master.bak
입니다. 이 값을master
데이터베이스 백업 파일의 올바른 경로로 바꿔야 합니다.복원에 성공하면 다음 예제와 비슷한 출력이 표시됩니다.
Processed 456 pages for database 'master', file 'master' on file 1. Processed 5 pages for database 'master', file 'mastlog' on file 1. The master database has been successfully restored. Shutting down SQL Server. SQL Server is terminating this process.
SQL Server 서비스 다시 시작
SQL Server를 다시 시작하려면 다음 명령을 실행합니다.
systemctl start mssql-server
설명
master
데이터베이스 백업을 복원할 때 백업이 수행된 후 인스턴스에 추가된 기존 사용자 데이터베이스는 master
복원 후에 표시되지 않습니다. 파일은 스토리지 계층에 계속 존재해야 하므로 해당 데이터베이스를 온라인으로 전환하기 위해 해당 사용자 데이터베이스 파일을 수동으로 다시 연결해야 합니다. 자세한 내용은 Attach a Database을 참조하세요.