기본적으로 모든이 RESTORE DATABASE
와 함께 제공 RECOVERY
세트까지. 'NORECOVERY'옵션은 기본적으로 데이터베이스가 더 많은 복원 파일 ( DIFF 파일 및 LOG 파일 일 수 있으며 가능한 경우 꼬리 로그 백업 파일을 포함 할 수 있음)을 기다리고 있음을 SQL Server에 알려줍니다 . 'RECOVERY'옵션은 모든 트랜잭션을 완료하고 데이터베이스가 트랜잭션을 수행 할 수 있도록합니다.
그래서:
- 데이터베이스가 SIMPLE 복구 모델 로 설정된 경우 DIFF 백업 이있을 때만 옵션을 사용하여 전체 복원을 수행 할 수 있습니다 . 아니 LOG의 백업에서 허용되는 단순 복구 모델 데이터베이스.
NORECOVERY
- 그렇지 않으면 데이터베이스가 FULL 또는 BULK-LOGGED 복구 모델 로 설정된 경우 FULL 복원과
NORECOVERY
옵션을 차례로 수행 한 다음 DIFF와을 차례로 수행하고 NORECOVERY
마지막 으로 옵션을 사용하여 LOG 복원을 수행 할 수 RECOVERY
있습니다.
기억, 주의 마지막은 QUERY 있어야 RESTORE RECOVERY
옵션을 . 명시적인 방법 일 수도 있고 아닐 수도 있습니다. T-SQL 열에서 상황은 다음과 같습니다.
1.
USE [master]
GO
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak WITH FILE = 1, [REPLACE],NOUNLOAD,
RECOVERY -- This option could be omitted.
GO
WITH REPLACE 옵션은 데이터 손실로 이어질 수 있으므로주의해서 사용해야합니다
또는 FULL 및 DIFF 백업을 수행하는 경우이를 사용할 수 있습니다
USE [master]
GO
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak' WITH FILE = 1,
NOUNLOAD,NORECOVERY
GO
RESTORE DATABASE Database_name
FROM DISK =N'\\path_of_**diff**backup_file.bak' WITH FILE = 1,
NOUNLOAD, RECOVERY
GO
2. USE [master]
GO
-- Perform a Tail-Log backup, if possible.
BACKUP LOG Database_name
GO
-- Restoring a FULL backup
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak' WITH FILE = 1,
NOUNLOAD,NORECOVERY
GO
-- Restore the last DIFF backup
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_DIFF_backup_file.bak' WITH FILE = 1,
NORECOVERY,NOUNLOAD
GO
-- Restore a Log backup
RESTORE LOG Database_name
FROM DISK = N'path_of_LOG_backup_file.trn' WITH FILE = 2,
RECOVERY, NOUNLOAD
GO
물론 STATS = 10 옵션을 사용하여 복원을 수행하여 완료된 10 %마다 SQL Server 에보고 하도록 지시 할 수 있습니다 .
원하는 경우 프로세스를 관찰하거나 실시간 기반 쿼리로 복원 할 수 있습니다. 다음과 같이:
USE[master]
GO
SELECT session_id AS SPID, command, a.text AS Query, start_time, percent_complete, dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time
FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a
WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE')
GO
이 도움을 바랍니다.
DROP DATABASE db
SSMS를 통해 명령을 실행했으며 작동했습니다 (이전에는 다른 컴퓨터에서 SSMS를 사용하여 명령을 실행했습니다). 다른 솔루션도 효과가 있었을 것 같습니다.