programing

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

javajsp 2023. 5. 24. 21:43

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

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

Msg 5120, Level 16, State 101, Line 1 물리적 파일 "C:\무라흐\SQL Server 2008\데이터베이스\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

책에서 저자는 그것이 효과가 있어야 한다고 말하지만, 나의 경우에는 효과가 없습니다.제가 검색해봤는데 정확히 어떤 문제가 있는지 몰라서 이 질문을 올렸습니다.

SQL Server 데이터베이스 엔진 서비스 계정에 새 폴더에서 읽기/쓰기 권한이 있어야 합니다.

이것 좀 보세요.

수정하기 위해 다음을 수행했습니다.

데이터 파일(S:) 및 로그 파일(T:)에 대한 전체 제어를 통해 파일 보안 권한에 관리자 그룹을 추가했습니다.

데이터베이스를 첨부하니 정상적으로 작동합니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

이전 게시물이지만 다음은 Windows 7에서 실행되는 SQL Server 2014에 적용된 단계별 게시물입니다.

  • 제어판 ->
  • 시스템 및 보안 ->
  • 관리 도구 ->
  • 서비스 ->
  • SQL Server(SQLEXPRESS) 더블클릭 -> 우클릭, Properties
  • 로그온 탭 선택
  • "로컬 시스템 계정"을 선택합니다(기본값은 일부 둔감한 Windows 시스템 계정).
  • -> OK
  • 마우스 오른쪽 단추 클릭, 중지
  • 오른쪽 클릭, 시작

Voila!

로그온 계정을 설정하는 것이 설치 시 옵션이었을 수도 있지만, 설정한 경우 기본값이 아니었으며 이 문제를 아직 인식하지 못한 경우에는 놓치기 쉬웠습니다.

액세스 거부 문제를 해결하기 위해 SSMS를 관리자로 시작하여 로컬 드라이브에서 데이터베이스를 첨부할 수 있게 되었습니다.데이터베이스가 다른 SQL 및 윈도우즈 인스턴스에 생성되었습니다.

이는 SQL Server가 .bak 파일이 포함된 폴더에 대한 적절한 사용 권한을 가지고 있지 않아 이 오류가 발생하는 윈도우즈 관련 문제입니다.

가장 쉬운 해결 방법은 .bak 파일을 필요한 모든 권한이 있는 기본 SQL 백업 위치에 복사하는 것입니다.당신은 다른 것을 만지작거릴 필요가 없습니다.SQL SERVER 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)

저는 이런 문제가 있었습니다.SQL Server를 관리자 권한으로 실행

네, 맞습니다.먼저 sqlserver의 서비스 계정을 찾아야 하고, ctrl+alt+delete를 동시에 누르면 작업 관리자에서 계정을 볼 수 있습니다.그런 다음 "C:"의 읽기/쓰기 권한을 부여해야 합니다.\무라흐\SQL Server 2008\Databases"를 서비스 계정에 저장합니다.

나는 이 문제를 추가함으로써 해결합니다.Full control두 가지 모두에 .mdf그리고..ldf에 대한 :Users 단체. 단체.

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

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

저의 경우 SQL Server Management studio에서 다음과 같은 방법으로 해결되었습니다 - admin으로 로그인 (Windows 인증으로 로그인) - mdf 파일 첨부 (우클릭 Database | attach | Add ) - admin으로 로그아웃 - 일반 사용자로 로그인

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

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

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) 

여전히 권한 오류가 발생했지만 첨부 화면에서 하단에 로그 파일이 여전히 표시되고 오류 메시지는 그대로 유지된다는 것을 확인했습니다.

이것이 같은 일을 한 누군가에게 도움이 되기를 바랍니다.

SSMS 로그인 사용자에게 .mdf 파일에 대한 권한이 없음을 의미합니다.이것이 저에게 효과가 있었던 방법입니다.

SSMS(Run as administrator)를 열고 관리자로 로그인한 후 데이터베이스 마우스 오른쪽 단추로 attach를 클릭하고 add를 클릭한 다음 .mdf 파일을 선택하고 OK를 클릭합니다.다 했어요.

데이터베이스를 백업할 때 이 문제가 발생했습니다.

System.Data.SqlClient.SqlError: 
Cannot open backup device 'C:\x\x\xxx.bak'. 
Operating system error 5 (Access is denied.). (Microsoft.SqlServer.Smo)

이 문제가 발생했을 때 데이터베이스에 연결하는 사용자에게 백업 위치에 대한 액세스 권한이 없다고 생각했습니다.나는 그 사용자에게 모든 권한을 주었지만 변경된 것은 없습니다.이는 SQL Server에 대한 서비스가 다른 사용자와 함께 실행되고 있기 때문입니다.

여기에 이미지 설명 입력

이때 서비스 사용자를 로컬 시스템 계정으로 변경하거나 서비스의 현재 사용자에 대한 액세스 권한을 추가할 수 있습니다.

저는 두 번째를 선택합니다.

여기에 이미지 설명 입력

그 후 백업 변경에 성공했습니다.

매우 간단한 솔루션입니다.

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

응용프로그램에서 Entity 프레임워크를 사용했는데 이 문제가 발생했습니다. 폴더 및 Windows 서비스에서 사용 권한을 설정하고 작업하지 않았습니다. 그런 다음 응용프로그램을 관리자로 시작합니다(exe 파일에서 마우스 오른쪽 단추를 클릭하고 "관리자로 실행"을 선택). 그러면 정상적으로 작동합니다.

에서 이 하면,.MDF에 파일을 합니다.APP_DATA는 Visual Studio에서 이었습니다.DATA여기에 있는 폴더(SQL Express 2014를 사용하여 이전 앱을 지원하고 있습니다):

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

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

▁the를 더블 합니다.DATA를 먼저 로 지정하여 확인한 한 속성을 합니다.APP_DATA폴더를 누릅니다., 된 사용자는 경에실사용가자된종제는입니다.MSSQL$SQLEXPRESS2014을 지었기 에)SQLEXPRESS2014당신의 것은 다를 수 있습니다).SQL Server 서비스 사용자 이름이기도 합니다.

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

그런 다음 동일한 파일을 생성하려고 시도했습니다.

type db.bak > db2.bak

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

백업 파일 읽기와 관련된 다른 문제는 다음과 같이 잘못 보고될 수 있습니다.5(Access is denied.)MS SQL에 의해.

리눅스에서, 나는./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

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

첨부하려는 데이터베이스가 압축된 경우 오류 메시지가 표시될 수 있습니다.

먼저 파일의 압축을 풀어야 합니다.이 경우 mdf/ldf 파일의 속성 >> 그 다음 "고급" >> "디스크 공간을 절약하기 위해 콘텐츠 압축" >> "적용"을 누릅니다.

그 후에 한 번 해보세요.

  1. SQL Server 관리 스튜디오를 관리자로 실행
  2. Windows 사용자로 로그인
  3. MDF 파일만 있는 경우 로그 파일 제거(로그 파일 없음)

여기에 이미지 설명 입력

위 체크리스트의 3개 항목을 사용하면 데이터베이스 첨부 작업과 관련된 문제를 거의 제거할 수 있습니다.

스토리지 게이트웨이를 사용하는 경우 - SMB(S3) 관리 스튜디오에서 이 작업을 수행합니다.

  1. EXEC xp_cmdshell 'net use X: \100.155.16.6\http스토리지 게이트웨이 폴더 xxmy superpassxx /user:sgw-445577\httpguest/영구:yes/y'

  2. EXEC XP_CMDSHELL 'Dir X:'(디렉토리 정보, 일련 번호 등이 표시됩니다)

  3. 드라이브 탑재(이 PC - > 네트워크 드라이브 탑재, 위의 동일한 정보 사용)예약된 백업을 사용하여 백업 작업을 테스트합니다. 그러면 sql server 에이전트가 강제로 사용되며, 이 에이전트가 기록되는 위치와 문제가 있는 경우 해당 문제를 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/18286765/sql-server-operating-system-error-5-5access-is-denied