2010-05-28 67 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秒时所做的事情,但问题现在已消失(到目前为止)。

感谢您的帮助。