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




