[sql-server] EF5 : ‘{0}’파일을 데이터베이스 ‘{1}'(으)로 첨부 할 수 없습니다

여기에 설명 된대로 정확한 문제가 발생했습니다 ( “삭제 된 MDF 파일에 첨부 할 수 없음”섹션 참조). 그러나 문제에 대한 해결책은 없습니다.

간단히 말해서 문제는 .mdf파일 을 삭제 한 후 EF 5.0을 사용하여 DB에 액세스하려고 할 때 다음 예외가 발생한다는 것입니다.

DataException-> EntityException-> SqlException : ‘{0}’파일을 ‘{1}’데이터베이스로 첨부 할 수 없습니다 .

DB 파일을 삭제했는데 응용 프로그램을 실행할 때 초기화 프로그램을 사용할 것으로 예상 할 때 불쾌한 오류 메시지가 나타납니다. 이 문제를 해결할 방법이 있습니까?



답변

DB 파일을 삭제해도 여전히 SqlLocalDB에 등록 된 상태로 유지됩니다. 때로는 DB를 삭제하도록 수정합니다. 명령 행에서이를 수행 할 수 있습니다.

  1. 시작 / 프로그램 메뉴에서 “VisualStudio 용 Developer Command Propmpt”를여십시오.
  2. 다음 명령을 실행하십시오.

    sqllocaldb.exe stop v11.0

    sqllocaldb.exe delete v11.0


답변

여전히 솔루션을 찾고있는 사람들을 위해 …

View / SQL Server Object Explorer로 이동하여 (localdb) \ v11.0 하위 노드에서 데이터베이스를 삭제하십시오!
여기에 이미지 설명을 입력하십시오

기본적으로 파일 위치는 로컬 데이터베이스로 유지되며 데이터베이스 파일을 삭제하려면 수동으로가 아니라이 탐색기 유틸리티에서 해당 파일을 제거해야합니다.


답변

JSobell의 솔루션을 먼저 시도했지만 거기에 내 데이터베이스가 표시되지 않았습니다. VS Developer Command Prompt에서 CodingWithSpike의 명령을 실행했지만 작동하지 않았습니다. 마지막으로 Package Manager Console에서 CodingWithSpike의 동일한 명령을 실행했으며 작동했습니다.

    PM> sqllocaldb.exe stop v11.0
    LocalDB instance "v11.0" stopped.

    PM>
    PM> sqllocaldb.exe delete v11.0
    LocalDB instance "v11.0" deleted.

    PM> sqllocaldb.exe start v11.0
    LocalDB instance "v11.0" started.


답변

좋구나.

내 솔루션은 간단했고 로컬 서버를 사용하도록 변경했습니다.

DataSource연결 문자열 의 속성을 다음에서 변경했습니다 .

Data Source=(LocalDb)\v11.0;blah

에:

Data Source=.\SQLEXPRESS;blah

또 다른 해결책은 SQL Management Studio를 통해 LocalDb에 로그인 한 후 해당 데이터베이스를 삭제하는 것입니다.

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

그러나 그것은 나를 위해 작동하지 않습니다, 삭제하려고하면 “제목 : Microsoft SQL Server Management Studio

데이터베이스 ‘{0}’이 (가) 서버에 없습니다. (SqlManagerUI)

분리하려고 할 때 분리 선택 목록에 데이터베이스가 나타나지 않습니다. “오프라인으로 가져 오기”도 위의 오류로 연결됩니다.

이것이 LocalDB의 견고한 버그라고 생각하게합니다.


답변

가장 쉬운 방법은 연결 문자열에서 DB 이름을 변경하는 것입니다. 대체 솔루션에 대해서는 Rowan Millers 블로그 Visual Studio 2012에서 데이터베이스를 삭제하는 방법을 참조하십시오 . 향후 버전에서는이 문제를 해결하기 위해 노력하고 있습니다.


답변

방금 해결 한 가장 쉽고 쉬운 대답, ur sql 서버 이름을 데이터 소스로 사용하고 초기 카탈로그를 데이터베이스 이름으로 사용하면 mdf 줄을 제거합니다.


답변

내 경우에는 마이그레이션을 사용하고 구성에서 단순히 dataContext 및 dataContext 클래스 자체의 이름을 변경 한 다음 (이름 바꾸기 만) 다시 시도하면 도움이되었습니다.