2012-11-12 3 views
4

메신저 ASP.net에 처음으로 익숙하며 (약 2 주 동안 기본 응용 프로그램을 만들었습니다.) 메신저 데이터베이스에 큰 문제가 발생했습니다.ASP.NET 데이터베이스가 항상 손상되었습니다.

로그인 시스템을 사용하여 간단한 전자 메일 응용 프로그램을 작성하고있었습니다. 며칠 전에 모든 것이 잘 작동하고있었습니다.

가 어쨌든, 매번 난 내 프로그램과 데이터베이스 파일에 액세스하려고 메신저 다음과 같은 오류 점점 : '/'응용 프로그램에

* 서버 오류. 데이터베이스 파일이 손상되었을 수 있습니다. 복구 유틸리티를 실행하여 데이터베이스 파일을 확인하십시오. [데이터베이스 이름 = C : \ Users \ ArvinAsus \ Documents \ Visual Studio 2010 \ Projects \ mailer \ App_Data \ Database.mdf] 설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오. 예외 정보 : System.Data.SqlServerCe.SqlCeException : 데이터베이스 파일이 손상되었을 수 있습니다. 복구 유틸리티를 실행하여 데이터베이스 파일을 확인하십시오. [데이터베이스 이름 = C : \ Users \ ArvinAsus \ Documents \ Visual Studio 2010 \ Projects \ mailer \ App_Data \ Database.mdf] *

이 오류는 항상 모든 데이터베이스에 표시됩니다. Wether 나는 과거에 일한 데이터베이스를 사용하거나 새로운 빈 DB를 만듭니다.

임이 문제가 DB의 부패하지만 난 데 또 다른 문제와는 아무 상관이 없다는 느낌을 갖는 난 내 로컬 데이터베이스 서버 탐색기에 연결되어있을 때

, 난 테이블을 추가 할 수 오전 - 채우기 데이터가있는 테이블, 테스트 연결은 항상 성공합니다. 내 프로그램을 통해 데이터베이스에 연결하려고하면 :

* 예외 정보 : System.Data.SqlServerCe.SqlCeException : 파일 공유 위반이 있습니다. 다른 프로세스가 파일을 사용 중일 수 있습니다. [C : \ Users \ ArvinAsus \ Documents \ Visual Studio 2010 \ Projects \ mailer \ App_Data \ Database.mdf] *

그런 다음 서버 탐색기에서 연결을 닫으면 오류가 사라지고 손상 오류가 발생합니다 .

나는 완전히 이것으로 붙어있다. 나 한테 다시 생각하게하려는 사람이 있니?

미리 감사드립니다.

PS : 임 2010 년 전문

+0

다음에서 확인할 수 있습니다. http://stackoverflow.com/questions/427888/why-do-i-receive-file-share-error-if-sql-compact-allows-multiple-connections –

답변

3

.MDF 파일은 SQL 컴팩트 에디션 데이터베이스 파일하지만 SQL Server 데이터 파일이 아닌 비주얼 스튜디오를 사용하여. SQL Server (Express, Professional 또는 다른 버전)를 사용하여 데이터베이스에 액세스하고 SQL Server 전용 대신 SQL Native Client, OleDB 또는 다른 데이터 커넥터를 사용하여 데이터베이스에 액세스해야합니다.

+0

감사합니다. 그걸 시험해보십시오, 이해가 안가는 것은 며칠 전 정확히 같은 방식으로 작동 한 이유입니다. Visual Studio가 SQLserverCE를 설치 했으므로 SQL Compact Edition에서 작동하지 않는 경우 .mdf 데이터베이스를 만드는 이유는 무엇입니까? – Arvin

+0

잘 모르겠다! : -/SQL Server가 다운되는 동안 사람들이 MDF 파일을 읽을 수있는 몇 가지 사례를 보았습니다. 그래서 두 파일 형식이 기본 구조를 공유하고 있다고 생각합니다. –

2

귀하의 예외는 다음을 알려줍니다 : There is a file sharing violation. A different process might be using the file. 많은 프로세스가 파일을 사용한 후에도 파일을 보내지 않습니다. 데이터베이스에 대한 연결을 관리하려면 실제 SQL Server 인스턴스 (명시 적 임에도 불구하고)를 사용해야합니다.

나는 @ Y로 상향되었습니다. Ecarri의 대답은 그가 올바른 해결책을 가지고 있다고 생각하기 때문입니다. 그러나 파일 공유 충돌을 일으키는 가장 큰 이유는 개발 환경 자체입니다. IDE 디버거와 함께 제공되는 기본 제공 Cassini 서버를 사용하는 경우 디버깅 세션간에 개발 웹 서버가 활성 상태로 유지됩니다. 첫 번째 세션은 .mdf의 인스턴스를 메모리에 유지하고 사용하므로 이후의 디버깅 세션은 사용 가능해야한다고해도 액세스 할 수 없습니다.파일을 릴리스하려면 디버깅을 중지하고 개발 웹 서버 인스턴스를 나타내는 시스템 트레이의 아이콘을 마우스 오른쪽 버튼으로 클릭하고 Stop으로 알립니다.

+0

위대한 설명! 그것은 내가 이전에 언급 한 수수께끼를 풀어 준다. –

+0

답변 해 주셔서 감사합니다. 디버깅을 중지해도 파일 공유 위반 오류가 해결되지 않습니다. 내 시스템 트레이에서 서버를 중지해도 도움이되지 않습니다! 나는 SQL 서버 익스프레스를 사용하고 대신 .sdf 파일을 사용하여 작동하는지 확인한다. – Arvin

+0

나를 위해 파일 공유 위반 문제를 해결할 수있는 유일한 방법은 서버 탐색기로 가서 데이터베이스 연결을 닫는 것이다. – Arvin

0

내 문제는 내 web.config 파일이 수정되었다는 것입니다. 데이터베이스의 실제 위치가 변경되어이 오류가 발생했습니다. 데이터베이스는 여전히 있었지만 올바른 위치를 가리키고 있지 않았습니다.

문제가 아닌지 확인하려면 web.config 파일을 다시 확인하십시오. 나는 이것이 누군가를 돕기를 바랍니다.

관련 문제