SQL Server : 데이터베이스가 "복원"상태에서 멈춤


564

데이터베이스를 백업했습니다.

BACKUP DATABASE MyDatabase
TO DISK = 'MyDatabase.bak'
WITH INIT --overwrite existing

그런 다음 복원하려고했습니다.

RESTORE DATABASE MyDatabase
   FROM DISK = 'MyDatabase.bak'
   WITH REPLACE --force restore over specified database

이제 데이터베이스가 복원 상태에 빠졌습니다.

일부 사람들은 백업에 로그 파일이 없기 때문에 다음을 사용하여 롤 포워드해야한다고 이론화했습니다.

RESTORE DATABASE MyDatabase
WITH RECOVERY 

물론 그것을 제외하고는 실패합니다.

Msg 4333, Level 16, State 1, Line 1
The database cannot be recovered because the log was not restored.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

그리고 치명적인 상황에서 정확히 원하는 것은 작동하지 않는 복원입니다.


백업에는 데이터와 로그 파일이 모두 포함됩니다.

RESTORE FILELISTONLY 
FROM DISK = 'MyDatabase.bak'

Logical Name    PhysicalName
=============   ===============
MyDatabase    C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase.mdf
MyDatabase_log  C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase_log.LDF

3
나는 똑같은 문제가 있었고 모든 해결책이 실패했습니다. 흥미롭게도 SQL 서버에 직접 로그온하여 DROP DATABASE dbSSMS를 통해 명령을 실행했으며 작동했습니다 (이전에는 다른 컴퓨터에서 SSMS를 사용하여 명령을 실행했습니다). 다른 솔루션도 효과가 있었을 것 같습니다.
살만 A

답변:


437

복원 프로세스의 일부로 데이터베이스를 온라인 상태로 만들려면 데이터베이스 명령 WITH RECOVERY과 함께이 옵션 을 사용해야합니다 RESTORE.

이것은 트랜잭션 로그 백업을 복원하지 않으려는 경우에만 해당됩니다. 즉, 데이터베이스 백업 만 복원 한 다음 데이터베이스에 액세스 할 수 있어야합니다.

당신의 명령은 다음과 같아야합니다.

RESTORE DATABASE MyDatabase
   FROM DISK = 'MyDatabase.bak'
   WITH REPLACE,RECOVERY

SQL Server Management Studio에서 데이터베이스 복원 마법사를 사용하면 더 성공할 수 있습니다. 이 방법으로 특정 파일 위치, 덮어 쓰기 옵션 및 WITH 복구 옵션을 선택할 수 있습니다.


3
그가하고있는 일을 할 때 회복 진술을 사용하지 않아도됩니다. WITH REPLACE로 충분합니다.
Sam

8
예, NORECOVERY를 사용하고 있었지만 복원 프로세스가 중단되었습니다. WITH RECOVERY, REPLACE를 사용하면 더 이상 프로세스가 중단되지 않습니다.
Junior Mayhé

이것은 내 문제를 해결했습니다. 복원 도중 SAN 장애가 발생했으며 빠르고 깨끗한 솔루션이었습니다.
등록 된 사용자

오늘 SQL Server 2005 데이터베이스와 비슷한 문제가있었습니다. 내 경우에는 문제를 해결하기 위해 WITH 절에 ', RESTART'를 추가해야했습니다. 이전 작업이 성공하지 못했다는 오류 메시지가 표시되었습니다.
XpiritO

3
@FistOfFury 동일한 데이터베이스에서 이전 복원 조작이 일시 중단 / 절전 상태에 있으면 예입니다. 인 프로세스 복원을 중지 / 취소하는 것만 동일한 효과가 있습니다.
John Sansom

692

이 상황에서 Symantec Backup Exec 11d를 사용하여 데이터베이스를 SQL Server 2005 Standard Edition 인스턴스로 복원했습니다. 복원 작업이 완료된 후 데이터베이스는 "복원 중"상태로 유지되었습니다. 디스크 공간 문제가 없었습니다. 데이터베이스가 단순히 "복원"상태에서 나오지 않았습니다.

SQL Server 인스턴스에 대해 다음 쿼리를 실행하고 데이터베이스를 즉시 사용할 수 있음을 발견했습니다.

RESTORE DATABASE <database name> WITH RECOVERY

4
DB를 2 시간 동안 복원에 멈췄습니다. 우리는 마스터와 다른 컴퓨터 에서이 명령을 실행했으며 우리를 바로 고쳤습니다. 감사!
Pete

11
+1, 문제가 있습니다. 이것을 실행하면 데이터베이스가 이미 완전히 복구되었다는 오류 메시지가 나타납니다. 그러나 여전히 "복구 중"상태로 표시되었습니다. 그래서 Management Studio에서 마우스 오른쪽 버튼을 클릭하고 Refresh를 누르면 정상으로 돌아 왔습니다.
dario_ramos

2
Mng Studio 마법사를 사용하여 복원하고 새 데이터베이스 이름을 입력했지만 실수로 파일 이름을 기존 데이터베이스와 동일하게 두었습니다. "복원에 실패했지만 로그 테일에 성공했습니다"라는 오류가 발생하여 해당 파일에 연결된 데이터베이스가 복원 중 상태에 빠졌습니다. 이 명령은 데이터베이스를 이전 상태로 복원 한 것으로 보입니다.
Chris

3
이것은 효과가 있었다. 백업을 측면 데이터베이스로 복원하려고했지만 기본 데이터베이스가 어떤 이유로 복원 상태가되었습니다. 이것은 실제로 내 DB를 복구했습니다. 무리 감사!
Aravindh 2018 년

2
일부 SSMS 복원 마법사 기본값은 소스 DB를 복원 상태로 유지하여 사용자에 대한 두려움없이 다양한 백업 또는 로그를 계속 복원 할 수 있으며,이 명령은 일단 DB를 정상으로 되돌릴 수있는 적절한 방법입니다.
Tim Lehner

102

방법은 다음과 같습니다.

  1. 서비스를 중지하십시오 (MSSQLSERVER).
  2. 데이터베이스 및 로그 파일 (C : \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ Data ...)의 이름을 바꾸거나 파일이있는 위치
  3. 서비스를 시작하십시오 (MSSQLSERVER).
  4. 문제가있는 데이터베이스를 삭제하십시오.
  5. 데이터베이스를 다시 복원하십시오.

티푸, 고마워 원래 포스터와 비슷한 문제가 있었지만 복원하는 동안 서버의 디스크 공간이 부족하여 영구적 인 복원 상태가 발생했습니다.
Pauk

8
왜 데이터베이스를 삭제하지 않습니까? 그렇게하면 서비스를 중단 할 필요가 없습니다.
ErikE

8
@ErikE 저에게 SQL 서버는 실제로 복원하지는 않았지만 복원 도중에 데이터베이스를 삭제할 수 없다고 말했습니다 ....
Erik Philips

@ErikPhilips이 경우 서비스 중단으로 돌아간 것으로 가정합니다. 매번 또는 특정 경우에 멈춤 복원 문제가 발생하는지 궁금합니다.
ErikE

5
제 경우 drop database <dbname>에는 쿼리 창에서 SQL 명령 으로 "Restoring ..."상태에있는 데이터베이스를 삭제하는 것으로 충분했습니다 . 그런 다음 데이터베이스를 마우스 오른쪽 단추로 클릭 하고 새로 고침 을 선택 하여 Management Studio에서 항목을 제거했습니다. 그 후 나는 새로운 잘 근무하는 복원했다 ( 참고 를 가져 오는 것은 오프라인 작업을하지 않았다을, SQL 서비스를 다시 시작 작동하지 않았다, 서버를 재부팅도 작동하지 않았다).
Matt

84

로그 전달 보조 서버를 중지하는 것과 비슷한 사고가 발생했습니다. 로그 전달에서 서버를 제거하고 기본 서버에서 로그 전달을 중지하는 명령 후 명령 후 보조 서버의 데이터베이스가 복원 상태로 멈췄습니다.

RESTORE DATABASE <database name> WITH RECOVERY

데이터베이스 메시지 :

RESTORE DATABASE가 18.530 초 (0.000MB / 초)에서 0 페이지를 성공적으로 처리했습니다.

18 초 후에 데이터베이스를 다시 사용할 수있었습니다.


6
데이터베이스를 이미 복원했지만 복구 옵션을 잊었을 때 특히 유용합니다.
JBickford

2
이 데이터베이스의 백업을 다른 DB 이름으로 복원 한 후 "복원"상태를 유지하는 데 필요한 전부였습니다. 무리 감사.
Sean

81

SQL Management Studio를 사용하여 복원하는 데 비슷한 문제가 있습니다. 데이터베이스 백업을 다른 이름의 새 데이터베이스로 복원하려고했습니다. 처음에는 이것이 실패했고 새로운 데이터베이스의 파일 이름을 수정 한 후에는 성공적으로 수행되었습니다. 따라서 복원 후 원래 데이터베이스는 이름 옆에 (복원 중 ...)으로 남아있었습니다. 위의 포럼 (Bhusan 's)의 답변을 고려하여 다음과 같은 측면에서 쿼리 편집기에서 실행을 시도했습니다.

RESTORE DATABASE "[NAME_OF_DATABASE_STUCK_IN_RESTORING_STATE]"

문제가 해결되었습니다. 특수 문자가 포함 된 데이터베이스 이름으로 인해 처음에 문제가 발생했습니다. 큰 따옴표를 추가하여이 문제를 해결했습니다. 작은 따옴표는 "Incorrect syntax near ..."오류가 발생하지 않습니다.

이것은이 문제를 해결하려고 시도한 최소한의 솔루션 (데이터베이스를 복원하는 상태로 멈춤)이며 더 많은 경우에 적용 할 수 있기를 바랍니다.


2
찢어 질 필요없이 완벽하게 작동했습니다. 80 + Gb의 3 Dbs는 각각 시간이 걸립니다! 감사!
Christer

1
프로덕션 환경에서 거의 완료했습니다. 나는 로컬에서 먼저 시도 하고이 같은 상황에서 끝나고 귀하의 의견을 찾았습니다. 교훈 : 중요한 상황에서 스크립트를 사용하고 SSMS를 신뢰하지 않습니다.
Mariusz

1
데이터베이스의 복사 전용 파일 백업을 새 데이터베이스로 복원 할 때이 문제가 발생했습니다. 원래 데이터베이스에 오류가 표시되었습니다. 이 솔루션은 효과가 있었고 응답은 "RESTORE DATABASE가 0.263 초 (0.000MB / 초)에 0 페이지를 성공적으로 처리했습니다."였습니다. 따라서 SQL Server는 데이터베이스 상태에 대해 혼란스러워 한 것 같습니다.
R. Schreurs

1
큰 따옴표를 제거했을 때만 나를 위해 일했습니다. 매개 변수로 [MY_DB_NAME]을 사용했습니다.
StackOverflowUser

34

좋아, 나는 비슷한 문제가 있으며 Pauk의 경우와 마찬가지로 복원하는 동안 서버의 디스크 공간이 부족하여 영구적으로 복원되는 상태가되었습니다. SQL Server 서비스를 중지하지 않고이 상태를 끝내는 방법은 무엇입니까?

나는 해결책을 찾았다 :)

Drop database *dbname*

29

WITH RECOVERY 옵션은 RESTORE DATABASE / RESTORE LOG 명령이 실행될 때 기본적으로 사용됩니다. "복원"프로세스가 중단 된 경우 다음을 실행하여 데이터베이스를 온라인 상태로 되돌릴 수 있습니다.

RESTORE DATABASE YourDB WITH RECOVERY
GO

여러 파일을 복원해야하는 경우 CLI 명령에는 각각 WITH NORECOVERY 및 WITH RECOVERY가 필요합니다. 명령의 마지막 파일에만 WITH RECOVERY가 있어야 데이터베이스를 온라인으로 되돌릴 수 있습니다.

RESTORE DATABASE YourDB FROM DISK = 'Z:\YourDB.bak'
WITH NORECOVERY
GO
RESTORE LOG YourDB FROM DISK = 'Z:\YourDB.trn'
WITH RECOVERY
GO

SQL Server Management Studio 마법사를 사용할 수도 있습니다.

여기에 이미지 설명을 입력하십시오

가상 복원 프로세스도 있지만 타사 솔루션을 사용해야합니다. 일반적으로 데이터베이스 백업을 라이브 온라인 데이터베이스로 사용할 수 있습니다. ApexSQL과 Idera는 자체 솔루션을 가지고 있습니다. ApexSQL 복원에 대해 SQL Hammer 검토합니다 . 많은 수의 백업을 처리하는 경우 가상 복원이 좋은 솔루션입니다. 복원 프로세스가 훨씬 빠르며 디스크 드라이브의 공간을 많이 절약 할 수 있습니다. 여기서 비교를 위해 인포 그래픽을 살펴볼 수 있습니다 .


23

이것은 매우 분명 할 수 있지만 지금 당장 나에게 넘어졌습니다.

테일 로그 백업을 수행하는 경우 SSMS 복원 마법사에서이 옵션을 선택하여이 문제가 발생할 수도 있습니다. "원본 데이터베이스를 복원 상태로 유지 (NOTH NORECOVERY)"

여기에 이미지 설명을 입력하십시오


7
이 상태에있는 경우 가장 좋은 방법은 다음과 같습니다. 1. 데이터베이스를 마우스 오른쪽 단추로 클릭하고 작업-> 복원-> 거래 로그로 이동합니다. 2. Tail 로그 백업에 사용 된 백업 파일 찾기 3. 복원 백업 복원이 성공하고 데이터베이스를 다시 온라인 상태로 만들어야합니다.
Ryan Gross

16

나는 왜 그런지 알아 냈다.

RESTORE DATABASE명령 을 실행 한 클라이언트 가 복원 중에 연결을 끊으면 복원이 중단됩니다.

클라이언트 연결로 데이터베이스를 복원하라는 메시지가 표시 될 때 서버가 클라이언트가 전체 연결 상태를 유지하지 않으면 복원을 완료하지 못할 수도 있습니다.


10
모든 SQL 명령을 사용하려면 클라이언트가 항상 연결되어 있어야합니다.
mrdenny

2
@ mrdenny : 클라이언트 연결이 끊어지면 변경 사항이 취소된다고 가정했을 것입니다.
Ian Boyd

Microsoft의 PHP PDO 드라이버 로이 명령을 실행하는 것과 동일한 문제가 있습니다. 그러나 Microsoft SQL Server Management Studio로 실행할 때 제대로 작동합니다. 내 PHP 응용 프로그램을 항상 연결시키는 방법이 궁금합니다.
channa ly

여기에서 가능한 연결 끊기 후에 DB가 복원 / 단일 사용자에 멈췄습니다. 새 세션에서 다른 모든 SPID를 종료했지만 여전히 멈췄습니다. 솔루션으로 데이터베이스를 삭제할 수있었습니다.
crokusek

10

이것은 작동했습니다 :

http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/8dd1b91d-3e14-4486-abe6-e3a550bfe457

데이터베이스에 복원 상태가 표시되어 쿼리를 실행할 수없고 소프트웨어와 연결할 수없는 상황이있었습니다.

이 상황에서 벗어나기 위해 한 것은 :

  1. Windows 서비스에서 모든 SQL 관련 서비스를 중지하십시오.

  2. Ldf 및 Mdf 파일이있는 SQL 폴더에서 DATA 폴더를 열었습니다. 일반적으로 다음과 같습니다. "C : \ Program Files *********** \ MSSQL \ DATA

  3. 그런 다음 데이터베이스의 Ldf 및 Mdf 파일 [db name] .mdf 및 [db name] _log.ldf를 모두 복사했습니다.

이 두 파일을 다른 폴더로 복사했습니다.

  1. 그런 다음 Windows 서비스에서 모든 SQL 관련 서비스 (1 단계)를 다시 시작했습니다.

  2. 일반 로그인으로 MS SQL Management Studio를 시작했습니다.

  3. 범인 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 Delete 키를 눌러 데이터베이스를 전혀 삭제하십시오.

  4. 이 데이터베이스와 관련된 모든 LDF 및 MDF 파일이 DATA 폴더에서 나왔습니다 (2 단계에서 언급 함).

  5. 이름이 같은 새 데이터베이스를 만들었습니다 (6 단계에서 삭제 한 것과 동일한 이름-범인 데이터베이스).

  6. 그런 다음 [데이터베이스 이름]-> 마우스 오른쪽 버튼 클릭-> 작업-> 오프라인으로 전환하십시오.

  7. 그런 다음 두 파일 (3 단계)을 DATA 폴더 (2 단계)로 다시 복사했습니다.

  8. [데이터베이스 이름]-> 오른쪽 클릭-> 작업-> 온라인 상태로 만듭니다.


이것은 나에게도 효과가있었습니다. 10 단계에서 기존 파일을 덮어 쓰도록 선택했습니다.
Divi perdomo 2014 년

8

나는. 내 데이터베이스 이름에 쿼리가 작동하지 않아 ( '.'근처에 잘못된 구문이 있습니다.) 그런 다음 이름에 대괄호가 필요하다는 것을 깨달았습니다.

RESTORE DATABASE [My.DB.Name] WITH RECOVERY

5

필자의 경우 SQL 명령을 사용하여 "Restoring ..." 상태에 있는 데이터베이스삭제하는 것으로 충분했습니다.

 drop database <dbname> 

쿼리 창에서.

그런 다음 데이터베이스를 마우스 오른쪽 단추로 클릭 하고 새로 고침 을 선택 하여 Management Studio에서 항목을 제거했습니다. 그 후 나는 잘 작동하는 새로운 복원을 수행했습니다 (오프라인으로 가져 오는 것은 효과가 없으며 SQL 서비스 재시작이 작동하지 않으며 서버 재부팅도 작동하지 않습니다).


3

이벤트 로그에서 TCP 오류를 수신했을 때이 문제가 발생했습니다 ...

sql로 DB를 삭제하거나 관리자 "삭제"에서 마우스 오른쪽 버튼을 클릭하고 다시 복원하십시오.

실제로 기본적 으로이 작업을 시작했습니다. DB 삭제 스크립트를 작성하고 다시 생성 한 후 복원하십시오.


3

기본적으로 모든이 RESTORE DATABASE와 함께 제공 RECOVERY세트까지. 'NORECOVERY'옵션은 기본적으로 데이터베이스가 더 많은 복원 파일 ( DIFF 파일 및 LOG 파일 일 수 있으며 가능한 경우 꼬리 로그 백업 파일을 포함 할 수 있음)을 기다리고 있음을 SQL Server에 알려줍니다 . 'RECOVERY'옵션은 모든 트랜잭션을 완료하고 데이터베이스가 트랜잭션을 수행 할 수 있도록합니다.

그래서:

  1. 데이터베이스가 SIMPLE 복구 모델 로 설정된 경우 DIFF 백업 이있을 때만 옵션을 사용하여 전체 복원을 수행 할 수 있습니다 . 아니 LOG의 백업에서 허용되는 단순 복구 모델 데이터베이스.NORECOVERY
  2. 그렇지 않으면 데이터베이스가 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

이 도움을 바랍니다.


2

스냅 샷이 활성화 된 경우 걸린 데이터베이스를 삭제하는 데 문제가있을 수도 있습니다. 나를 위해 이것은 효과가 있었다 :

  1. 먼저 Tipu Delacablu 단계를 따랐 습니다 (몇 개의 게시물 읽기)
  2. run command : drop database [your database] : 스냅 샷 데이터베이스의 이름을 알려주는 오류가 발생합니다.
  3. 명령 실행 : 데이터베이스 [snapshot database]를 삭제 한 다음 2 단계에서 명령을 다시 실행하십시오.


1

내가 가지고 MyDbName를 (복원 중 ...) 때문에 SQL 익스프레스의 경우는 제한을 허가합니다.

로그 파일에서 다음을 발견했습니다.

결과 누적 데이터베이스 크기가 라이센스 된 데이터베이스 당 10240MB를 초과 하므로 CREATE DATABASE 또는 ALTER DATABASE가 실패했습니다 .

따라서 더 큰 데이터베이스를 복원하려는 경우 SQL Express 서버를 예를 들어 Developer 에디션으로 전환해야 합니다.


그것은 TFS 데이터베이스였으며 TFS 클라이언트는 이미 데이터베이스가 가득 찼습니다.
cskwg 2016

1

SQL Server Management Studio를 사용하여 데이터베이스를 복원하는 동안 비슷한 문제가 발생하여 복원 모드에 빠졌습니다. 몇 시간의 문제 추적 후 다음 쿼리가 효과적이었습니다. 다음 쿼리는 데이터베이스를 기존 백업에서 이전 상태로 복원합니다. 캐치가 동일한 디렉토리에 .mdf 및 .log 파일을 갖는 것입니다.

RESTORE DATABASE aqua_lc_availability
FROM DISK = 'path to .bak file'
WITH RECOVERY

0
  1. 먼저 SQL 에이전트 서비스를 확인하고 실행하십시오.
  2. 다음 T-SQL 사용 :

    파일 이름 선택 master.sys.sysaltfiles WHERE dbid = DB_ID ( 'db_name');

  3. T-SQL을 지속적으로 사용 :

    디스크에서 데이터베이스 복원 = RESTART, REPLACE가있는 'DB_path';

이 도움을 바랍니다!


0

모든 WITH RECOVERY 기반 옵션이 작동하지 않았습니다.

Management Studio에서 전체 복원을 수행했습니다.

USE [master]
RESTORE DATABASE Sales_SSD
FROM  DISK = N'D:\databaseBackups02\Daily_Sales_20150309_0941.bak' 
WITH  FILE = 1,  
MOVE N'Sales_Data' TO N'C:\Data\SSD\Sales.mdf',  
MOVE N'Sales_Log' TO N'C:\Data\SSD\Sales_1.ldf',  
NOUNLOAD,  REPLACE,  STATS = 5

0

같은 문제가 발생했습니다. 드라이브가 가득 차지 않아서 데이터베이스가 왜이 문제를 겪었는지 모르겠지만 ... 손상된 것 같습니다. 나는 위의 모든 것을 완전히 시도하지 않았다. 특히 서비스를 중지하고 mdf 및 ldf 파일을 삭제하라는 제안이 효과가 있다고 생각했지만 복원시 여전히 멈췄습니까?

언급 한대로 파일을 삭제 하여이 문제를 해결했지만 DB를 다시 복원하려고하는 대신 새로운 .mdf 및 .ldf 파일을 복사하고 프런트 엔드 첨부 마법사를 사용하여 첨부했습니다. 구호, 그것은 일했다!!

가상 컴퓨터를 사용하는 동안 새 파일을 복사하는 데는 시간이 걸렸습니다. 클립 보드를 사용하여 복사하고 붙여 넣는 데는 한 시간이 걸렸으므로 마지막 시도로만 권장합니다.


0

나를 위해 고친 것은

  1. 인스턴스 중지
  2. 데이터 폴더에 .mdf 및 .ldf 파일의 백업 생성
  3. 인스턴스를 다시 시작하십시오.
  4. 복원이 걸린 데이터베이스 삭제
  5. .mdf 및 .ldf 파일을 다시 데이터 폴더에 넣습니다.
  6. .mdf 및 .ldf 파일에 인스턴스를 연결하십시오.

0
RESTORE DATABASE {DatabaseName}
   FROM DISK = '{databasename}.bak'
   WITH REPLACE, RECOVERY

이 답변이 이전에 받아 들여지고 찬성 한 답변과 비교할 때 제공되는 추가 통찰력을 지적하십시오. 그것은 명성을 얻기 위해 방금 복사 한 느낌을 피하는 데 도움이 될 것입니다. 또한 StackOverflow가 무료 코드 작성 서비스라는 잘못된 인상을주기 때문에 코드 전용 답변 (주로 눈에 띄는 차이)은 여기에서 인식되지 않습니다.
Yunnosch

이전 답변과의 유사성을보다 명확하게하기 위해 서식을 수정했습니다. 그러나 나중에 더 쉽게 읽을 수 있도록 대답하려는 경우 stackoverflow.com/editing-help 에서 배울 수 있습니다.
Yunnosch

0

이 문제를 해결하려면 다음 명령을 사용하십시오

RESTORE DATABASE [DatabaseName] WITH RECOVERY
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.