programing

데이터베이스 복원 중 mssql '5(액세스가 거부됨)' 오류가 발생했습니다.

elseif 2023. 4. 24. 22:33

데이터베이스 복원 중 mssql '5(액세스가 거부됨)' 오류가 발생했습니다.

SQL Server Management Studio를 통해 파일(작업 → 복원 → 데이터베이스, 장치에서 선택하고 파일을 선택한 후)에서 데이터베이스를 복원하려고 합니다.

그 후, 다음의 에러가 표시됩니다.

'Restore Container: '를 시도하는 동안 운영 체제에서 '5(Access is denied)' 오류를 반환했습니다.: 'E:\Program Files\Microsoft SQL Server\'의 ValidateTargetForCreation'MSQL10.MSQLSERVER\MSSQL\DATA\XXXXXX.mdf'를 선택합니다.Msg 3156, 레벨 16, 스테이트 8, 서버 XXX, 라인 2

이 문제를 해결하려면 어떻게 해야 하나요?보안 오류인가요?

최근에 이런 문제가 있었어요.데이터베이스 복원 대화상자의 파일 페이지로 이동하여 "모든 파일을 폴더로 재배치"를 선택합니다.

데이터베이스 복원 대화 상자

SQL 서버가 실행 중인 계정은 백업 파일이 있거나 데이터베이스를 복원하려는 위치에 액세스할 수 없습니다.SQL Server Configuration Manager를 사용하여 SQL Server 인스턴스를 실행하는 데 사용되는 계정을 찾은 후 해당 계정이 에 대한 완전한 제어 권한을 가지고 있는지 확인할 수 있습니다.MDF가 복원되는 BAK 파일 및 폴더.

여기에 이미지 설명 입력

글쎄요, 제 경우 해결책은 꽤 간단하고 직설적이었습니다.

가치관을 바꿔야 했어요.

해결 절차 -

  1. 오픈
  2. 오른쪽)
  3. 로 이동하다

여기에 이미지 설명 입력

  1. 값을 로 바꾸다

여기에 이미지 설명 입력

이것이 당신에게도 도움이 되기를 바랍니다:)

방금 같은 문제에 부딪혔는데 다른 해결책이 있었어요.기본적으로 SQL Server와 SQL Server Express를 컴퓨터에 모두 설치했습니다.SQL Express로 복원하려고 하면 작동하지 않지만 SQL Server로 복원할 때는 올바르게 작동합니다.

기능할 수 있는 좋은 솔루션은 files >로 이동하여 모든 파일의 재할당을 체크하는 것입니다.

파일 재배치

위의 시나리오를 시험해 본 결과, 같은 에러 5(액세스 거부)가 발생했습니다.자세히 살펴보니 .bak 파일이 SQL 서비스 계정에 액세스할 수 있어야 합니다.확실하지 않은 경우 [시작]-> [파일명을 지정하여 실행]에 services.msc 라고 입력하고 SQL Service 로그온 계정을 확인합니다.

그런 다음 파일로 이동하고 오른쪽 버튼을 클릭하여 속성에서 보안 탭을 선택한 다음 편집하여 새 사용자를 추가합니다.

마지막으로 완전한 접근권을 부여하기 위해 모든 권한을 부여합니다.

다음으로 SSMS에서 백업을 복원합니다.

SQL 2008 R2 백업 DB를 SQL 2012 DB에 복원하려고 할 때 동일한 오류가 발생했습니다.이 오류는 C 드라이브에 .mdf 및 .ldf 파일을 저장할 수 있는 권한이 부족하기 때문일 수 있습니다.한 가지 간단한 방법을 시도했다가 성공적으로 복구했습니다.

이것을 시험해 보세요.

DB 복원 마법사 창에서 파일 탭으로 이동하여 복원 대상을 C:에서 다른 드라이브로 변경합니다.그런 다음 일반 복원 프로세스를 진행합니다.확실히 restore에 성공합니다!

이게 당신에게도 도움이 되길 바랍니다.건배 :)

이 오류에는 몇 가지 원인이 있습니다.데이터베이스 복원 창의 [파일]탭에서 [모든 파일을 폴더에 재할당]을 선택했지만 기본 경로가 로컬 컴퓨터에 존재하지 않았기 때문에 이 오류가 발생했습니다.ldf/mdf 파일을 다른 폴더에 저장했다가 변경 후 복원할 수 있게 되었습니다.

SQL 서버에서 데이터베이스를 복원할 때 운영 체제에서 오류 '5(액세스 거부됨)'를 반환했습니다. 이 문제를 해결하려면 다음과 같이 [파일]옵션에서 [모든 파일을 폴더로 재배치]여기에 이미지 설명 입력를 활성화해야 합니다.

이걸 찾았는데 효과가 있었어요

CREATE LOGIN BackupRestoreAdmin WITH PASSWORD='$tr0ngP@$$w0rd'
GO
CREATE USER BackupRestoreAdmin FOR LOGIN BackupRestoreAdmin
GO
EXEC sp_addsrvrolemember 'BackupRestoreAdmin', 'dbcreator'
GO
EXEC sp_addrolemember 'db_owner','BackupRestoreAdmin'
GO

에는 '우리'의 .Overwrite the existing database (WITH REPLACE)아래OptionsRestore Database

이 에러가 발생한 이유:데이터베이스용 MDF 파일이 이미 존재하여 덮어쓰기가 되지 않았기 때문입니다.

이게 누군가에게 도움이 되길 바랍니다.

데이터베이스를 첨부할 경우 "첨부할 데이터베이스" 그리드를 살펴보고 특히 .mdf 파일을 지정한 후 소유자 열을 확인하십시오.계정을 기록하고 mdf 파일과 ldf 파일 모두에 대해 전체 권한을 부여합니다.

똑같은 문제가 있었지만 수정 방법이 달랐습니다.회사에서는 기계상의 모든 파일을 암호화하고 있습니다.파일을 복호화한 후 MSQL은 접근에 문제가 없었고 DB를 생성했습니다..bak file -> Properties -> Advanced...를 오른쪽 클릭합니다.-> 콘텐츠를 암호화하여 데이터를 보호합니다.복호화

오늘 아침, 저는 로컬 서버의 관리자 그룹의 멤버로, 방해받지 않고 액세스 할 수 있었습니다.인스턴스에 이러한 DB가 없는 경우에도 "바꾸기" 옵션을 선택했습니다.

이전에는 같은 이름의 DB가 존재했으며 MDF 및 LDF 파일은 서버의 데이터 및 로그 폴더에 아직 물리적으로 존재하지만 실제 메타데이터는 sys.databases에 없습니다.SQL Server의 서비스 계정도 기존 파일을 덮어쓸 수 없습니다.또, 파일의 소유자가 「알 수 없다」라고 하는 것을 알게 되어, 상기의 2개의 파일로 소유권을 변경해, 로컬 서버의 관리자 그룹이 소유하게 된 후, 파일명을 변경했습니다.

그리고 마침내 효과가 있었다.

계정이 백업 파일 위치에 액세스할 수 없습니다.Computer Manager를 사용하여 SQL Server Configuration Manager에 쉽게 액세스하려면 다음 절차를 수행합니다.

  1. Windows 키 + R을 클릭하여 [파일명을 지정하여 실행]창을 엽니다
  2. [이름] 상자에 compmgmt.msc 라고 입력합니다.
  3. [확인] 을 클릭합니다.
  4. [ Services and Applications ]을 전개합니다.
  5. SQL Server Configuration Manager를 확장합니다.
  6. [ Log On As ]탭에서 사용자 계정을 변경합니다.

이제 데이터베이스를 쉽게 복원할 수 있습니다.

수정은 데이터베이스를 복원할 때 Options(옵션)으로 이동하여 새 경로로 경로를 변경하는 것이었습니다.여기 스크린샷이 있습니다.

같은 문제가 발생했습니다만, 설정이 조금 다릅니다.

  • Linux 도커 컨테이너에서 데이터베이스를 실행하고 있다
  • sqlserver 관리 도구입니다.

내가 한 일은:

sudo docker exec -u root -it sqlserver /bin/bash

그러면 도커 컨테이너가 루트 사용자로 들어갑니다.

그 후, 다음과 같이 입력합니다.

chmod 777 /path/to/file.bak

777은 모든 그룹, 사용자에 대해 파일에 읽기, 쓰기 및 실행 권한을 부여합니다.

언급URL : https://stackoverflow.com/questions/3494407/mssql-5-access-is-denied-error-during-restoring-database