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


146

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

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

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

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

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

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

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


MDF 파일이 우연히 암호화됩니까?
Brettski

아니요. 실제로 호기심은 sa로 로그인하면 (Management Studio를 사용하여) 제대로 작동하지만 로컬 관리자 계정을 사용하면 작동하지 않는다는 것입니다. 내 계정은 관리자, 도메인 관리자이며 SQL Server를 설치할 때 로그인 한 계정입니다 (설정 중에 현재 계정을 sysadmin으로 만드는 옵션이 있었으므로 그렇게했습니다).
JMarsch

1
이것이 U7이 W7에서 작동하는 방식입니다.
Al Kepp 2016 년

@AlKepp Nope-UAC가 아닙니다. sa로 로그인하면 (SQL 서버 계정, UAC와 관련이 없음) 문제가 발생합니다. 또한 로컬 관리자 그룹의 구성원 인 것만으로도 권한을 얻습니다. AD 자격 증명이 작동하기 위해 권한을 상승시킬 필요가 없습니다.
JMarsch

답변:


162

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

SQL SRV EXPRESS 2008 R2. 윈도우 7


5
관리자 권한으로 Management Studio를 실행해도 효과가 없었습니다. 이 오류는 Windows 서비스를 시작하려고 할 때 발생합니다.
nuzzolilo

9
관리자로 실행하는 것이 첫 번째 단계입니다. 두 번째 단계는 Windows 인증을 통해 SQL Server에 로깅하는 것입니다. (이 방법은 저에게
효과적이었습니다

3
나도 일했다. Windows에서 권한 프롬프트와 오류가 얼마나 지치고 좌절 하는지를 말로 표현할 수 없습니다. 나는 관리자입니다!
David Masters

나도 일했다. 처음에는 SSMS가 UI 클라이언트 일 뿐이므로 작동하지 않을 것이라고 생각했습니다. 서비스를 관리자 권한으로 실행해야한다고 생각했습니다. 그러나 관리자로 SSMS를 실행하면 충분합니다.
Luke Vo

2
나도 일했다. SQL Server 2019, SSMS 18.4
Ryan Thomas

104

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

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


104
나처럼 Windows 7을 사용하는 경우이 오류가 발생하지 않도록 SQL Server Management Studio를 관리자 권한으로 실행해야합니다.
Antony

4
SS2008 Express를 사용하여 Win7 Pro에서 재현되었습니다. sqlcmd 및 SSMS 모두에 대해 동일한 문제입니다. == Meldung '5120', Ebene '16', Status '101', Server 'DAGO \ SQLEXPRESS', Zeile 1- 'Die physische Datei'D : \ data \ mssql \ drei.mdf 'kann nicht geöffnet werden. Betriebssystemfehler 5 : '5 (Zugriff verweigert) == 사용자 (액세스 권한이있는 로컬 관리자 그룹의 구성원)에게 모든 권한을 부여하면 문제가 해결됩니다. 또한 관리자가 sqlcmd (또는 SSMS)를 실행하면이 오류가 발생하지 않습니다.
Lumi

1
Anthony Highsky가 그 답을 가지고 있습니다. Management Studio를 관리자 권한으로 실행해야합니다.
제임스

나에게도 같은 문제와 해결책이 있습니다. 2008R2, Win 7 등. 보안 목록에 자신을 명시 적으로 추가하면 효과가 있습니다. SQL Server가 연결된 후에는 읽을 수 있지만 연결할 때 내 자격 증명 아래에서 읽을 수 없다고 생각합니까?
Andrew Backer

4
관리자 권한으로 Management Studio를 실행해도 효과가 없었습니다. 이 오류는 Windows 서비스를 시작하려고 할 때 발생합니다.
nuzzolilo

20

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

로그인 한 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

1
감사합니다! serveradmin 권한이있는 SQL Server 인증 계정을 사용하여 로그인 한 경우 올바른 방법을 찾는 것이 훨씬 쉽다고 생각합니다.
William Rose

나는 원래 'SA'로 대신 Windows 사용자로 데이터베이스를 작성한 경우 불행하게도,이 날 도움이되지 않습니다
데이비드 가드너

"데이터베이스를 분리 할 때주의하십시오". SSMS에게 조심하도록 지시하십시오. 데이터베이스 복사 명령이 더 설명이 샤프트 도시에서 저를 떠나 실패 SSMS를 사용하기 때문에 내 문제가 발생했습니다
앨런 맥도널드

18

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

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

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


5
정확한 계정 이름을 찾으려면 인스턴스마다 다를 수 있으므로 다음을 실행하십시오 SELECT servicename, service_account FROM sys.dm_server_services..
Arve Systad

13

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


11

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


1
이 답변은 공감해야합니다. SSMS를 관리자로 실행하면이 답변을 복제 할 수 있습니다. Microsoft는이를 "예상 된 행동"으로보고합니다. link
FreeText

이것은 MandoMando의 답변과 동일하지 않습니까?
mortb

10

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

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

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


이 : 윈도우 10에 관리 Studio 2008 R2와 SQL 서버 2016와 함께 일

9

로그인하면 sa(또는 모든 Sql Server 계정) SQL Server 서비스 계정으로 작동하며, 로그인하면 계정 권한이 있습니다. 어떤 이유로 적절한 파일 액세스 권한이 없지만 서비스 계정에는 액세스 할 수 없습니다.


NTFS 문제는 내가 생각한 첫 번째 문제 였지만 문제는 아닌 것 같습니다. 로컬 관리자 그룹의 구성원이며 관리자가 mdf 및 ldf 파일에 대한 "모든 권한"권한을 가지고 있는지 확인했습니다. . 또한 파일 소유자입니다. 방금 디렉토리를 만들고 mdf / ldf 파일을 자신의 위치에 복사했습니다.
JMarsch

@JMarsch : @Nick은 'sa'에 계정에없는 NTFS 권한이 아닌 SQLSERVER 권한 세트가 있다고 말합니다.
철회

@Trevoke : 나는 당신과 함께 있습니다. 이 경우 사용자 계정에 어떤 권한을 할당해야합니까? (나는 이미 sysadmin 역할에 할당되어 있습니다)
JMarsch

1
예를 들어, 이것, 그러나 5 분 전에 나 같은 사람들을 위해 : 다음을 실행하여 정확한 서비스 사용자 이름을 찾을 수 있습니다.SELECT servicename, service_account FROM sys.dm_server_services
Arve Systad

6

이 솔루션을 찾았습니다 .mdf 파일을 저장 한 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭 한 다음 보안 탭을 선택하고 편집 ...을 클릭하고 모든 권한을 부여하십시오. 도움이 되었기를 바랍니다!


5

sa사용자는 NTFS가 계정 사용 SQLServerMSSQLUser$<computer_name>$<instance_name>SQLServerSQLAgentUser$<computer_name>$<instance_name>데이터베이스 파일에 액세스 할 수 있습니다. 이러한 사용자 중 하나 또는 둘 모두에 대한 권한을 추가 할 수 있습니다.

사용자에게 아무런 문제가 없다고 말하여 문제가 해결되는지 모르겠지만 sa도움이되기를 바랍니다.


5

나와 함께-창 8에서 실행-SQL Server Manager Studio-> 관리자로 실행을 클릭하십시오. -> 문제 없습니다


5

그것은 할 수 easly 고정 하지만 radicaly, 당신이 저장 한 폴더로 이동 MDF 파일을 . 파일 선택-> 오른쪽 클릭-> 속성을 ​​클릭하고 로그인 한 사용자 보안을 위해 파일에 대한 전체 권한을 부여 하십시오 .


3

이 문제가 발생할 때마다 SQL Server에 설정된 기본 데이터베이스 디렉토리와 다른 디렉토리에있는 데이터베이스를 연결하려고 시도했습니다.

다양한 디렉토리 및 계정에 대한 권한을 사용하지 않고 단순히 SQL Server가 찾을 것으로 예상되는 디렉토리로 데이터 파일을 이동하는 것이 좋습니다.


많은 상황에서 나는 당신의 요점에 동의하지만 SQL 서버의 경우 확장 성을 위해 다른 스핀들이나 볼륨에서 데이터베이스를 찾을 수 있기를 원합니다. 실제로 트랜잭션 처리량을 향상시키기 위해 트랜잭션 로그를 데이터베이스와 별도의 스핀들에 배치하는 것이 일반적입니다.
JMarsch

@JMarsch : 예 .. 기본 데이터 및 로그 위치에 대한 서버 등록 정보> 데이터베이스 설정 탭을 통해 디렉토리를 실제로 구성 할 수 있습니다 ...
NotMe

그것은 기본값을 다루지 만 그것은 단지 기본값입니다. 데이터베이스를 다른 곳에 두는 것은 완전히 허용되며 실제로 사용되는 데이터베이스를 두 개 이상 관리하는 서버가있는 경우 실제로 드물지 않습니다.
JMarsch

기본 SQL Server 디렉토리 c : \ Program Files \ Microsoft SQL Server \ MSSQL10_50.SPATIAL_IM \ MSSQL \ DATA \ mydb.mdf에서도 win7의 동일한 문제가 있습니다.
goku_da_master

3

이 정보도 추가하고 싶었습니다.

http://www.mssqltips.com/sqlservertip/2528/database-attach-failure-in-sql-server-2008-r2/

해결책

서로 다른 두 개의 로그인으로 분리 및 연결 작업을 수행했기 때문에이 오류가 발생합니다. 따라서 파일을 분리 할 때 첫 번째 로그인이 소유했지만 사용 된 로그인이 mdf 및 ldf 파일의 소유자가 아니기 때문에 첨부에 실패했습니다.

데이터베이스 파일을 분리하면 소유자가 detach 명령을 수행 한 사람이되므로 문제를 해결하려면 다른 로그인을 mdf 및 ldf 파일의 소유자로 변경하거나 추가해야합니다.

"filename.mdf"파일을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하여 mdf 파일의 권한을 확인하십시오. 여기서는 "filename.mdf"파일에 대한 하나의 계정 만 데이터베이스를 분리하는 데 사용 된 계정이므로 권한이 있음을 알 수 있습니다.

이 문제를 해결하려면 추가 ... 버튼을 클릭하여 다른 로그인 또는 필요한 다른 로그인을 추가하고 로그인에 모든 권한을 부여하십시오. "ldf"파일에 대해서도이 작업을 수행해야합니다. 이 작업을 완료하면 확인 버튼을 클릭하십시오. (다른 OS 버전의 경우 편집 옵션이있을 수 있습니다. 먼저이 옵션을 클릭하면 추가 ... 옵션이 표시됩니다.)


분리를 수행 한 사용자와 일치하도록 SSMS에서 연결을 변경했으며 연결을 수행 할 수있었습니다.
glitzsfa

2

내가 가진이 문제의 특정 변형이있는 사람에게는 가치가 있습니다.

  • SQL Express 2008
  • Visual Studio 2010 Premium

App_data 폴더의 컨텍스트 메뉴를 통해 디버깅 목적으로 SQL Express 데이터베이스를 만들었습니다. 연결 문자열 (NHibernate에서 사용)은 다음과 같습니다.

Server=.\SQLExpress;
AttachDbFilename=|DataDirectory|DebugDatabase.mdf;
Database=DebugDatabase;
Trusted_Connection=Yes;

이로 인해 데이터베이스 파일에서 동일한 "액세스 거부"오류가 발생했습니다. 한때 "모든 사람"에게도 다양한 사용자에게 폴더와 파일에 대한 모든 권한을 부여하려고했습니다. 도움이되지 않았으므로 추가 된 권한을 다시 제거했습니다.

마침내 해결 된 것 Visual Studio에서 서버 탐색기를 연 다음 MDF에 연결하고 다시 분리하는 것이 었습니다. 내가 한 후에 내 웹 응용 프로그램은 데이터베이스에 액세스 할 수 있습니다.

추신. 크레딧은 이 특정 문제를 인터넷 검색하는 동안 발견 한이 블로그 게시물 로 이동하여 문제를 해결하기 위해 데이터베이스를 연결 / 분리하는 아이디어를 유발합니다.


2

데이터베이스 mdf를 기본 Data 폴더에서 asp.net app_data 폴더로 옮기고 데이터베이스를 다시 온라인으로 설정하려고 시도 하면서이 문제가 발생했습니다.

원래 위치에있는 다른 파일 데이터베이스의 보안 설정을 이동 된 파일과 비교 한 결과 MSSQL $ SQLEXPRESS에 새 위치의 파일에 대한 권한이 할당되지 않았습니다. "NT SERVICE \ MSSQL $ SQLEXPRESS"(NT SERVICE 포함)에 대한 모든 권한을 추가했으며 제대로 연결되었습니다.

원본 Data 폴더에 이러한 권한이 있으며 파일이이를 상속합니다. 물론 파일과 상속 나누기를 이동하십시오.

app_data 폴더에 직접 만든 다른 프로젝트의 mdf 파일을 확인했습니다. MSSQL $ SQLEXPRESS 권한이 없습니다. 흠. 왜 SQL Express가 다른 것을 좋아하지 않는지 궁금합니다.


이 솔루션은 로그 파일을 별도의 디스크로 이동할 때 Windows 10 및 SQL Server 2017에서 효과적이었습니다. 필자의 경우 사용자 이름은 "NT SERVICE \ MSSQLSERVER"
John Hanley

1

이것은 NTFS 권한처럼 들립니다. 일반적으로 SQL Server 서비스 계정은 파일에 대한 읽기 전용 액세스 권한을 갖습니다 (SQL Server는 동일한 서비스 계정을 사용하여 로그인 방법에 관계없이 데이터베이스 파일에 액세스 함). 직접 로그인과 sa로 로그인 할 때 폴더 권한을 변경하지 않았습니까? 분리했다가 다시 시도해도 여전히 같은 문제가 있습니까?


제 경우에는 아닙니다. 확인하기 위해 서버 시간을 다시 받았습니다. 문제는 내 계정이 특정 수준의 간접 액세스를 통해서만 파일에 액세스 할 수 있다는 것입니다. 나는 Domain Admin 그룹의 구성원이었습니다. Domain Admin은 컴퓨터에서 Local Administrators 그룹의 구성원이었으며 Local Admins 및 시스템은 폴더를 완전히 제어 할 수있었습니다. (따라서 2 단계의 그룹 간접 지배가있었습니다). 직접 권한을 할당 한 경우에는 권한이 제거 된 경우에도 탐색기 등에서 파일을 복사 / 삭제할 수 있지만 SQL Server에서로드 할 수 없습니다.
JMarsch

데이터베이스를 연결하려고 할 때. Windows authenticated user데이터베이스 파일에 대한 권한을 극복하는 데 도움이되는대로 로그인 하십시오. (이 경우 Windows OS가있는 디스크의 MS SQLServer 인스턴스).
Nhu Vy

1

데이터베이스를 연결할 때도 같은 문제가있었습니다. SQL 문제가 아니며 계정 문제였습니다. 패널 컨트롤 / 사용자 계정 컨트롤 설정으로 이동하여 "알림 없음"으로 설정하십시오. 마지막으로 컴퓨터를 다시 시작하면 효과가 있습니다.


1

데이터베이스를 마우스 오른쪽 단추로 클릭하고 마법사에서 AdventureWorks2012_Data_log.ldf 로그 파일을 제거하여 mdf 파일을 첨부했습니다. mdf 파일은 다음 위치에 있습니다.

    C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA

위의 방법으로 문제를 해결하는 데 도움이되었습니다.


1

나는 이 페이지를 읽고 있었고 거기에 흥미로운 문장이 있습니다.

주의 : 이러한 역할에 사용자를 추가 할 때 매우 선택하십시오. 예를 들어 sysadmin은 모든 데이터베이스에서 dbo에 매핑되며 sa 계정을 사용하여 로그인하는 것과 같습니다.

물론 그들은 또한 이것을 가지고 있습니다 :

사용자 및 역할에 부여되고 데이터베이스에 특정한 권한 거부를 제외한 모든 권한은 누적됩니다. 사용자 수준 또는 역할 수준에서 거부 된 권한은 sysadmin 고정 서버 역할을 제외하고 다른 역할 멤버 자격을 통해 부여 된 것과 동일한 권한을 재정의합니다. sysadmin은 구성원 인 역할에 DENY 권한이 있더라도 모든 권한을 유지합니다.

따라서 도메인 관리자이고 SQL 'sysadmin'그룹의 경우 세계는 갑각류가되어야합니다.

물론 Microsoft에 따르면 다음 두 페이지를 빠르게 살펴보아야합니다.
데이터베이스 필수 구성 요소에 연결

데이터베이스 설치 링크

당신은 장난 꾸러기이고 수동으로 첨부하려고합니다 :) 진지하게, AdventureWorks2008 데이터베이스에 대한 모든 전제 조건이 있습니까?
나는 이것이 또 다른 Microsoft 이상한 / 가장 의심스러운 사례라고 생각하지만 잘못되었을 수 있습니다.


귀하의 의견이 답변을 찾는 데 도움이 되었기 때문에 +1입니다. 이 결과를이 글타래에 게시 할 것입니다. BTW (어드벤쳐 웍스 데이터베이스가 exe로 배포되어 매우 이상한 정책으로 인해 "추잡한"상태였습니다. exe를 다운로드 할 수 없습니다 (zip 파일과 MSI 파일을 다운로드 할 수 있으므로 보이지 않습니다) exe 필터링이 실제로 방해가되지 않는 방식으로 처리되는 방식이지만 규칙입니다.) 어쨌든 원시 mdf 파일을 codeplex에서 zip으로 가져올 수 있습니다.이 작은 호기심에
부딪쳤을

1

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

USE [master]
GO
CREATE DATABASE [DataBasename] ON 
( FILENAME = N'C:\data\DataBasename.mdf' )
 FOR ATTACH
GO

로 변경 ATTACH_FORCE_REBUILD_LOG위한> - 용은 ATTACH

USE [master]
GO
CREATE DATABASE [DataBasename] ON 
( FILENAME = N'C:\data\DataBasename.mdf' )
 FOR ATTACH_FORCE_REBUILD_LOG
GO

감사합니다, 당신은 내 하루를 저장
Shahrokhian

1

sa 로이 오류가 발생했습니다. 필자의 경우 데이터베이스 보안은 중요하지 않았습니다. 나는 모든 사람들에게 mdf와 ldf 파일에 대한 모든 권한을 추가하고 첨부했다.


1

VS 2019에서 동일한 문제가 발생했습니다. 그래도 같은 문제가있는 사람은 다음 사항을 확인하십시오.

  1. m / c에 SQL Express가 설치되어 있어야합니다.
  2. 이전 버전의 VS에 VST에 VST가 설치되어 있어야합니다 (VS 2019에서-설치하는 동안이 구성 요소를 확인하십시오)-이 구성 요소를 외부에 추가해야합니다
  3. 연결 문자열에 'User Instance = True'추가
  4. 선택 사항이라고 생각합니다. 관리 모드에서 VS 및 SQL Express를 열고 SQL Express에 관리자로 로그인하십시오.

0

실제로 NTFS 권한이며 SQL Server의 이상한 버그입니다. 위의 버그 보고서가 정확한지 확실하지 않거나 추가 버그를 나타낼 수 있습니다.

Windows 7 에서이 문제를 해결하려면 관리자가 아닌 SQL Server Management Studio를 정상적으로 실행했습니다. 그런 다음 MDF 파일을 첨부하려고 시도했습니다. 이 과정에서 패스에 붙여 넣는 대신 UI를 사용했습니다. 나는 그 길이 나에게서 끊어 졌다는 것을 알아 차렸다. 소프트웨어가 추가 한 MS SQL Server (SQLServerMSSQLUser $ machinename $ SQLEXPRESS) 사용자에게 폴더 (이 경우 내 사용자 폴더의 깊은 폴더)에 액세스 할 수있는 권한이 없기 때문입니다.

경로를 붙여넣고 진행하면 위의 오류가 발생합니다. 그래서-MS SQL Server 사용자에게 거부 된 첫 번째 디렉토리 (내 사용자 폴더)에서 읽을 수있는 권한을 부여했습니다. 그런 다음 영원이 필요할 수 있으므로 전파 작업을 즉시 취소하고 필요한 다음 하위 폴더에 대한 읽기 권한을 다시 적용하여 전파되도록했습니다.

마지막으로 MS SQL Server 사용자에게 db의 .mdf 및 .ldf 파일에 대한 수정 권한을 부여했습니다.

이제 데이터베이스 파일에 첨부 할 수 있습니다.


0

SQL Server 2012를 실행하면 이전 버전의 mdf 파일을 첨부하여이 오류가 발생할 수 있습니다. 예 : SQL Server 2008의 mdf 파일


나는 그 부분이 비교적 자기 설명 적이라고 생각합니다. 정렬 방법을 아는 것이 좋습니다.
dansan 2019

0

공용 폴더에 첨부하려는 .mdf 파일을 이동하여 문제를 해결했습니다. 필자의 경우 사용자 / 공용 폴더로 옮겼습니다. 그런 다음 문제없이 거기에서 첨부합니다. 도움이 되었기를 바랍니다.


0

다른 솔루션으로 문제를 해결할 수없는 사람들을 위해 다음 수정 사항이 효과적이었습니다.

SQL Server 설치의 "DATA"폴더로 이동하여 마우스 오른쪽 버튼을 클릭하고 속성, 보안 탭을 클릭 한 다음 "NETWORK SERVICE"사용자에 대한 모든 제어 권한을 추가하십시오.

http://decoding.wordpress.com/2008/08/25/sql-server-2005-expess-how-to-fix-error-3417/

(위 링크는 SQL 2005 용이지만 SQL 2008 R2 설치가 수정되었습니다.)

몇 가지 추가 정보 :이 문제는 보조 하드 드라이브 (SQL 설치가 설치된)를 교체 한 후 나에게 나타났습니다. 모든 파일을 복사하고 원래 드라이브 문자를 새 하드 디스크로 복원했습니다. 그러나 보안 권한은 복사되지 않았습니다. 다음에 더 나은 데이터 복사 방법을 사용할 것이라고 생각합니다.


0

제 경우에는 문제를 해결 한 것은 다음과 같습니다.

USE [master]
GO
CREATE DATABASE [AdventureWorks2008R2] ON
( FILENAME = 'C:\Program Files\Microsfot SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\AdventureWors2008R2_Data.mdf')
FOR ATTACH_REBUILD_LOG

0

다른 폴더에 데이터베이스를 복사하고 "Windows 인증"을 사용하여 SQLServer에 연결 또는 로그인

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


0

데이터베이스를 분리하고 ldf 및 mdf 파일을 드라이브 C에서 F로 이동 한 후 데이터베이스를 다시 연결하는 경우에도 동일한 문제가 발생했습니다.

이 문제를 해결하려면 두 파일 모두에 OWNER RIGHTS 보안 주체를 추가하고 속성 대화 상자의 보안 탭에서 파일을 완전히 제어해야했습니다.

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