sourcetip

EF5: 파일 '{0}'을(를) 데이터베이스 '{1}'로 첨부할 수 없습니다.

fileupload 2023. 4. 13. 21:06
반응형

EF5: 파일 '{0}'을(를) 데이터베이스 '{1}'로 첨부할 수 없습니다.

여기에 기재되어 있는 것과 같은 문제가 발생하고 있습니다만(「삭제된 MDF 파일에 접속할 수 없습니다」의 항을 참조해 주세요).그러나, 문제의 해결 방법은 여기에 기재되어 있지 않습니다.

즉, 문제는 삭제 후.mdfEF 5.0을 사용하여 DB에 액세스하려고 하면 다음과 같은 예외가 발생합니다.

Data Exception -> 엔티티예외 -> SqlException:
'{0}' 파일을 데이터베이스 '{1}'로 첨부할 수 없습니다.

DB 파일을 삭제했는데, 이제 응용 프로그램을 실행하면 이니셜라이저를 사용할 것으로 예상되어 끔찍한 오류 메시지가 나타납니다.이 문제를 해결할 방법이 있나요?

DB 파일을 삭제해도 SQLLocalDB에 등록된 상태로 유지됩니다.DB를 삭제하도록 수정하는 경우도 있습니다.이 작업은 명령줄에서 수행할 수 있습니다.

  1. 시작/프로그램 메뉴에서 "Developer Command Propmpt for Visual Studio"를 엽니다.
  2. 다음 명령을 실행합니다.

    sqllocaldb.exe stop v11.0

    sqllocaldb.exe delete v11.0

아직도 해결책을 찾고 있는 사람들을 위해...

View / SQL Server Object Explorer로 이동하여 (localdb)\v11.0 서브노드에서 데이터베이스를 삭제합니다.
여기에 이미지 설명 입력

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

처음에 JSobell의 솔루션을 사용해 보았지만, 거기에 내 데이터베이스가 나열되어 있지 않았습니다.VS Developer Command Prompt에서 Coding With Spike의 명령을 실행했지만 그것도 작동하지 않았습니다.마지막으로 패키지 매니저 콘솔에서 Coding With Spike의 동일한 명령을 실행했는데 작동했습니다.

    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접속 문자열의 Atribute:

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

수신인:

Data Source=.\SQLEXPRESS;blah

또 다른 솔루션은 SQL Management Studio를 통해 LocalDb에 로그인하여 데이터베이스를 삭제하는 것입니다.

여기에 이미지 설명 입력

그러나, 삭제하려고 하면, 「TITLE:Microsoft SQL Server Management Studio」라고 표시됩니다.

데이터베이스 '{0}'이(가) 서버에 없습니다(SqlManager).UI)

분리하려고 하면 데이터베이스가 분리 선택 목록에 표시되지 않습니다. "오프라인으로 전환"하면 위의 오류가 나타납니다.

LocalDB의 고형 버그라고 생각됩니다.

가장 쉬운 해결책은 연결 문자열에서 DB 이름을 변경하는 것입니다.대체 솔루션에 대해서는, Rowan Millers 블로그How to Drop a Database from Visual Studio 2012」를 참조해 주세요.향후 판에서는 이 문제를 해결하고 싶습니다.

방금 해결한 가장 간단한 답변은 SQL 서버 이름을 데이터 소스로 사용하고 초기 카탈로그는 데이터베이스 이름으로 하면 mdf 행을 삭제할 수 있습니다.

이행을 사용하여 구성에서는 단순히 data Context 및 data Context 클래스 이름 자체를 변경하고(이름만 변경) 다시 시도하면 도움이 됩니다.

SQL 2014의 경우 CodingWithSpike에서 선택한 답변과 이 의견을 따르십시오.

참고로 v11.0은 SQL LocalDB 2012 전용입니다.LocalDB 2014를 사용하는 경우 MS는 대신 이름을 MSSqlLocalDb로 변경했습니다.– Coding With Spike 2014년 8월 29일 19:20

저도 같은 문제가 있었어요.패키지 매니저 콘솔에서 다음 명령을 실행했더니 문제가 해결되었습니다.

sqllocaldb.exe stop MSSqlLocalDb

sqllocaldb.exe delete MSSqlLocalDb

저도 같은 문제가 있어서 "Data Directory" 폴더를 앱 바이너리의 다른 폴더로 수동으로 설정하여 해결했습니다.

Global.asax Application_Start 메서드에 다음 행을 넣습니다.

AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"));

내 연결 문자열은 현재 다음과 같이 설정되어 있습니다.

<connectionStrings>
    <add name="DataContext" connectionString="Data Source=(LocalDb)\v11.0; Initial Catalog=DataContext; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|DataContext.mdf"
  providerName="System.Data.SqlClient" />

연결 문자열의 DataBase 이름을 기본 aspnet-{numbers}에서 단순 이름으로 변경하여 수정할 수 있었습니다.

SQL 서버 관리 스튜디오를 사용하여 (LocalDb)\v11.0에 연결하고 db를 삭제한 후 패키지 매니저 콘솔에서 갱신 데이터베이스를 수행합니다.

언급URL : https://stackoverflow.com/questions/13275054/ef5-cannot-attach-the-file-0-as-database-1

반응형