MS SQL SERVER 2008 Database Mail , sysmail_mailitmes 资料莫名消失.
时间:2011-11-26
来源:互联网
本人所在公司使用的是MS SQL SERVER 2008中的Database Mail 派信,近几天发现有邮件无法派送出去,准备来查派信的log,结果却发现了另外一个严重的问题.
sysmail_log中有些资料行有的mailitem_id,却不存在与 sysmail_mailitems中.
执行以下语句:
SQL code
发现,有些资料行: l.mailitem_id 有值,而 m.mailitem_id 为NULL.
为了该问题,我监控过一段时间这个查询结果的变化,发现一开始运行上面的语句时,同一mailitem_id资料都是存在与三个表中的, l.mailitem_id , m.mailitem_id , r.mailitem_id 都有值,但是过了一段时间(大概几分钟~十多分钟后) l.mailitem_id 有值, m.mailitem_id , r.mailitem_id 却变成了null,
这些mailitem在表sysmail_mailitems 与sysmail_send_retries
被删除了. 而 sysmail_log中却存在.
这是为什么?是由于某个设定吗?
希望了解的人士提供帮助,非常感谢.
(PS:之前有听到一种说法是说发送成功的邮件就会被删除,但是我发现很多发送成功依然存在与三个表中,实在不解了?)
在MSDN发帖三天,无人理会.
http://social.msdn.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/e9ec83f7-33cd-4913-a935-7fcf180d47f8/#6219b3b4-4e4f-4895-a73e-aca2b8edad3e
在stackoverflow发帖半日,无人理会.
http://stackoverflow.com/questions/8275715/the-data-in-sysmail-mailitems-disappeared-with-no-reason-when-i-use-sql-server-2
sysmail_log中有些资料行有的mailitem_id,却不存在与 sysmail_mailitems中.
执行以下语句:
SQL code
SELECT l.mailitem_id , m.mailitem_id , send_request_date , m.sent_status , r.send_attempts FROM dbo.sysmail_log l LEFT JOIN dbo.sysmail_mailitems m ON m.mailitem_id = l.mailitem_id LEFT JOIN dbo.sysmail_send_retries r ON l.mailitem_id = r.mailitem_id WHERE l.event_type = 3
发现,有些资料行: l.mailitem_id 有值,而 m.mailitem_id 为NULL.
为了该问题,我监控过一段时间这个查询结果的变化,发现一开始运行上面的语句时,同一mailitem_id资料都是存在与三个表中的, l.mailitem_id , m.mailitem_id , r.mailitem_id 都有值,但是过了一段时间(大概几分钟~十多分钟后) l.mailitem_id 有值, m.mailitem_id , r.mailitem_id 却变成了null,
这些mailitem在表sysmail_mailitems 与sysmail_send_retries
被删除了. 而 sysmail_log中却存在.
这是为什么?是由于某个设定吗?
希望了解的人士提供帮助,非常感谢.
(PS:之前有听到一种说法是说发送成功的邮件就会被删除,但是我发现很多发送成功依然存在与三个表中,实在不解了?)
在MSDN发帖三天,无人理会.
http://social.msdn.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/e9ec83f7-33cd-4913-a935-7fcf180d47f8/#6219b3b4-4e4f-4895-a73e-aca2b8edad3e
在stackoverflow发帖半日,无人理会.
http://stackoverflow.com/questions/8275715/the-data-in-sysmail-mailitems-disappeared-with-no-reason-when-i-use-sql-server-2
作者: Lost_Painting 发布时间: 2011-11-26
我先占个sf,理会一下
作者: Beirut 发布时间: 2011-11-26
sysmail_event_log 能看到什么
作者: ssp2009 发布时间: 2011-11-26
建議可以直接查詢mail server上的日誌,
應該有更詳細的信息, 無法派送也可能是mail server或網絡問題,
也可能是對方的郵件服務器把你方mail server設為黑名單之類的.
應該有更詳細的信息, 無法派送也可能是mail server或網絡問題,
也可能是對方的郵件服務器把你方mail server設為黑名單之類的.
作者: ap0405140 发布时间: 2011-11-26
这个是 视图
sysmail_event_log
的源代码:
SQL code
它其实是来源于sysmail_log的.其加了权限限制... 或者资料存在性检查.
sysmail_log看不到的,它也看不到.sysmail_log能看到的,它也不一定能看到...
sysmail_event_log
的源代码:
SQL code
SET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON GO CREATE VIEW sysmail_event_log AS SELECT log_id, CASE event_type WHEN 0 THEN 'success' WHEN 1 THEN 'information' WHEN 2 THEN 'warning' ELSE 'error' END as event_type, log_date, description, process_id, sl.mailitem_id, account_id, sl.last_mod_date, sl.last_mod_user FROM [dbo].[sysmail_log] sl WHERE (ISNULL(IS_SRVROLEMEMBER(N'sysadmin'), 0) = 1) OR (EXISTS ( SELECT mailitem_id FROM [dbo].[sysmail_allitems] ai WHERE sl.mailitem_id = ai.mailitem_id )) GO
它其实是来源于sysmail_log的.其加了权限限制... 或者资料存在性检查.
sysmail_log看不到的,它也看不到.sysmail_log能看到的,它也不一定能看到...
作者: Lost_Painting 发布时间: 2011-11-26
"建議可以直接查詢mail server上的日誌"
sysmail_log这个就是mail server的日志.
"無法派送也可能是mail server或網絡問題,"
一些邮件发送失败,我确定是网络问题,造成邮件无法发送.
但是即使邮件无法发送,也不应该删除掉sysmail_mailitems表中的资料,这不符合逻辑.
既然log表中有,而又无法确定是否发送失败的,还删除?这样的话,如何追踪问题..?
sysmail_log这个就是mail server的日志.
"無法派送也可能是mail server或網絡問題,"
一些邮件发送失败,我确定是网络问题,造成邮件无法发送.
但是即使邮件无法发送,也不应该删除掉sysmail_mailitems表中的资料,这不符合逻辑.
既然log表中有,而又无法确定是否发送失败的,还删除?这样的话,如何追踪问题..?
引用 3 楼 ap0405140 的回复:
建議可以直接查詢mail server上的日誌,
應該有更詳細的信息, 無法派送也可能是mail server或網絡問題,
也可能是對方的郵件服務器把你方mail server設為黑名單之類的.
建議可以直接查詢mail server上的日誌,
應該有更詳細的信息, 無法派送也可能是mail server或網絡問題,
也可能是對方的郵件服務器把你方mail server設為黑名單之類的.
作者: Lost_Painting 发布时间: 2011-11-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28