实现实时(每隔一分钟检测一次,这个作业功能里可以设置)统计一个表的记录数,如果当天超过一定数量,(比如每天上限1W条符合条件的记录数)就发送邮件报警的作业脚本,本人是新手,希望大家帮忙!!

解决方案 »

  1.   

    主要是不知道添加步骤时候的命令改怎么写 对T-SQL语句不熟悉 谁能举个和这个相关的例子 感激不尽
      

  2.   

    select count(*) from 表
    if @@rowcount>10000
    ...
      

  3.   

    /
    *测试环境: windowx Xp
     OutLook: OutLook 2000
     测试的电子邮件: [email protected]
    /第一步:配置邮件打开OutLook->选择用户企业或工作组
    工具->选项->邮件服务->单击重新配置邮件支持->“用于企业或工作组”
    第二步:配置配置文件名称开始->控制面版->邮件->添加->手工配置信息服务->配置文件名称(SQLSendMailServer)
    ->添加->Internet 电子邮件->确定常规:
    邮件帐户: 126
    姓名: zlp
    单位: zehua
    电子邮件地址: [email protected]
    服务器:
    服务器:(参考个网站邮件设置帮助手册)
    接收邮件(POP3): pop3.126.com
    发送服务器(SMTP):smtp.126.com接收邮件服务器:
    帐户号: zlp321001
    密码:   ****选中"我的服务器要求身份验证"下一步->下一步->完成
    第三步:添加个人文件夹(用于保存临时文件 out2003 不用设置)
    开始->控制面版->邮件->添加->个人文件夹->选择(PST文件)
    第四步:测试是否可以正常发邮件
    第五步:启动SQL服务开始->控制面版->管理工具->服务->启动MSSQLSERVER服务和SQLSERVERAGENT(登录用户均采用域用户名)
    第六步:测试数据库配置文件企业管理器->展开服务器->展开支持服务->SQL邮件->属性->发现"SQLSendMailServer"有这个配置文件名称测试通过第七步:测试程序发送邮件exec master..xp_sendmail '[email protected]', '测试来自数据库发送的邮件'
    exec master..xp_sendmail '[email protected]', '测试来自数据库发送的邮件'
    exec master..xp_sendmail '[email protected]', '测试来自数据库发送的邮件'
    exec master..xp_sendmail '[email protected]', '测试来自数据库发送的邮件'
    测试结果,均从以四个邮箱收到来自"[email protected]"的邮件
      

  4.   

    select  count(*) from  table where reqdate>CONVERT(char(10),getdate(),120)
    if @@rowcount>8000分析报错了
      

  5.   

    --楼主没加发邮件的语句么?
    select  count(*) from  table where reqdate>CONVERT(char(10),getdate(),120)
    if @@rowcount>8000
    exec master..xp_sendmail '[email protected]', '测试来自数据库发送的邮件'
      

  6.   

    exec master..xp_sendmail  这句是什么意思 能不能解释一下
      

  7.   

    xp_sendmail   
      向指定的收件人发送邮件和查询结果集附件。   
        
      语法   
      xp_sendmail   {[@recipients   =]   'recipients   [;...n]'}   
      [,[@message   =]   'message']   
      [,[@query   =]   'query']   
      [,[@attachments   =]   'attachments   [;...n]']   
      [,[@copy_recipients   =]   'copy_recipients   [;...n]'   
      [,[@blind_copy_recipients   =]   'blind_copy_recipients   [;...n]'   
      [,[@subject   =]   'subject']   
      [,[@type   =]   'type']   
      [,[@attach_results   =]   'attach_value']   
      [,[@no_output   =]   'output_value']   
      [,[@no_header   =]   'header_value']   
      [,[@width   =]   width]   
      [   ,   [   @separator   =   ]   'separator'   ]   
      [,[@echo_error   =]   'echo_value']   
      [   ,   [   @set_user   =   ]   'user'   ]   
      [,[@dbuse   =]   'database']
      

  8.   

    我用的是SQL2005 里边有个邮件数据库 我配好了 但是邮件就是发送不出去 日志上说是
    日期 2007-3-27 18:45:51
    日志 数据库邮件 (数据库邮件日志)日志 ID 28
    上次修改时间 2007-3-27 18:45:51
    上次修改者 sa消息
    Invalid XML message format received on the ExternalMailQueue. conversation_handle: 882E4252-50DC-DB11-A5DF-0013726464CC.  message_type_name: {//www.microsoft.com/databasemail/messages}SendMailStatus.  message body: <?xml version="1.0" encoding="utf-8"?>
    <responses:SendMail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.microsoft.com/databasemail/responses ResponseTypes.xsd" xmlns:responses="http://schemas.microsoft.com/databasemail/responses">
      <Information>
        <Failure Message="由于邮件服务器故障,无法将邮件发送给收件人。 (使用帐户 1 (2007-03-27T18:45:51) 发送邮件。 异常邮件: 无法将邮件发送到邮件服务器。 (不允许使用邮箱名称。 服务器响应为: authentication is required,smtp5,wKjRELDr0wSq9QhGxpLFAw==.20752S2 1174992298)。&#xD;&#xA;)" />
      </Information>
      <MailItemId Id="9" />
      <SentStatus Status="3" />
      <SentAccountId Id="0" />
      <SentDate Date="2007-03-27T18:45:51" />
      <CallingProcess Id="3608" />
    </responses:SendMail>
    .
      

  9.   

    sql2005没用过,呵呵,你仔细分析一下吧...
      

  10.   

    不过你可以先试试直接用OUTLOOK发邮件看是不是OUTLOOK的问题
      

  11.   

    正确的语句如下,可以正常调用发邮件的存储过程了,不过那句判断没有起作用,还有发过邮件之后如何跳出作业?use vat
    select  count(*) from table where reqdate>CONVERT(char(10),getdate(),120)
    if @@rowcount>1000
    use vat
    use msdb
    EXEC sp_send_dbmail @profile_name = '1111',
    @recipients = '[email protected]',
    @subject = '邮件测试!',
    @body = '邮件测试成功!'
      

  12.   

    终于搞定了,做个总结,代码如下:
    use vat
    declare @cnt int
    select  @cnt=count( *)  from  table where reqdate>CONVERT (char(10), getdate(), 120)
    if @cnt>10000 begin
    use vat
    --以下是使用MSSQL2005的邮件数据库功能,按微软的提示是只有2005会有这个功能
    use msdb
    EXEC sp_send_dbmail @profile_name = 'test',
    --调用发送邮件的存储过程,登录帐号必须有msdb的datamail权限
    @recipients = [email protected]',
    @subject = '邮件测试',
    @body = '邮件测试成功!' end
      

  13.   

    -调用发送邮件的存储过程,登录帐号必须有msdb的datamail权限sa都不行。
    没有outlook,是指定了数据库邮件的smtp和用户名密码