CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

怎么样实现按用户自己定义的时间来执行某一个文件,达到给他发email或者短信的目的?

楼主man2004(梦鱼)2005-06-02 22:34:25 在 MS-SQL Server / 基础类 提问

怎么样实现按用户自己定义的时间来执行某一个文件,达到给他发email或者短信的目的?  
  如果不执行文件,在存储过程或者触发器或什么作业里面可以实现吗?  
  我是菜鸟,希望能提供例子参考下,谢谢! 问题点数:0、回复次数:7Top

1 楼yjdn(人形机器)回复于 2005-06-02 22:49:04 得分 0

MSSQL里本来就有发邮件的功能,你让它执行Windows下的应用程序,那就不行了Top

2 楼man2004(梦鱼)回复于 2005-06-04 00:14:59 得分 0

能具体点或者举个例子吗?Top

3 楼yjdn(人形机器)回复于 2005-06-04 00:20:29 得分 0

朱二(2004.9   转载请注明作者)  
   
   
  通常大家都知道:SQL   Server与Microsoft   Exchange   Server集成性很好,关于这方面的配置,在SQL   Server的联机帮助里有详细的说明,在此不再赘述。然而我们更关心的问题是:在没有Exchange   Server的情况下,如何配置SQL   Server利用Internet   邮件服务器发送邮件?  
  笔者曾为这问题伤透了脑筋,搜遍了互联网上的相关资料,发现仅有的几篇资料中有的是一笔带过,有的虽然介绍了操作步骤,可按照步骤一步一步操作下来,结果总是失败。为此笔者反复实验,终于找到一种简单有效的方法,不敢独自享受,下面是详细的配置步骤,如果您在操作的过程中碰到什么问题,请留言。    
   
  测试环境:  
   
  1   Windows   2000   Server  
  2   SQL   Server   2000+SP3  
  3   Microsoft   Outlook   (Office   2000)  
   
  准备一个Internet邮件帐户:  
  测试电子邮件帐户:test@163.com  
  Smtp服务器   smtp.163.com  
  pop3服务器   pop.163.com  
   
  步骤一:   更改电子邮件配置  
   
  1   打开Microsoft   Outlook   单击“工具”菜单中的“选项”,然后单击“邮件服务”选项卡。  
  2   单击“重新配置邮件支持”。  
  3   选择“用于企业或工作组”选项  
  4   重新启动Microsoft   Outlook  
   
  步骤二:   添加配置文件  
   
  1   单击“工具”菜单中的“服务”,然后单击“添加”按钮。  
  2   选择"Internet   电子邮件",单击“确定”。  
  3   下面的步骤是设置电子邮件帐号,请参考Microsoft   Outlook帮助文件,这里不再赘述。  
  4   利用配置好的电子邮件帐号收发邮件,确认配置成功。  
   
  步骤三:   配置MSSQLSERVER服务采用邮件配置文件  
   
  1   重新启动MSSQLSERVER服务(必须的,否则MSSQLSERVER服务检测不到上一步骤添加的配置文件)  
  2   打开企业管理器->展开服务器->支持服务->右击"邮件"->点击下拉框,你会发现  
  "Microsoft   Outlook   Internet   Settings"选项,点击"测试".如果弹出表示成功的对话框,那恭喜你,已经   大功告成了.  
   
  步骤四:享受你的劳动成果  
   
  1   打开SQL   Server的查询分析器  
   
  2   输入下列SQL语句,执行  
  exec   master..xp_sendmail   'test@163.com','Hello,World!'  
   
  3   好了,去你的邮箱收邮件去吧!    
  Top

4 楼Reaky(Reaky)回复于 2005-06-07 11:50:18 得分 0

xp_sendmail  
      新增信息   -   SQL   Server   2000   SP3。  
   
  向指定的收件人发送邮件和查询结果集附件。  
   
  语法  
  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']  
   
  参数  
  [@recipients   =]   'recipients   [;...n]'  
   
  是以分号分隔的邮件收件人列表。  
   
  n  
   
  是表示可以指定多个   recipient、copy_recipient   或   blind_copy_recipient   的占位符。  
   
  [@message   =]   'message'  
   
  是要发送的邮件。message   最大可达   8.000   个字节。  
   
  [@query   =]   'query'  
   
  是有效的   Microsoft®   SQL   Server™   查询,其结果将通过邮件送出。xp_sendmail   对   query   参数使用绑定连接。SQL   邮件建立的   query   连接不会被发出   xp_sendmail   请求的客户端所控制的锁阻塞。这使   xp_sendmail   更易于在触发器中使用。但是,query   语句不能引用仅在触发器中可用的逻辑   inserted   表和   deleted   表。query   最大可达   8,000   个字节。  
   
  [@attachments   =]   'attachments   [;...n]'  
   
  是以分号分隔的附加到邮件上的文件列表。  
   
  [@copy_recipients   =]   'copy_recipients   [;...n]'  
   
  是以分号分隔的列表,标识邮件复本收件人(抄送人)。  
   
  [@blind_copy_recipients   =]   'blind_copy_recipients   [;...n]'  
   
  是可选的以分号分隔的列表,标识邮件密件复本收件人(密件抄送人)。  
   
  [@subject   =]   'subject'  
   
  是指定邮件主题的可选参数。如果未指定   subject,则默认值为"SQL   Server   消息"。  
   
  [@type   =]   'type'  
   
  是基于以下   MAPI   邮件定义的输入邮件类型:  
   
  IP[M   |   C].Vendorname.subclass  
   
  如果   type   为   NULL,则以   IPM   打头的邮件类型出现在邮件客户端的收件箱中,并由   xp_findnextmsg   查找或阅读。以   IPC   打头的邮件类型不出现在邮件客户程序的收件箱中,并且必须设置   type   参数才能查找或阅读。默认设置为   NULL。  
   
  有关使用自定义邮件类型的更多信息,请参见独立提供的《Microsoft   Windows   NT   Resource   Kit》或《Microsoft   Mail   Technical   Reference》。  
   
  [@attach_results   =]   'attach_value'  
   
  是可选参数,指定查询结果集应作为邮件中的附件文件发送,而不是追加到邮件中发送。如果   attachments   不为   NULL,并且   attach_results   为   true,则   attachments   中的第一个文件名将作为结果集的文件名。如果   attachments   为   NULL,则生成带   .txt   扩展名的文件名。默认值为   FALSE,这意味着结果集将追加到邮件中。  
   
  [@no_output   =]   'output_value'  
   
  是可选参数,用来发送邮件但不向发送邮件的客户端会话返回任何输出。默认值为   FALSE,这意味着   SQL   Server   客户端会话将接收输出。  
   
  [@no_header   =]   'header_value'  
   
  是可选参数,表示通过邮件发送查询结果,但不随查询结果发送列标题信息。默认值为   FALSE,即列标题信息随查询结果一起发送。  
   
  [@width   =]   width  
   
  是可选参数,设置查询的输出文本行宽。此参数与   isql   实用工具中的   /w   参数相同。对于产生长输出行的查询,应结合使用   attach_results   与   width   以发送行中无换行符的输出。默认宽度为   80   个字符。  
   
  [@separator   =]   'separator'  
   
  是结果集中每列的列分隔符字符串。默认情况,列分隔符为空格。使用列分隔符可以使访问电子表格和其它应用程序中的结果集更容易。例如,结合使用   attach_results   与   separator   以发送用逗号分隔值的文件。  
   
  [@echo_error   =]   'echo_value'  
   
  值为   true   时,SQL   邮件将捕获运行查询时遇到的任何服务器消息或   DB-Library   错误,并将其追加到邮件中而不是写入错误日志。同时也将返回行/受影响行的计数追加到邮件中。  
   
   
   
  说明     echo_error   为   true   时,即使出现   DB-Library   错误或消息,或查询没有返回结果,只要邮件成功发送,xp_sendmail   就返回状态   0(成功)。  
   
   
  [@set_user   =]   'user'  
   
  是应在其中运行查询的安全上下文。如果没有指定   user,安全上下文默认为执行   xp_sendmail   的用户的安全上下文。  
   
  [@dbuse   =]   'database'  
   
  是应在其中运行查询的数据库上下文。默认值为   NULL,这意味着将用户置于默认数据库中。  
   
  返回代码值  
  0(成功)或   1(失败)  
   
  结果集  
  xp_sendmail   返回下列消息:  
   
  Mail   sent.  
   
  注释  
  必须在执行   xp_sendmail   前启动   SQL   邮件会话。会话可以自动启动,也可以使用   xp_startmail   启动。有关自动设置   SQL   邮件会话的更多信息,请参见配置邮件配置文件。一个   SQL   邮件会话支持   SQL   Server   上的所有用户,但每次只有一个用户可以发送邮件。其他发送邮件的用户自动排队等候,直到第一个用户的邮件发送出去。  
   
  如果指定   query,则   xp_sendmail   作为客户端登录到   SQL   Server,并执行指定的查询。SQL   邮件建立与   SQL   Server   之间的单独的连接;它不与发出   xp_sendmail   的原始客户端连接共享同一连接。  
   
   
   
  说明     发出   xp_sendmail   的客户端连接所控制的锁会阻塞   query。例如,如果要在事务中更新表,并且为更新创建了触发器,而该触发器试图选择的更新行信息与   query   参数所选择的相同,则   SQL   邮件连接将被初始客户端连接所控制的行排它锁阻塞。  
   
   
  xp_sendmail   在   SQL   Server   的安全上下文(默认为本地管理员帐户)中运行。有效   xp_sendmail   用户可以在管理员安全上下文中访问邮件的附件文件。如果非系统管理员用户必须访问   xp_sendmail,而您希望阻止对附件文件的不安全访问,则系统管理员可以创建一个存储过程,该过程调用   xp_sendmail   并提供所需的功能,但不表现   attachments   参数。此存储过程必须在   master   数据库中定义。然后系统管理员可向必要的用户授予该存储过程的执行权限,但不授予基础   xp_sendmail   过程的权限。  
   
  xp_sendmail   向指定收件人发送邮件、查询结果集或附件,并对   query   参数使用绑定连接。SQL   邮件建立的   query   连接不会被发出   xp_sendmail   请求的客户端所控制的锁阻塞。这使   xp_sendmail   更易于在触发器中使用。但是,query   语句不能引用仅在触发器中可用的逻辑   inserted   和   deleted   表。  
   
   
   
  说明     当邮局和通讯簿位于   MSSQLServer   服务因无足够权限而无法访问的文件共享位置时,试图执行   xp_sendmail   将导致违规访问。  
   
   
  有关使用存储过程调用   xp_sendmail   的更多信息,请参见如何使用   SQL   邮件(Transact-SQL)。    
   
  权限  
  xp_sendmail   的执行权限默认授予   master   数据库中的   db_owner   固定数据库角色的成员以及   sysadmin   固定服务器角色的成员,也可以授予其他用户。但是,出于安全考虑,您应该将此存储过程的权限仅限于   sysadmin   固定服务器角色的成员。  
   
  示例  
  A.   使用不带变量的   xp_sendmail  
  下例向用户   Robert   King(电子邮件地址是   robertk)发送邮件,告知该用户   master   数据库已满。  
   
  EXEC   xp_sendmail   'robertk',   'The   master   database   is   full.'  
   
  B.   使用带变量的   xp_sendmail    
  下例向用户   Robert   King   和   Laura   Callahan(电子邮件地址是   laurac)发送邮件,并将复本发送给   Anne   Dodsworth(电子邮件地址是   anned)和   Michael   Suyama(电子邮件地址是   michaels)。下例还指定了邮件的主题行。  
   
  EXEC   xp_sendmail   @recipients   =   'robertk;laurac',    
        @message   =   'The   master   database   is   full.',  
        @copy_recipients   =   'anned;michaels',  
        @subject   =   'Master   Database   Status'  
   
  C.   发送结果  
  下例将   sp_configure   的结果发送给   Robert   King。  
   
  EXEC   xp_sendmail   'robertk',   @query   =   'sp_configure'  
   
  D.   将结果作为附件文件发送  
  下例将查询   SELECT   *   FROM   INFORMATION_SCHEMA.TABLES   的结果作为文本文件附件发送给   Robert   King。下例包含邮件的主题行以及将在附件之前出现的邮件正文。@width   参数用于防止在输出行中换行。  
   
  EXEC   xp_sendmail   @recipients   =   'robertk',    
        @query   =   'SELECT   *   FROM   INFORMATION_SCHEMA.TABLES',  
        @subject   =   'SQL   Server   Report',  
        @message   =   'The   contents   of   INFORMATION_SCHEMA.TABLES:',  
        @attach_results   =   'TRUE',   @width   =   250  
   
  E.   发送大于   7,990   个字符的邮件  
  下例显示如何发送大于   7,990   个字符的邮件。由于   message   受   varchar   长度的限制(这样每行开销较小,像所有存储过程参数一样),下例将长消息写入由单个文本列组成的全局临时表中。然后使用   @query   参数通过邮件发送该临时表的内容。    
   
  CREATE   TABLE   ##texttab   (c1   text)  
  INSERT   ##texttab   values   ('Put   your   long   message   here.')  
  DECLARE   @cmd   varchar(56)  
  SET   @cmd   =   'SELECT   c1   FROM   ##texttab'  
  EXEC   master.dbo.xp_sendmail   'robertk',    
        @query   =   @cmd,   @no_header=   'TRUE'  
  DROP   TABLE   ##texttab  
   
  Top

5 楼Hopewell_Go(好的在后頭﹗希望更好﹗﹗)回复于 2005-06-07 12:07:42 得分 0

在此學習了。  
   
  其實我最近也是在做自動發送Email。  
  我的實現是和程序結合在一起來的。  
   
  對於時間是在程序裡設置的了Top

6 楼noahroom()回复于 2005-06-23 13:27:05 得分 0

您好:  
  短信收发设备(短信猫)(全国最低价)=580元/台  
  短信软件开发接口(无任何限制)=800元  
  我公司郑重承诺:诺亚短信开发接口与诺亚短信设备(短信猫)无任何绑定限制:即第一次买入后,以后无需再次购买此开发接口,请广大用户在购买时注意咨询,如有疑问,欢迎来电咨询!诺亚短信设备(短信猫)为全国最低价!      
  我公司还供应以下软件产品:  
  ●   诺亚短信开发接口   ●   诺亚短信通群发办公版    
  ●   诺亚短信防伪系统   ●   诺亚短信通群发广告版    
  ●   诺亚短信查询系统   ●   诺亚短信通群发网络版    
  ●   诺亚短信家校通版   ●   诺亚短信易综合版    
  如需了解更多优惠信息,请与我们联系:  
  北京诺亚公司  
  联系人:王先生  
  地     址:北京市海淀区远大路20号鹏安世纪大厦A座12A  
  邮     编:100089      
  电     话:010-87416460,010-51980693      
  传     真:010-51666783      
  邮     箱:beijingsms@126.com      
  QQ     号:397923974      
        MSN:noahsoft@hotmail.com    
  网     址:www.taobaozhe.comTop

7 楼biliboy(我郁闷)回复于 2005-08-08 13:14:08 得分 0

MarkTop

相关问题

  • 请问如何把一个VC可执行文件的MFC图标换成自己定义的图标呢?
  • 头文件定义问题
  • 定义文件关联????
  • 文件的执行
  • 可执行文件
  • 可执行文件
  • 定义了一个包(含一个文件(两个类)),放在同名目录下,编译通过,可执行时报错找不到mainclass
  • 怎样执行可执行文件?
  • vb可执行文件
  • .jar文件的执行?

关键词

  • sql server 2000
  • 邮件
  • sendmail
  • 查询
  • 文件
  • 执行
  • xp
  • 用户
  • 存储过程
  • recipients

得分解答快速导航

  • 帖主:man2004

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo