3
工作時,我有一個連接到指定的SQL Express實例使用的OleDbConnection在本地計算機上的C#應用程序:OLEDB連接只調試
_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也會發生異常。我可以看到連接字符串是正確的,一切似乎都很好。我無法在SQL Express錯誤日誌或SQL活動監視器中細化任何額外的信息。
如果有幫助,這裏是個例外:
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()
我想,找到我給這裏可能是困難的信息的問題,但我不知道還有什麼地方看還是什麼其他的測試要做什麼,所以任何關於它可能是什麼的想法,或者我可以做什麼測試來找出答案都將非常感激。
你是說當你沒有調試時,應用程序是從IIS運行? – Jay 2010-05-28 11:29:39
不,它是一個WinForms應用程序。換句話說:如果我在VS中按F5,它會起作用。如果我在Windows資源管理器中雙擊該exe文件,它將失敗。如果我設置VS啓動exe附加調試器,它也會失敗。 – 2010-05-28 11:38:00
我最好的猜測是你沒有併發連接。 Express只允許5我認爲。如果您打開IDE並打開一個或兩個其他工具(如Management Studio),則可能會達到5. 如果您有類似連接池打開的情況,則可能是所有5個連接在某處? – Cobusve 2010-05-28 11:38:01