SQL Server 복원 오류-액세스가 거부되었습니다


167

로컬 컴퓨터에 데이터베이스를 만든 다음 tables.baktable 이라는 백업을 수행했습니다 DataLabTables.

해당 백업을 해당 테이블이없는 원격 시스템으로 이동하고 복원을 시도했지만 다음 오류가 발생했습니다.

System.Data.SqlClient.SqlError : 'c : \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTables에서'RestoreContainer :: ValidateTargetForCreation '을 시도하는 동안 운영 체제에서'5 (액세스가 거부되었습니다.) '오류를 반환했습니다. .mdf '.

문제가있는 경우 어떻게 내 권리를 수정합니까?

답변:


539

SQL Server 2012 에서이 문제가 발생했습니다.

'파일'섹션에서 '모든 파일을 폴더로 재배치'라고 표시된 상자를 선택하면됩니다.

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

(이미지를 전체 크기로 보려면 클릭하십시오)

물론 이것은 올바른 버전의 SQL Server가 설치되어 있다고 가정합니다.


13
나를 위해 일했습니다. 아무도 이유를 설명 할 수 있습니까 ?
magnattic

3
UI 대신 스크립트를 통해이 작업을 수행하는 방법도 알려주시겠습니까?
FMFF

9
2014와 동일한 문제 로이 문제가 발생했습니다.
DaneEdw

3
SQL Express에서 백업 및 전체 SQL 서버에 복원 할 때이 나를 위해 또한 솔루션이었습니다
tarrball

10
나는 당신에게 포옹을 주어야합니다. 이제 진지하게, 나는 고객에게 거절하고 싶다. 당신의 대답은 내 프로젝트를 저장했습니다.
Marco Scabbiolo

30

오류 메시지에서 복원 작업 의 대상 ( c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf)을 확인할 때 오류가 발생했음을 나타 냅니다 .

다음과 같이 들립니다.

a) 해당 파일이 이미 존재하며 (이미 이전에 복원했기 때문에) SQL Server에서 사용 중입니다.

또는

b) 해당 디렉토리가 전혀 존재하지 않습니다

귀하의 질문에, 귀하는 해당 테이블에 대한 백업을 생성했다고 언급했지만 SQL Server 백업은 작동하지 않습니다. 이러한 백업은 항상 전체 데이터베이스 (또는 해당 데이터베이스의 하나 이상의 파일 그룹)입니다.

내 직감은 : 당신은 이미 그 데이터베이스를 이전에 이미 복원했으며 지금은 두 번째 복원시, 복원 마법사에서 "기존 데이터베이스 덮어 쓰기"체크 상자를 체크하지 않았으므로 기존 파일을 덮어 쓸 수없고 복원이 실패합니다.

원격 서버에서 복원을 실행중인 사용자는 원격 서버의 해당 디렉토리에 액세스 할 수 없습니다.

C:\program files\.... 보호 된 디렉토리-일반 (관리자가 아닌) 사용자는이 디렉토리 (및 해당 서브 디렉토리)에 액세스 할 수 없습니다.

가장 쉬운 해결책 : BAK 파일을 다른 곳에 (예 :) 넣어서 C:\temp거기에서 복원하십시오


\ TEMP하지만 오류가 여전히 내가 먼저 이상이다 언급 한 바와 같이 동일한 경로와, 상기와 동일 : 나는 C에서 시도
cdub

SQL Management Studio에서 데이터베이스를 마우스 오른쪽 버튼으로 클릭 한 다음 작업-> 복원
cdub

1
@marc_s thx, 나는 그 파일에 대한 디렉토리가 없기 때문에 옵션을 편집하는 것을 잊었다. ... MSSQL \ DataLabTables.mdf가 아니라 ... MSSQL \ Data \ DataLabTables.mdf
cdub

2
@marc_s : 위에 나열된 옵션 A의 "및 SQL 서버에서 사용하고 있습니다"부분에 마이너 코멘트 : 표준 밝혀 RESTORE파일이 존재하는 경우 명령이 실패,이 경우에도 아니다 (SQL Server에서 사용 예 MDF / LDF 파일은 이전 분리 후에도 그대로 유지됩니다. 지난 몇 주 동안 수백 개의 DB를 대규모로 마이그레이션하기 위해 맞춤형 T-SQL 기반 로그 전달 구현 에서이 문제를 발견했습니다. 오류 메시지가 "액세스 거부"인지 잘 모르겠습니다. 덜 구체적 일 수 있습니다.
Tao

2
백업을 통해 복원하기 전에 기존 MDF / LDF 파일의 이름을 수동으로 바꿔야했습니다. '덮어 쓰기'로는 충분하지 않습니다.
Jamie Keeling

26

나는 같은 문제를 겪고 있었다. 내 SQL ServerSQL Server Agent서비스 logon asNetwork Services백업 복원을 수행하기 위해 쓰기 권한이없는 계정 으로 실행되고있는 것으로 나타났습니다.

로그온 할 수 있도록이 두 서비스를 모두 변경 Local System Account했으며 문제가 해결되었습니다.


이것은 좋은 생각이 아닙니다. 복원하려는 파일 위치가 실제 문제가 아닌 실제 문제를 숨 깁니다.
declouet

2
내 SQL Server 서비스가 "NT Service \ MSSQLSERVER"에서 실행되어이 사용자에 대한 권한을 데이터 및 로그 폴더에 추가했습니다.
Tim Newton

좋아, 이것은 나에게 도움이되었다
Aliaksei Zhukau

9

최근에 나는 SQL 2008 R2 에서이 문제에 직면했으며 아래 솔루션이 나를 위해 일했습니다.

1) 복원하려는 것과 동일한 이름으로 새 데이터베이스를 작성하십시오. 2) 복원하는 동안 위에서 사용한 것과 동일한 이름을 사용하고 옵션에서 겹쳐 쓰기 옵션을 클릭하십시오.

다른 솔루션이 작동하지 않으면 위의 내용을 알 수 있습니다.


6

백업 작성자는 MSSql 버전 10을 설치 했으므로 백업을 수행 할 때 원래 파일 경로 (같은 위치에 복원 할 수 있도록)도 저장하지만 버전 11이 있으므로 대상 디렉토리를 찾을 수 없었습니다.

따라서 출력 파일 디렉토리를 C : \ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \로 변경하여 데이터베이스를 성공적으로 복원 할 수있었습니다.

출처


6

나는 비슷한 문제가 있었다. 2005 .bak 파일을 복원하려고했는데 정확히 같은 오류가 발생했습니다. 덮어 쓰기 옵션을 선택했지만 아무 소용이 없습니다.

내 솔루션은 폴더로 이동하고 속성 화면을 통해 액세스 권한을 편집하여 SQL 사용자에게 해당 디렉토리에 대한 액세스 권한을 부여하는 것이 었습니다.


2

이 문제로 몇 시간을 잃었습니다. 그래도 갈거야 :

필자의 경우 "액세스 거부"는 실제로 "액세스 거부"를 의미했습니다. 내 Windows 장치에서 mssqlstudio의 사용자 계정이 오류 메시지에 지정된 폴더를 완전히 제어하지 못했습니다. 나는 그것을 완전히 통제했다. 액세스가 더 이상 거부되지 않고 복원에 성공했습니다.

왜 폴더가 스튜디오에 잠겨 있습니까? 누가 알아 ? 더 답변하지 않고 처리해야 할 충분한 질문이 있습니다.



0

다른 시나리오는 여러 데이터베이스 경로가있을 수 있습니다. 먼저, 새 데이터베이스가 현재 저장되는 경로를 기록하십시오. 따라서 비어있는 새 데이터베이스를 작성한 다음 수행 Tasks/Restore하는 경우 복원하려는 경로가 비어있는 데이터베이스와 동일한 디렉토리인지 확인하십시오. 복원 경로가 올바른 경우에도 여전히 액세스가 거부됩니다. 현재 작업 경로가 아닌 경우 오류가 발생합니다. 경로가 합법적이지 않은 경우 쉽게 발견 할 수 있고 경로가 합법적 일 때 발견하기가 훨씬 어렵지만 현재 경로는 찾을 수 없습니다.


0

댓글을 달 수 없어서 죄송합니다 ...

나는 같은 문제가 있었다. 필자의 경우 문제는 서버에 존재하는 이전 SQL Server 폴더에서 복원하려고하는 것과 관련이 있습니다. 새 SQL 서버 (SQL Server 2014)에 복원 된 이전 SQL Server 백업 (예 : SQL Server 2012 백업) 때문입니다. 실제 문제는 @marc_s 답변과 크게 다르지 않습니다. 어쨌든 대상 폴더 만 새 SQL Server DATA 폴더로 변경했습니다.


0

이것이 최선의 해결책은 아니지만 SQL Server 2005에서 복원을 시도했지만 SQL Server 2008로 변경하여 작동했습니다.


0

이와 같은 문제가 있습니다. SQL Server 폴더에서 압축이 활성화되어 오류가 발생했습니다.


0

Frnds ... 데이터베이스를 다시 설정하는 동안 동일한 문제가 발생하여 모든 솔루션을 시도했지만 해결되지 못했습니다. 그런 다음 SQL 2005를 다시 설치하려고 시도했지만 문제가 해결되었습니다. 실제로 마지막으로 SQL을 설치하는 동안 사용자 정의 옵션을 확인하는 것을 잊어 버렸습니다.


0

필자의 경우-복원하려는 데이터베이스의 백업 경로를 다시 확인해야했습니다. 처음 할 때 다른 경로에서 이전에 복원했습니다. 처음 사용했던 백업 경로를 사용하도록 백업 경로를 수정했습니다.


0

데이터 및 로그에 대한 새 폴더를 만들었고 제대로 작동했습니다. 폴더 / 파일 권한 문제 였을 것입니다.


0

경로가 정확하지만 서비스 계정이 데이터 파일의 소유자가 아닌 경우에도 마찬가지입니다 (그러나 여전히 읽기 / 쓰기 액세스 권한이 충분 함). 파일에 대한 권한이 폴더의 권한과 일치하도록 (물론 서비스가 중지 된 동안) 재설정 된 경우 발생할 수 있습니다.

이 경우 가장 쉬운 해결책은 각 데이터베이스를 분리하고 다시 연결하는 것입니다 (소유자 연결시 서비스 계정으로 변경 될 때).


-1

이 시도:

DB 복원 마법사 창에서 파일 탭으로 이동하여 "모든 파일을 폴더로 재배치"확인란의 선택을 취소 한 다음 복원 대상을 C :에서 다른 드라이브로 변경하십시오. 그런 다음 정기 복원 프로세스를 진행하십시오. 성공적으로 복원됩니다.


-1

같은 문제가 있었지만 SQL Server 2008 r2를 사용했습니다. 옵션을 확인하고 sql 파일 .mdf 및 .ldf를 저장할 경로를 확인해야합니다 .SQL 서버 설치 경로를 선택해야합니다. 나는 이것으로 내 문제를 해결했다.


-2

그런 다음 C : 아래의 하위 폴더로 이동해보십시오. 그러나 사용자에게 사용중인 폴더에 대한 모든 권한이 있는지 확인하십시오.

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