source

SQL Server 데이터베이스에서 복구 보류 중 상태를 수정하는 방법은 무엇입니까?

ittop 2023. 8. 30. 22:04
반응형

SQL Server 데이터베이스에서 복구 보류 중 상태를 수정하는 방법은 무엇입니까?

SQL Server 데이터베이스에서 복구 보류 중 상태를 수정하는 방법은 무엇입니까?

다음 쿼리 집합을 실행합니다.

ALTER DATABASE [DBName] SET EMERGENCY;
GO

ALTER DATABASE [DBName] set single_user
GO

DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
GO 

ALTER DATABASE [DBName] set multi_user
GO

자세한 내용은 https://www.stellarinfo.com/blog/fix-sql-database-recovery-pending-state-issue/ 에서 확인하시기 바랍니다.

Database .mdf 파일 이름이 변경되면 이 문제가 발생합니다.해결 방법:

서비스에서 SQL EXPRESS를 다시 시작합니다. 보류 중인 문제가 해결되었습니다.

이 경우 디스크 드라이브의 공간이 부족하기 때문에 발생했습니다.사용 가능한 공간에 일부 정크를 삭제한 다음 SQL Server 서비스를 중지하고 다시 시작하여 "복구 보류 중"을 수정했습니다.

분리, 다시 부착, 해결!

ALTER DATABASE MyDatabase SET EMERGENCY;
EXEC sp_detach_db MyDatabase
EXEC sp_attach_single_file_db @DBName = MyDatabase, @physname = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\MyDatabase.mdf'

SQL Management Studio를 사용하는 동안 사용자가 데이터베이스 이름을 변경할 때 간헐적으로 문제가 발생하고 SQL Server가 두 개의 다른 데이터베이스에 대해 동일한 DB 파일을 사용하는 경우가 있습니다.SQL Server가 이 상태인 경우 Mahesh의 답변을 시도하면 다음 오류가 표시될 수 있습니다.

"파일이 다른 프로세스에서 사용되고 있기 때문에 프로세스에서 파일에 액세스할 수 없습니다."

이 문제를 해결하려면:

  1. 서비스 콘솔 MMC에서 MS SQL Server 서비스를 중지합니다.
  2. DB 및 로그 파일 이름 변경(데이터베이스 속성 -> 파일)
  3. SQL Management Studio의 Object Explorer 창에서 '데이터베이스 폴더'를 새로 고칩니다. '복구 보류 상태'에 표시된 데이터베이스 노드 외에 이 문제를 해결하려는 다른 데이터베이스 노드가 있으면 다음 단계로 진행합니다.이 오류가 표시되지 않으면 다른 방법을 사용하여 이 문제를 해결해야 합니다.
  4. 3단계부터 새로운 위반 노드에 대한 DB 및 로그 파일을 백업하고 !!조심해요!데이터베이스 삭제
  5. 2단계에서 변경한 DB 파일 이름 복원
  6. 이제 서비스 콘솔에서 MS SQL Server 서비스를 시작합니다.
  7. 마헤쉬의 답변 단계를 다시 시도합니다.

이 경우 고가용성 SQL 서버 클러스터의 보조 서버에 영향을 미쳤습니다. 번째는 은선경▁the선▁primary경은.Synchronizing하지만 두 번째는.Recovery Pending.

cluadmin.msc클러스터에서 보조 서버가 정상이 아님을 인식했습니다. 나서 결정된 그때결됨정.Cluster ServiceWindows Update 강제 재부팅 후 두 번째 클러스터 상자에서 시작하지 못했습니다(동시에 유사한 Windows Update 후 파일 공유 감시가 재부팅되었기 때문일 수 있음).

Cluster Service를 데이터베를다에가습다니왔져시스이로 되돌렸습니다.Synchronizing상황.

"SQL Server(201x)" 서비스(Windows Services(Manager)에 나열됨)에 대한 "로그온" 계정에 충분한 권한이 있는지 확인합니다.다른 로그온으로 변경할 수 있습니다.이 경우 "이 계정"에서 "로컬 시스템 계정"으로 변경하고 "SQL Server(xxxx)" 서비스와 SQL Server Management Studio(SSMS)를 다시 시작한 후 SSMS에 다시 로그인하면 문제가 해결되었습니다.

배경(나의 경우):로컬 PC에서 세 개의 서로 다른 SQL 인스턴스(2008r2, 2012 및 2014)를 실행하고 있었고, 폴더(나중에 일부 SQL 데이터 및 로그 데이터베이스 파일이 포함되어 있음)를 다른 PC로 이동하느라 바빴습니다.중간에 SQL Services in Service(Manager)를 중지하고 파일이 문제 없이 이동하기를 희망했습니다. 이제는 더 이상 사용되지 않기 때문입니다.데이터베이스 이름과 파일 위치를 새 PC에 다시 설정하려면 SQL에서 확인해야 한다는 것을 알고 SQL 데이터와 로그 파일을 원래 위치로 다시 복사했습니다.PC를 다시 시작한 후 - 다양한 인스턴스의 데이터베이스 대부분이 SSMS에서 "복구 보류 중"으로 표시되었습니다. 2개의 데이터베이스에서 stellarinfo(@Mahesh Thorat의 답변으로 여기에 나열됨)에서 절차를 먼저 시도했지만 여전히 운이 따르지 않는 사후 SQL SERVER – ERRRORLOG는 어디에 있습니까? Pinal Dave의 SQL Authority 웹 사이트 및 게시물에서 ERRORLOG 위치를 찾는 다양한 방법:SQL Server CentralOperating System 오류 5(Access is Denied)는 SQL 오류 로그를 보고 "Operating System error 5: "5(Access is denied.)"를 찾은 후 권한과 관련이 있을 수 있다는 생각을 하게 되었습니다.다른 게시물 Msg 3201, 레벨 16 백업 장치를 열 수 없습니다. SqlBak 블로그의 운영 체제 오류 5(액세스가 거부됨)가 이를 지원하는 것으로 보입니다.

zure를 사용하고 있었습니다. mdf와 로그 파일이 다른 디스크에 있고 해당 파일을 확인할 수 없는 디스크에 연결되어 있지 않으므로 복구 보류 중입니다.

도메인 마이그레이션으로 인해 데이터베이스 파일이 있는 폴더에 대한 사용 권한이 부족할 수 있습니다.

SQL 서비스 계정의 폴더에 대한 액세스 권한만 부여하면 됩니다.

언급URL : https://stackoverflow.com/questions/52325737/how-to-fix-recovery-pending-state-in-sql-server-database

반응형