2012-06-27 1 views
2

내 서버에 몇 개의 오래된 데이터베이스가 있었기 때문에 오래된 미사용 데이터베이스를 오프라인으로 가져갔습니다.asp.net webforms 앱이 코드에서 아무 곳에서나 참조되지 않는 데이터베이스에 연결하려고합니까?

이것은 내 사이트가 이러한 데이터베이스 중 하나에 연결할 수 없다는 불만을 표시하는 등 매우 이상한 문제를 일으켰습니다.

전체 코드베이스에서 데이터베이스 이름뿐 아니라 서버의 모든 구성 파일을 검색했으며,이 데이터베이스 이름을 참조하지 않고 오프라인으로 가져 가면 오류가 발생합니다.

실제로 SQL Server와 관련이있는 것 외에도 실제로 연결 요청을하는 동안 오류가 표시되지 않습니다.

[SQLEXCEPTION (0x80131904). 오프라인이므로 데이터베이스 'MyOldDatabaseName가' 열 수 없습니다]
System.Data.SqlClient.SqlConnection.OnError (SQLEXCEPTION 예외 부울 breakConnection) 1,953,274
시스템 .Data.SqlClient.SqlInternalConnection.OnError (SQLEXCEPTION 예외 부울 breakConnection) 4,849,707
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj) 194 System.Data.SqlClient.TdsParser.Run (runBehavior runBehavior, SqlCommand cmd 핸들러 SqlDataReader의 데이터 스트림, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 2,392
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
System.Data.SqlClient.SqlDataReader.get_MetaData() +96
System.Data .SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader 개체 DS, runBehavior runBehavior, 문자열 resetOptionsString) 297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior를 cmdBehavior, runBehavior runBehavior, 부울 returnStream, 부울 비동기) 954
시스템 .Data.SqlClient.SqlCommand .RunExecuteReader (CommandBehavior를 cmdBehavior, RunBehavior runBehavior 부울 returnStream 문자열 방법 DbAsyncResult 결과) 162
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior를 cmdBehavior, RunBehavior runBehavior 부울 returnStream 문자열 법) +32
System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior를 동작 문자열 법) 141
System.Data.SqlClient.SqlCommand.ExecuteReader() +89
System.Web.SessionState.SqlSessionStateStore.DoGet (HttpContext를 컨텍스트, 문자열 ID, 부울 getExclusive, 부울
System.Web.SessionState.SqlSessionStateStore.ThrowSqlConnectionException :잠겨, 시간 범위 & 수 문의 개폐, 516

[. SQL Server 세션에 데이터베이스에 연결할 수 없습니다 HttpException (0X80004005)]) & lockId, SessionStateActions & actionFlags 객체 (SqlConnection conn, 예외 e) +229
System.Web.SessionState.SqlSessionStateStore.의 doGet 649
System.Web.SessionState.SqlSessionStateStore.GetItemExclusive을 (HttpContext를 컨텍스트, 문자열 ID, 부울 getExclusive, 부울 &는, 시간 범위 & 수 문의 개폐, & lockId, SessionStateActions & actionFlags 개체 잠금) (HttpContext를 컨텍스트, 문자열 ID, 부울 &는) SessionStateActions에게, 시간 범위 & 수 문의 개폐는, & lockId 개체,() 117 System.Web.SessionState.SessionStateModule.BeginAcquireSt +48
System.Web.SessionState.SessionStateModule.GetSessionStateItem을 & actionFlags을 고정 487
System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 66 System.Web.HttpApplication.ExecuteStep 때 (IExecutionStep 단계 (객체 소스가있는 EventArgs 전자, AsyncCallback의 CB, extraData 객체) 먹었다, 부울 & 완료 됨) +155

+1

machine.config 파일을 검사했는데 거기에도 참조가 없습니다. bin 폴더에서 이전 dll을 제거했습니다. 전적으로 그 이름의 데이터베이스조차없는 개발자와 동기화되었습니다. – mp3duck

답변

1

알다시피 웹 응용 프로그램입니다. IIS로 이동하여 모든 웹 사이트를 중지하고 데이터베이스를 오프라인으로 전환 한 다음 오류가 표시되는지 확인할 수 있습니다. 그것을 재현 할 수 없으면 일부 웹 사이트가 데이터베이스에 연결하고 있으며 소스 코드를 확인하지 않습니다. 그런 다음 사이트가 중단 될 때까지 하나씩 사이트를 시작할 수 있습니다.

희망 하시겠습니까?

0

해결 했습니까? 청소 한 다음 다시 작성하십시오. 또한 데이터베이스를 온라인 상태로 만들 때 어떤 일이 발생하는지 확인해야합니다. IIS에서이 사이트를 참조 할 수있는 연결 문자열을 확인하십시오.

0

HttpException (0x80004005): Unable to connect to SQL Server session database은 SQL Server를 사용하여 세션 상태를 저장하고 있음을 나타냅니다. web.config에서 sessionState 요소를 configuration -> system.web 아래로 찾습니다. mode 특성이 SQLServer으로 설정된 경우 연결 문자열과 함께 sqlConnectionString 특성이 나타납니다. SQLServer에서 InProc으로 모드를 변경하여 메모리 솔루션으로 이동하고 SQL Server에서 멀리 이동할 수 있습니다. 부하가 분산 된 환경의 경우 SQL Server 또는 메모리 내 상태 서버를 사용해야합니다.

관련 문제