我们对数据访问层 (C#) 和数据库 (MS SQL) 之间的交互进行了一些自动化测试。我们正在使用 SQL Express 挂载一个 mdf,在测试完成后我们将其还原。似乎第一次在新启动的机器上运行测试时,我们会看到超时,即使 SQLExpress 正在运行。第二次,他们运行得很好。
查询字符串示例:
Data Source=.\SQLEXPRESS; AttachDbFilename=|DataDirectory|\TEST_DATA.mdf; Integrated Security=True; User Instance=True
示例错误:
[nunit2] 1) Test : System.Data.SqlClient.SqlException : Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
[nunit2] at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
[nunit2] at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
[nunit2] at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
[nunit2] at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
[nunit2] at System.Data.SqlClient.TdsParserStateObject.ReadPacket(Int32 bytesExpected)
[nunit2] at System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
[nunit2] at System.Data.SqlClient.TdsParserStateObject.ReadByte()
[nunit2] at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
[nunit2] at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
[nunit2] at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
[nunit2] at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
[nunit2] at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
[nunit2] at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
[nunit2] at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
[nunit2] at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
[nunit2] at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
[nunit2] at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
[nunit2] at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
[nunit2] at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
[nunit2] at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
[nunit2] at System.Data.SqlClient.SqlConnection.Open()
[nunit2] at Test()
有没有人经历过这个?你找到解决方法了吗?