[sql-server] 데이터베이스를 연결할 때 액세스가 거부되었습니다.

SQL Server 2008 개발자 버전을 사용하고 있습니다. AdventureWorks2008 데이터베이스를 연결하려고했습니다.

연결을 시도 할 때 “액세스가 거부되었습니다”오류가 발생했습니다. 이벤트 로그에 따르면 O / S에서 온 것입니다.

열기 실패 : 파일 번호 0에 대해 D : \ ProjectData \ AdventureWorks \ AdventureWorksLT2008_Data.mdf 파일을 열 수 없습니다. OS 오류 : 5 (액세스가 거부되었습니다.)

“NTFS 문제”라고 생각했지만 시스템 (및 I)은 두 파일 모두에 대한 수정 액세스 권한이 있습니다.

sa로 로그인하면 데이터베이스를 성공적으로 연결할 수 있지만 사용자 계정이 작동하지 않습니다.

내 컴퓨터에서 로컬 관리자 그룹의 구성원이며 SQL Server 인스턴스에서 sysadmins 역할을 수행하고 있습니다.

sa로 로그인해야하는 이유가 있습니까?



답변

SQL Server Management Studio를 관리자 권한으로 실행하십시오. (내 마우스 오른쪽 클릭-> 관리자 권한으로 실행) 내 모든 이상한 점을 처리했습니다.

SQL SRV EXPRESS 2008 R2. 윈도우 7


답변

모든 의견에 감사드립니다. 당신 중 일부는 나를 대답으로 이끌도록 도와주었습니다. 내가 찾은 것은 다음과 같습니다.

NTFS 권한 문제이며 SQL 문제가 아닙니다. 또한 버그와 비슷해 보입니다 (반복 가능합니다).

문제 : 사용중인 계정에 mdf 및 ldf 파일에 대한 모든 권한을 가진 NTFS 권한이 있습니다. 그러나 그룹 멤버쉽을 통해 해당 권한을 가졌습니다 (로컬 관리자 그룹에 권한이 있고 내 계정이 로컬 관리자의 구성원 임). (권한을 확인했습니다)

연결을 시도하면 (admins 그룹에있는) 나와 같이 SQL Server에 연결하면 NTFS 문제로 실패합니다.

그러나 로컬 관리자 그룹과 동일한 파일 권한을 내 도메인 계정에 직접 부여하면 아무런 문제없이 연결할 수 있습니다.

(오, 예,이 컴퓨터의 로컬 그룹을 확인하고 내 도메인 계정이 실제로 로컬 관리자 그룹의 구성원인지 확인했습니다).

따라서 SQL Server 또는 Management Studio의 일부 코드에서 사용자 계정이 보유한 권한을 확인하기 때문에 오류가 발생하는 것처럼 보이지만 사용자 계정이 상속하는 그룹 권한을 확인하는 것은 아닙니다.

나에게는 이상하게 들리지만 반복해서 그것을 재현 할 수 있으므로 그것이 답이라고 결론지었습니다.

업데이트 : 나는 이것을 버그로보고했다 : https://connect.microsoft.com/SQLServer/feedback/details/539703/access-denied-attaching-a-database-when-permissions-are-herited


답변

게시 된 답변에 추가 정보를 추가하고 싶습니다.

로그인 한 Windows 사용자 가 .mdf 파일에 대한 권한이있는 유일한 사용자가 되므로 데이터베이스를 분리 할 때주의 하십시오! .mdf 파일에 사용자가 포함 된 원래 권한SQLServerMSSQLUser$<computer_name>$<instance_name> 및 관리자 계정 은 로그인 한 Windows 사용자 (SQL 서버 사용자 아님)가 덮어 씁니다. 붐, 모든 권한이 그대로 유지되었습니다. 다른 사람들이 말한 것처럼 .mdf 파일을 마우스 오른쪽 버튼으로 클릭하고 권한을 다시 확인하십시오.

SSMS를 사용하여 데이터베이스에 연결하고 (SQL 서버 계정에 관계없이) 데이터베이스를 분리했기 때문에이 문제가 발생했습니다. 그 후에 내 Windows 사용자는 .mdf 파일에 대한 권한이있는 유일한 사람이었습니다. 그래서 나중에 sa 계정을 사용하여 db를 연결하려고 할 때 “access denied”오류가 발생했습니다.

원래 권한을 그대로 유지하려면 데이터베이스를 오프라인 상태로 만든 다음 분리하고 순서대로 연결해야합니다.

USE [master]
GO
-- kick all users out of the db
ALTER DATABASE mydb
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

-- Take the Database Offline
ALTER DATABASE mydb SET OFFLINE WITH
ROLLBACK IMMEDIATE
GO

-- detach the db
EXEC master.dbo.sp_detach_db @dbname = N'mydb'
GO


답변

귀하의 폴더에 권한을 추가하십시오 .mdf파일이 .

이 이름을 확인하십시오 : NT Service\MSSQLSERVER

그리고 Location서버 이름으로 변경하십시오 .


답변

이 문제는 UAC (사용자 계정 컨트롤)에 의해 발생합니까? 사용자 계정은 Administrators 그룹의 구성원이지만 Windows 7의 UAC에서는 “관리자 권한으로”프로그램을 실행하지 않으면 관리자 작업을 수행 할 수 없습니다. SQL Server 또는 Management Studio 등의 실제 버그는 아닙니다. (아마도 “오류 5″를 불평하는 대신 문제를 알고 권한 상승을 요구할 수 있습니다.)


답변

SQL Server Management Studio를 관리자 권한으로 실행하십시오. (마우스 오른쪽 버튼 클릭-> 관리자 권한으로 실행) Windows 7에서 나를 위해 일했습니다-SQL Server 2008 R2


답변

SQL2005 데이터베이스는 Windows 7에서 이러한 방식으로 연결될 수 있습니다.

start menu >
 all program >
  Microsoft sql server 2005 >
   sql server management studio >
    right click >
     run as administrator >
      click ok

그런 다음 연결된 데이터베이스가 성공적으로 완료되었습니다.