2

サーバーにいくつかの古いデータベースがあったため、古い未使用のデータベースをオフラインにしました。

これは、私のサイトがこれらのデータベースの 1 つに接続できないという不平を言っているという点で、非常に奇妙な問題を引き起こしました。

コードベース全体でデータベース名とサーバー上のすべての構成ファイルを検索しましたが、このデータベース名を参照するファイルはありませんでしたが、オフラインの場合はエラーが発生しますか?

SQLセッションサーバーに関連しているように見えることを除けば、実際に接続要求を行っているものはエラーからわかりません。

[SqlException (0x80131904): データベース 'MyOldDatabaseName' は、オフラインのため開くことができませ ん

Boolean breakConnection) +4849707
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj) +2392
System.Data .SqlClient.SqlDataReader.ConsumeMetaData() +33
System.Data.SqlClient.SqlDataReader.get_MetaData() +96
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +954
System.Data.SqlClient .SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
System.Data. SqlClient.SqlCommand.ExecuteReader(CommandBehavior 動作、文字列メソッド) +141
System.Data.SqlClient.SqlCommand.ExecuteReader() +89
System.Web.SessionState.SqlSessionStateStore.DoGet(HttpContext context, String id, Boolean getExclusive, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags) +516

[HttpException (0x80004005): SQL Server セッション データベースに接続できません。]
System.Web.SessionState.SqlSessionStateStore.ThrowSqlConnectionException(SqlConnection conn、例外 e) +229
System.Web.SessionState.SqlSessionStateStore.DoGet(HttpContext コンテキスト、文字列 ID、 Boolean getExclusive, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags) +649
System.Web.SessionState.SqlSessionStateStore.GetItemExclusive(HttpContext context, String id, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags) +48
System.Web .SessionState.SessionStateModule.GetSessionStateItem() +117 System.Web.SessionState.SessionStateModule.BeginAcquireState(オブジェクト ソース、EventArgs e、AsyncCallback cb、オブジェクト extraData) +487
System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +66 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

4

3 に答える 3

1

あなたはそれがウェブアプリケーションであることを知っています。IISに移動し、すべてのWebサイトを停止し、データベースをオフラインにして、エラーが表示されるかどうかを確認できます。再現できない場合は、一部のWebサイトがデータベースに接続しており、そのソースコードを確認していません。その後、サイトが壊れるまで1つずつ開始できます。

それが役に立てば幸い!

于 2012-06-27T09:48:01.547 に答える
0

あなたのソリューションをきれいにしましたか?クリーニングしてから再構築してみてください。また、そのデータベースをオンラインに戻すとどうなるかを確認する必要があります。IIS で、このサイトを参照している可能性のある接続文字列を確認してください。

于 2012-06-27T09:52:03.847 に答える
0

HttpException (0x80004005): Unable to connect to SQL Server session databaseセッション状態を保存するために SQL Server を使用している、または使用していたことを示します。sessionStateの下の要素の web.config を調べますconfiguration -> system.webmode属性が に設定されている場合、接続文字列を持つ属性SQLServerが存在します。sqlConnectionStringモードを から に変更しSQLServerInProc、インメモリ ソリューションに移行し、SQL Server から切り離すことができます。負荷分散された環境では、SQL Server またはインメモリ State Server を使用する必要があります。

于 2012-06-28T19:15:21.127 に答える