2010-05-28 72 views
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() 

我想,找到我給這裏可能是困難的信息的問題,但我不知道還有什麼地方看還是什麼其他的測試要做什麼,所以任何關於它可能是什麼的想法,或者我可以做什麼測試來找出答案都將非常感激。

+0

你是說當你沒有調試時,應用程序是從IIS運行? – Jay 2010-05-28 11:29:39

+0

不,它是一個WinForms應用程序。換句話說:如果我在VS中按F5,它會起作用。如果我在Windows資源管理器中雙擊該exe文件,它將失敗。如果我設置VS啓動exe附加調試器,它也會失敗。 – 2010-05-28 11:38:00

+0

我最好的猜測是你沒有併發連接。 Express只允許5我認爲。如果您打開IDE並打開一個或兩個其他工具(如Management Studio),則可能會達到5. 如果您有類似連接池打開的情況,則可能是所有5個連接在某處? – Cobusve 2010-05-28 11:38:01

回答

0

我修好了。不幸的是,我不知道如何:我刪除了輸出文件夾,重置了某些項目引用,在SQL Express上重新配置了幾件事情,重新啓動了機器等。在某些時候,它再次開始正常工作。 它仍然讓我無法發現OleDb在連接31秒時所做的事情,但問題現在已消失(到目前爲止)。

感謝您的幫助。