![无法从数据库读取邮件配置信息](https://linux22.com/image/554038/%E6%97%A0%E6%B3%95%E4%BB%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AF%BB%E5%8F%96%E9%82%AE%E4%BB%B6%E9%85%8D%E7%BD%AE%E4%BF%A1%E6%81%AF.png)
最近我更新了 SQL Server 2005 SP4。更新后,来自 Jobs 和 T-SQL 的 DB 邮件都无法正常工作。
引发以下异常。
1) Exception Information =================== Exception Type: Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException
消息:无法从数据库读取邮件配置信息。
数据:System.Collections.ListDictionaryInternal TargetSite:Microsoft.SqlServer.Management.SqlIMail.Server.Objects.Account GetAccount(Int32) HelpLink:NULL 来源:DatabaseMailEngine StackTrace 信息 ===================== 在 Microsoft.SqlServer.Management.SqlIMail.Server.DataAccess.DataAccessAdapter.GetAccount(Int32 accountID) 在 Microsoft.SqlServer.Management.SqlIMail.Server.Controller.CommandFactory.CreateSendMailCommand(DBSession dbSession) 在 Microsoft.SqlServer.Management.SqlIMail.Server.Controller.CommandRunner.Run(DBSession db) 在 Microsoft.SqlServer.Management.SqlIMailProcess.ThreadCallBack.MailOperation(Object o) 2) 异常信息==================== 异常类型:System.IndexOutOfRangeException 消息:超时 数据:System.Collections.ListDictionaryInternal TargetSite:Int32 GetOrdinal(System.String) HelpLink:NULL 来源:System.Data StackTrace 信息 ==================== 在 System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName) 在 System.Data.SqlClient.SqlDataReader.GetOrdinal(String name) 在 System.Data.SqlClient.SqlDataReader.get_Item(String name) 在 Microsoft.SqlServer.Management.SqlIMail.Server.DataAccess.DataAccessAdapter.GetAccount(Int32 accountID)
根据 MSDN,当 ProductVersion 和 ResourceVersion 不同时,必须这样做。然而,经检查,它们两个是相同的。
操作系统 - Windows Server 2008 64 位。SQL Server - SQL Server 2005 64 位,最近已更新至 SP4。DB 邮件已启用。
任何可能的解决方案或解决方法都将受到赞赏。
答案1
此知识库文章似乎暗示这是 SQL Server 2008 SP1 和 2005 SP3 中的一个错误。它尚未更新以包含 SP4。您是否在相对较短的时间内直接从 SP3 升级到 SP4?这种情况可能发生在您安装 SP3 时,但您使用 SP3 的时间不够长而没有注意到。或者您可能已经使用了 SP3 + 包含修复程序的一些 CU,但 SP4 撤消了修复程序。我觉得很奇怪,他们会在两个不同的服务包中导致这个问题,并且没有从中吸取足够的教训,以至于他们在后续的服务包中再次重复了这个问题。
我建议 (a) 卸载服务包以暂时恢复功能,或 (b) 应用SP4 的累积更新 #3查看该修复程序是否已在 SP4 发布后的更新之一中出现(我没有在任何单独的 KB 文章中看到它明确列出,但它们并不总是单独列出)。