SQL Server 운영 체제 오류 5 :“5 (액세스가 거부되었습니다.”)


153

SQL을 배우기 시작했고 작업 할 데이터베이스를 제공하는 책이 있습니다. 아래의 파일은 디렉토리에 있지만 쿼리를 실행할 때이 오류가 발생한다는 문제입니다.

메시지 5120, 수준 16, 상태 101, 줄 1 실제 파일 "C : \ Murach \ SQL Server 2008 \ Databases \ AP.mdf"를 열 수 없습니다. 운영 체제 오류 5 : "5 (액세스가 거부되었습니다." ").

   CREATE DATABASE AP
      ON PRIMARY (FILENAME = 'C:\Murach\SQL Server 2008\Databases\AP.mdf')
      LOG ON (FILENAME =     'C:\Murach\SQL Server 2008\Databases\AP_log.ldf')
      FOR ATTACH
    GO

책에서 저자는 작동해야하지만 내 경우에는 작동하지 않습니다. 검색했지만 문제가 무엇인지 정확히 알지 못 하므로이 질문을 게시했습니다.


백업 파일이 이미 존재하는 경우, 반드시 그것을 않습니다 확인하시기 바랍니다 하지 확인 서비스가 쓰기 권한이 있는지 제작뿐만 아니라, "읽기 전용"속성을 가지고있다.
jumxozizi 2016 년

답변:


133

SQL Server 데이터베이스 엔진 서비스 계정에는 새 폴더를 읽고 쓸 수있는 권한이 있어야합니다.

이것을 확인하십시오

수정하려면 다음을 수행하십시오.

데이터 파일 (S :) 및 로그 파일 (T :)을 완전히 제어 할 수있는 관리자 그룹을 파일 보안 권한에 추가했습니다.

데이터베이스를 연결하면 제대로 작동합니다.

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

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


4
때때로 SQL 서버는 다음과 다른 사용자 그룹에서 실행됩니다.Administrators Group
JDandChips

57
또한 서버 서비스뿐만 아니라 SQL Server Management Studio를 관리자로 시작하는 데 도움이 될 수 있습니다.
david.barkhuizen

1
나를 위해 다음 링크에서 솔루션을했다 : stackoverflow.com/a/19061137/365188
Ozair Kafray

3
나를 위해 SQL Server 에이전트 서비스 계정을 로컬 시스템으로 변경했습니다.
singhm0077

22
SQL Server 인스턴스가 서비스 계정으로 실행되는 경우 (예 : mine is MSSQL$SQLEXPRESS) 계정을 폴더 권한 목록에 다음과 같이 추가해야하는 것은 분명하지 않을 수 있습니다.NT Service\MSSQL$SQLEXPRESS
Brian Lacy

109

오래된 게시물이지만 다음은 Windows 7에서 실행되는 SQL Server 2014에서 작동하는 단계별 단계입니다.

  • 제어판->
  • 시스템 및 보안->
  • 관리 도구->
  • 서비스->
  • SQL Server (SQLEXPRESS)를 두 번 클릭하십시오-> 마우스 오른쪽 단추를 클릭하고 속성
  • 로그온 탭을 선택하십시오.
  • "로컬 시스템 계정"을 선택하십시오 (기본값은 일부 Windows 시스템 계정을 방해합니다)
  • -> 확인
  • 마우스 오른쪽 버튼으로 클릭하고 중지
  • 마우스 오른쪽 버튼으로 클릭하고 시작

보일라!

로그온 계정을 설정하는 것이 설치에서 옵션이었을 수도 있지만, 이것이 기본값이 아니기 때문에이 문제를 아직 모르면 놓치기 쉽습니다.


5
나는 많은 옵션을 시도했지만 귀하의 대답은 잘 작동합니다. 고마워 mickeyf.
vicky

2
Win 10에서 SQL Server 2014에서도 작동합니다. 감사.
Johan Foley

7
-1 이렇게하면 처음에이 사용자를 설정한다는 아이디어에 위배됩니다. 보안 기능이며이를 수행하면이를 피할 수 있습니다.
NullUserException

2
와우 .. 사람들이이 "답변"에 뛰어 들었다고 믿는다. 이것은 큰 보안 문제를 야기 할 수있다. 그렇지 않으면, 먼저 그 사용자를 설정할 이유가 없을까? 어쨌든, 이것이 보안 문제로 생각하지 않는 사람들에게는 "솔루션"입니다.
curiousBoy

2
일부 작업을 수행하는 것보다 보안이 더 중요하다고 생각하는 사람은 SQL 서버를 끌 수 있습니다!
Ivan

44

액세스 거부 문제를 해결하기 위해 관리자로 SSMS를 시작했으며 로컬 드라이브에서 데이터베이스를 연결할 수있었습니다. 데이터베이스가 다른 SQL 및 Windows 인스턴스에서 작성되었습니다.


3
이것은 그냥 완전히 지역 설정 찾고 있어요 ... 나를 위해 그것을했다 및 Windows 10 홈에이 문제를 가지고, 이전에 나는 또 다른 이유로 자신을 MDF 및 LDF "소유자"를 만들었다 - 아마도 관련
마이크 M

3
이것은 나에게도 효과적입니다. Windows 10 및 Microsoft SQL Server 2012를 사용하고 있습니다. SQL Management Studio를 관리자로 실행 한 다음 Adventure Work Sample 데이터베이스를 연결할 수 있습니다.
arsho

1
또한 작업 도메인 환경에서 실행할 때 Windows 10 Pro의 문제를 해결했습니다.
PerPlexSystem

동일-도메인 환경, SSMS 2017.x, Win10 Pro. 다른 컴퓨터에서 분리하여 새 컴퓨터에 연결했습니다.
TravisWhidden

44

이는 SQL Server에 .bak 파일이 포함 된 폴더에 대한 적절한 권한이 없으므로이 오류가 발생하는 Windows 관련 문제입니다.

가장 쉬운 해결 방법은 .bak 파일을 필요한 모든 권한이있는 기본 SQL 백업 위치로 복사하는 것입니다. 당신은 다른 것을 피할 필요가 없습니다. 에서 SQL 서버 2012 ,이 위치는

D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup (SQL 2012)
C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup (SQL 2014)
C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\Backup (SQL 2016)

@AdamLevitt 여러 버전의 SQL이 설치되었거나 이전에 설치되어 있습니까? 올바른 위치에 놓으시겠습니까?
Hammad Khan

1
@ hmd, 감사합니다. 수정 사항은 2012 백업 디렉토리로 내보내는 것입니다.
Adam Levitt

1
이 솔루션은 SQL Server 2014에서도 작동합니다. 경로는 C : \ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ Backup입니다
Nick King

이것이 답이되어야합니다 !!
Axel

C : 나는,이 솔루션은 폴더 내의 .mdf 파일을 넣어했다 MS SQL Express를 2016와 비슷한 문제가 있었다 \ 프로그램 Files \ Microsoft SQL 서버 \ MSSQL13.SQLEXPRESS \ MSSQL \ 백업
jirikadlec2

13

나는이 문제가 있었다. 관리자 권한으로 SQL Server를 실행하십시오.


1
UAC에서와 같이 '관리자로 실행'이 저에게 효과적이었습니다. 계정 관리자로 로그인 할 필요가 없습니다 (그러나 관리자 그룹에 있습니다).
Mike Cheel

1
예, 같은 일을했고, 관리자로서 실행했고 모두 괜찮 았습니다.
Clyde

12

네, 맞습니다. 먼저 sqlserver의 서비스 계정을 찾아야합니다 .Ctrl + Alt + Delete를 동시에 누르면 작업 관리자에서 볼 수 있습니다. 그러면 "C의 읽기 / 쓰기 권한을 부여해야합니다 : \ Murach \ SQL Server 2008 \ 데이터베이스 "를 서비스 계정에 추가하십시오.


10

문제는 SQL Server가 mdf 및 ldf 파일에 액세스 할 수있는 권한이 없기 때문입니다. 이 모든 절차가 작동합니다.

  1. 파일에 대해 더 나은 권한을 가진 사용자 계정으로 MSSQLSERVER 서비스 시작 사용자 계정을 직접 변경할 수 있습니다. 그런 다음 데이터베이스를 연결하십시오.
  2. 또는 읽기 및 쓰기 권한이 선택된 상태에서 mdf & ldf 파일 속성의 보안 탭에서 파일에 사용자를 할당 할 수 있습니다.
  3. Windows 관리자 계정으로 시작하고 관리자 권한으로 실행 옵션을 사용하여 SQL Server를 열고 Windows 인증으로 로그인하여 데이터베이스를 연결하십시오.


5

나를 위해 그것은 SQL Server Management studio를 사용하여 다음과 같은 방법으로 해결되었습니다-관리자로 로그인 (Windows 인증으로 로그인)-mdf 파일을 첨부하십시오 (데이터베이스 | 첨부 | 추가를 마우스 오른쪽 단추로 클릭하십시오)-관리자로 로그 아웃- 일반 사용자


4

이 시점에서 실제 서버 권한은 중요하지 않습니다. 모두 괜찮아 보입니다. SQL Server 자체에는 폴더 권한이 필요합니다.
버전에 따라 SERVERNAME $ MSSQLSERVER 권한을 추가하여 폴더를 터치 할 수 있습니다. 또한 기본 BACKUP 디렉토리에 있어야합니다 (설치 한 위치 또는 기본값 : c : \ programfiles (x) \ MSSQL \ BACKUP).


2

다음 단계를 수행하더라도 동일한 오류 메시지가 표시 될 수 있습니다.

1. login as SA user (SSMS)
2. Edit the file permissions to say "everyone" full access (windows folder)
3. Delete the Log file (Windows Exploring  (this was what I had done per advise from some msdn forum) 

여전히 권한 오류가 발생했지만 첨부 화면에서 맨 아래 섹션에 여전히 LOG 파일이 표시되고 오류 메시지는 동일하게 유지됩니다.

이것이 같은 일을하는 사람에게 도움이되기를 바랍니다.


0

매우 간단한 솔루션.

  1. 시스템 관리자로 로그인
  2. 다른 모든 데이터 파일이있는 "C : \ Program Files (x86) \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA"에 mdf 및 ldf 파일을 복사하십시오.
  3. 이제 거기에서 첨부하면 작동합니다.

1
프로그램 파일 디렉토리에 데이터를 저장해서는 안됩니다. 기본 위치는 SQL 서버 설치시 변경해야합니다
OrangeKing89

0

내 응용 프로그램에서 엔티티 프레임 워크를 사용 하고이 문제가 발생하여 폴더 및 Windows 서비스에 대한 권한을 설정하고 작동하지 않습니다. 응용 프로그램을 관리자로 시작한 다음 (exe 파일을 마우스 오른쪽 버튼으로 클릭하고 "관리자로 실행"을 선택하십시오) 작동합니다 좋아.


0

Visual Studio 프로젝트 .MDFAPP_DATA폴더 (또는 파일 을 넣은 곳) 의 파일 에서이 오류가 발생 하면 DATA여기 에서 기존 폴더의 권한을 단순히 복사하는 것입니다 (SQL Express 2014를 사용하여 지원합니다) 오래된 앱) :

C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS2014\MSSQL\DATA

(참고 : 실제 설치 경로는 다릅니다. 특히 인스턴스 이름이 다른 경우)

DATA먼저 관리자 권한으로 폴더를 두 번 클릭하여 액세스 권한이 있는지 확인한 다음 폴더의 속성을 열고 폴더와 동일한 기능을 APP_DATA합니다. 제 경우에는 누락 된 사용자였습니다 MSSQL$SQLEXPRESS2014(인스턴스의 이름을 지정했기 때문에 SQLEXPRESS2014귀하가 다를 수 있음). SQL Server 서비스 사용자 이름이기도합니다.


0

어떤 이유로 든 올바른 권한을 모두 설정해도 도움이되지 않았습니다. 오류 db.bak로 인해 복원 할 수없는 파일 이 5(Access is denied.)있습니다. 파일은 다른 여러 백업 파일과 동일한 폴더에 있으며 모든 권한은 다른 파일 과 동일 합니다. 이 db.bak파일을 제외한 다른 모든 파일을 복원 할 수있었습니다 . 심지어 SQL Server 서비스 로그온 사용자를 변경하려고 시도했지만 여전히 동일한 결과입니다. 효과없이 파일을 복사하려고했습니다.

그런 다음 실행하여 동일한 파일을 만들려고했습니다.

type db.bak > db2.bak

파일을 복사하는 대신. 그리고 그것이 효과가있었습니다! db2.bak성공적으로 복원되었습니다.

백업 파일 읽기와 관련된 다른 문제 5(Access is denied.)가 MS SQL에서 잘못보고되었을 수 있습니다 .


0

리눅스에서 /var/opt/mssql/data/폴더로 이동하여 터미널을 연 sudo다음 아래의 * .mdf 및 * .ldf 파일 권한을 변경 yourDB하여 데이터베이스 파일 이름과 myUser현재 기록 된 사용자 이름으로 변경했습니다.

chmod 755 yourDB.mdf
chown myUser yourDB.mdf

chmod 755 yourDB.ldf
chown myUser yourDB.ldf

그 후 문제없이 다시 연결되었습니다.


0

이는 SSMS 로그인 사용자에게 .mdf 파일에 대한 권한이 없음을 의미합니다. 이것이 나를 위해 일한 방법입니다.

SSMS (관리자 권한으로 실행)를 열고 관리자로 로그인 한 후 데이터베이스를 마우스 오른쪽 단추로 클릭하고 첨부를 클릭하고 추가를 클릭 한 후 .mdf 파일을 선택하고 확인을 클릭하십시오. 끝난.

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