it-swarm-ko.com

XYZ가 이미 열려 있고 한 번에 한 명의 사용자 만 가질 수 있음을 나타내는 dbcc checkdb ( 'XYZ', REPAIR_ALLOW_DATA_LOSS)

로그 파일이 손상된 DB, XYZ가 있는데 이제 로그 파일을 완전히 사용할 수 없으므로이 특정 DB를 사용할 수 없게되므로 다시 빌드해야합니다.

나는 이미이 과정에 대해 많은 연구를했지만 dbcc checkdb에 붙어 있습니다.

나는 명령을 실행

alter database xyz SET single_user with immediate rollback

그 후

use master
dbcc checkdb('xyz',REPAIR_ALLOW_DATA_LOSS)

그러나이 오류가 계속 발생합니다.

Msg 924, Level 14, State 1, Line 2
Database 'XYZ' is already open and can only have one user at a time.

내가 연구 한 모든 것은 DB가 비상 모드에 있고 DB가 단일 사용자 모드에 있어야한다는 것을 나타냅니다. DB를 다중 사용자 모드로 되 돌리면 DB가 단일 사용자 모드에 있어야 함을 나타냅니다. 좋아, 내가 그렇게 한 다음이 문제가 발생합니다.

나는 뛰었다

select spid from master..sysprocesses where dbid = DB_ID('XYZ') and spid <> @@spid

dB를 사용하는 프로세스를 확인하지만 행이 리턴되지 않으며 로그에 복구중인 데이터베이스 또는 해당 특성에 대한 정보가 표시되지 않습니다. DB는 "비상"으로 표시됩니다.

어떤 아이디어?

7
Christopher Bruce

데이터베이스를 다시 다중 사용자 모드로 되돌리고 다음과 같이 해보십시오.

alter database xyz SET single_user with rollback immediate 

dbcc checkdb('xyz',REPAIR_ALLOW_DATA_LOSS)

다른 프로세스가 데이터베이스 연결을 시작하기 전에 데이터베이스 연결을 잡고있을 수 있습니다. 두 명령문을 결합하면 해당 연결을 확보해야합니다.

9
Ian Chamberland