기본 위치에서 SQL Server LocalDB 인스턴스의 폴더를 이동하는 방법은 무엇입니까?


13

나는 여러 오류 수 LocalDB( 시작 오류 , SQL Server 관리 Studio에서 DB를 생성 할 수 있으며 여러 문제 난 아무것도 도움이되고있는 수정과 전혀 백업을 복원하려고 할 때). 모든 오류의 권한이 올바르게 설정되지 않은 것 같습니다.

이제 간단한 DDL 테이블 생성 스크립트가 SQL Server Management Studio에서 제대로 작동하고 사용자 계정 폴더의 루트에 데이터베이스가 생성됩니다 ( 여기 설명 참조 ). 그러나 Instances 폴더 ( 고급 서비스와 함께 SQL Server Express를D:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances 설치할 때에도 불구하고 표준 SQL Server Express 파일 만 저장되지만 인스턴스는 아님) 에서 DATA 폴더를 다른 위치에 지정했습니다 (계정과 달리 권한 관련 문제) 따라서) 내 프로젝트 중 특정 위치에 DB 파일을 저장하기 위해 인스턴스 폴더를 다른 위치로 옮기고 싶습니다. 이것이 가능한가? 해당 레지스트리 항목을 찾지 못했습니다..mdfLocalDB

SQL Server Express 2012와 동일한 버전의 SSMS (최신 업데이트가 설치됨)를 사용하고 있습니다.

도움을 주시면 감사하겠습니다.

편집 : KookieMonster가 언급 한 데이터베이스 설정 페이지에서 오류가 발생하여 편집하거나 구성을 볼 수 없었습니다. Windows Update에서 업데이트를 다시 확인하도록하고 설치되지 않은 SQL Server Express 업데이트가 있었지만 (이전에 설치할 모든 항목을 선택 했음에도 불구하고) 설치했습니다. 이를 통해 설정 페이지로 이동할 수있었습니다.

LocalDB 인스턴스의 루트 폴더를 다른 곳에 설정하려고 시도했지만 시도한 모든 폴더에 대해 액세스 거부 오류가 발생합니다.

설정 'Microsoft.SqlServer.Management.Smo.ObjectKeyBase'에 대한 변경이 실패했습니다. (Microsoft.SqlServer.Smo)

------------------------------ 추가 정보:

Transact-SQL 문 또는 일괄 처리를 실행하는 동안 예외가 발생했습니다. (Microsoft.SqlServer.ConnectionInfo)


RegCreateKeyEx ()가 오류 5, '액세스가 거부되었습니다.'를 반환했습니다. (Microsoft SQL Server, 오류 : 22002)

폴더에 Everyone에 대한 모든 권한이 설정되어 있어도 얻을 수 있습니다! 기본 폴더 (사용자 계정의 루트)로 설정되어있는 유일한 폴더는 더 많은 재미있는 폴더를 가지고 있습니다. 특별한 권한이 적용되지 않습니다. 사실상 이것은 모든 LocalDB 데이터베이스 파일이 내 계정의 루트 폴더에 저장됨을 의미합니다.


1
데이터베이스를 작성하고 기본값을 사용하는 대신 파일을 특정 위치로 명시 적으로 설정하면 어떻게됩니까?
Aaron Bertrand

1
답장을 보내 주셔서 감사합니다! 작동하지만 (프로젝트 폴더와 같은 적절한 폴더를 선택하면) 매번 경로를 지정 해야하는 것은 매우 불편합니다. 나는 기본값을 바꿀 방법이 없다고 믿을 수 없다.
Piedone

서버 노드로 이동하여 마우스 오른쪽 버튼을 클릭하고 속성, 데이터베이스 매개 변수를 변경하고 기본 위치를 전환하면 어떻게됩니까? 설치 중에 설정 한 값입니까 아니면 다른 것입니까?
KookieMonster

나는 똑같은 문제를 겪고있다. 폴더 권한 변경이 효과가없는 이유는 실제로 레지스트리에 권한 문제가 있음을 나타 내기 때문입니다. 특히 레지스트리 키를 만듭니다 (마지막 부분 : RegCreateKeyEx 참조). 불행히도 나는 어떤 키를 만들고 싶은지 알 수 없습니다.
daveaglick

답변:


13

위의 내 의견을 참조하십시오. Process Monitor를 사용하여 레지스트리 액세스를 추적하고 쓰려고 시도하는 동안 액세스 거부가 발생했습니다.

3:16:40.8405491 PM sqlservr.exe 8756 RegCreateKey HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer ACCESS DENIED Desired Access: Write

레지스트리 편집기를 열고 Everyone에 모든 권한을 부여하여이 문제를 해결했습니다 HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer. 그런 다음 기본 위치를 변경하고 완료되면 Everyone 액세스를 제거했습니다. 이전에는 없었던 다음과 같은 추가 키가 만들어졌습니다.

DefaultData

DefaultLog

BackupDirectory


감사합니다. 결국 다른 길을 갔으므로 이것이 어떻게 작동하는지 테스트 할 수 없습니다.
Piedone

3
방금 제안한 솔루션을 정확하게 시도했지만 레지스트리에 언급 한 추가 정보가 있습니다. 여전히 이것은 로컬 데이터베이스의 현재 속성 값을 무시하거나 변경하지 않습니다. 레지스트리는 세 위치 모두에 대해 원하는 값을 표시하지만 SMSS에는 여전히 설치에 의한 기본 위치가 있습니다. MS SQL Server Compact 3.5 SP 1을 사용하는 것이 그러한 동작의 원인 일 수 있습니까?
user3840527

2
이것은 내가 발견 할 수있었습니다있는 유일한 장소입니다 어떤 이 오류에 대한 정보를. somedave, 예, 해당 reg 키에 대한 권한을 변경하면 오류가 사라지지만 user3840527이 말했듯이 SSMS는 종료 및 다시 열어도 여전히 원래 기본 위치를 유지합니다.
Yann Duran

@ Piedone, reg 키 방법을 사용하는 대신 무엇을했는지 설명해 주시겠습니까? 아니면 방법을 설명하는 어딘가를 가리 킵니까? 감사합니다
Yann Duran

1
오류가 사라지지만 위치가 변경되지 않음
Adil Mammadov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.