3

OleDBConnectionを使用してローカルマシン上の名前付きSQLExpressインスタンスに接続するC#アプリケーションがあります。

_connection = new OleDbConnection(_strConn);
_connection.Open();

_strConn is something like this: "Provider=sqloledb;Data Source=.\NAMEDINSTANCE;Initial Catalog=dbname;User Id=sa;Password=password;"

アプリケーションをデバッグすると、接続は正常に機能します。Windowsエクスプローラーからアプリケーションを実行すると(同じデバッグコンパイル)、30秒後にOpen()行に「 OleDBException:ログインタイムアウトが期限切れになりました」というメッセージが表示されます。奇妙なことに、デバッガーをexeに接続しても例外が発生します。接続文字列が正しく、すべてが正常に見えることがわかります。SQLExpressエラーログまたはSQLActivityMonitorのいずれにも追加情報を追加することはできません。

それが役立つ場合は、ここに例外があります:

    System.Data.OleDb.OleDbException: Login timeout expired
   at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
   at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.OleDb.OleDbConnection.Open()

ここで提供する情報で問題を見つけるのは難しいかもしれませんが、他にどこを探すべきか、他にどのようなテストを行うべきかわからないので、それが何であるか、または見つけるためにどのようなテストを行うことができるかについてのアイデアはありません本当にありがたいです。

4

1 に答える 1

0

それを私が直した。残念ながら、どうすればよいかわかりません。出力フォルダーを削除し、プロジェクト参照をリセットし、SQL Expressでいくつかを再構成し、マシンを再起動しました。ある時点で、正常に動作し始めました。接続時にOleDbが31秒間何をしていたかを見つけることができないのはまだイライラしますが、問題は今ではなくなっています(これまでのところ)。

ご協力いただきありがとうございます。

于 2010-05-29T12:40:40.803 に答える