【发布时间】:2013-04-09 01:46:03
【问题描述】:
我有以下 VB.Net 控制台应用程序子例程,它从表中读取电子邮件并尝试发送它们,如果发送成功,它将更新与发送时间相同的数据库。
这段代码运行良好,但是我现在收到以下错误:
超时。在操作完成之前超时时间已过或服务器没有响应。
我尝试在管理工作室中单独运行 SQL 脚本,它运行良好。
我也试过验证服务器空间和数据库大小,都很好。
谁能帮忙解决?
Connection(True)
Using comSQL As New SqlCommand("SELECT * FROM Seq_Emails_ToSend", conSQL)
Using dr As SqlDataReader = comSQL.ExecuteReader
While dr.Read
Dim madTO As MailAddressCollection = ConvertStringtoMAD(dr("Email_TO").ToString)
Dim madCC As MailAddressCollection = ConvertStringtoMAD(dr("Email_CC").ToString)
Dim madBCC As MailAddressCollection = ConvertStringtoMAD(dr("Email_BCC").ToString)
Dim isHTML As Boolean = CBool(dr("Email_HTML").ToString)
Dim Priority As MailPriority = CInt(dr("Email_Priority").ToString)
Dim Subject As String = CStr(dr("Email_Subject").ToString)
Dim Body As String = CStr(dr("Email_Body").ToString)
Dim ID As Integer = CInt(dr("Email_ID").ToString)
Dim Status As String
If EmailFile(madTO, madCC, madBCC, "", isHTML, Priority, Subject, Body) Then
Status = "Sent"
Else
Status = "Failed"
End If
Using comSQL2 As New SqlCommand("UPDATE Seq_Emails SET [Status] = @Status, [Date_Sent] = @Date WHERE Email_ID = @ID", conSQL)
comSQL2.Parameters.Add("@ID", SqlDbType.Int).Value = ID
comSQL2.Parameters.Add("@Status", SqlDbType.NVarChar).Value = Status
comSQL2.Parameters.Add("@Date", SqlDbType.DateTime).Value = DateTime.Now
comSQL2.ExecuteNonQuery()
End Using
End While
End Using
End Using
Connection(False)
【问题讨论】:
-
您是否启用了 MARS(多个活动结果集)?
-
嗨对不起,我不知道什么是 MARS 或如何启用它?但是我知道我没有禁用它,并且上面的代码昨天还在工作,并且在过去的几个月里一直在工作。
-
查看你的连接字符串并检查是否有子字符串
MultipleActiveResultSets=True; -
是的 - 这是我在设置中的连接字符串:Data Source=###.###.###.###,4444;Initial Catalog=McD;User ID=Username ;Password=Password;MultipleActiveResultSets=True;连接超时=300;
-
所以我的猜测是错误的
标签: sql-server vb.net