OleDB连接仅在调试时有效

时间:2010-05-28 11:19:56

标签: c# oledb sql-server-express oledbconnection oledbexception

我有一个C#应用程序,使用OleDBConnection连接到本地计算机上的命名SQL Express实例:

_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()

我想,找到我在这里提供的信息可能很困难,但我不知道在哪里可以查看或者其他测试要做什么,所以任何关于它可能是什么或者我可以做什么测试的想法找出真的很感激。

1 个答案:

答案 0 :(得分:0)

我修好了。不幸的是我真的不知道如何:我删除了输出文件夹,重置了一些项目引用,在SQL Express上重新配置了几个东西,重新启动了机器等等。在某些时候,它再次开始正常工作。 在连接时,我仍然无法发现OleDb在31秒内做了什么,但问题现在已经消失(到目前为止)。

感谢您的帮助。