设为首页 收藏本站
查看: 816|回复: 0

[经验分享] SQL发邮件

[复制链接]

尚未签到

发表于 2016-11-8 08:03:07 | 显示全部楼层 |阅读模式
  1. 启用 SQL Server 2005 邮件功能。
  use master
go
  exec sp_configure 'show advanced options',1
go
  reconfigure
go
  exec sp_configure 'Database mail XPs',1
go
  reconfigure
go
  2. 在 SQL Server 2005 中添加邮件帐户(account)
  exec msdb..sysmail_add_account_sp
@account_name = 'p.c.w.l' -- 邮件帐户名称(SQL Server 使用)
,@email_address = 'webmaster@sqlstudy.com' -- 发件人邮件地址
,@display_name = null -- 发件人姓名
,@replyto_address = null
,@description = null
,@mailserver_name = '58.215.64.159' -- 邮件服务器地址
,@mailserver_type = 'SMTP' -- 邮件协议(SQL 2005 只支持 SMTP)
,@port = 25 -- 邮件服务器端口
,@username = 'webmaster@sqlstudy.com' -- 用户名
,@password = 'xxxxxxxxx' -- 密码
,@use_default_credentials = 0
,@enable_ssl = 0
,@account_id = null
  3. 在 SQL Server 2005 中添加 profile
  exec msdb..sysmail_add_profile_sp @profile_name = 'dba_profile' -- profile 名称
,@description = 'dba mail profile' -- profile 描述
,@profile_id = null
  4. 在 SQL Server 2005 中映射 account 和 profile
  exec msdb..sysmail_add_profileaccount_sp @profile_name = 'dba_profile' -- profile 名称
,@account_name = 'p.c.w.l' -- account 名称
,@sequence_number = 1 -- account 在 profile 中顺序
  5. 利用 SQL Server 2005 Database Mail 功能发送邮件。
  exec msdb..sp_send_dbmail @profile_name = 'dba_profile' -- profile 名称
,@recipients = 'sqlstudy@163.com' -- 收件人邮箱
,@subject = 'SQL Server 2005 Mail Test' -- 邮件标题
,@body = 'Hello Mail!' -- 邮件内容
,@body_format = 'TEXT' -- 邮件格式
  6. 查看邮件发送情况:
  use msdb
go
  select * from sysmail_allitems
select * from sysmail_mailitems
select * from sysmail_event_log
  如果不是以 sa 帐户发送邮件,则可能会出现错误:
  Msg 229, Level 14, State 5, Procedure sp_send_dbmail, Line 1
EXECUTE permission denied on object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
  这是因为,当前 SQL Server 登陆帐户(login),在 msdb 数据库中没有发送数据库邮件的权限,需要加入 msdb 数据库用户,并通过加入 sp_addrolemember 角色赋予权限。假设该SQL Server 登陆帐户名字为 “dba”
  use msdb
go
  create user dba for login dba
go
  exec dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole',
@membername = 'dba'
go
  此时,再次发送数据库邮件,仍可能有错误:
  Msg 14607, Level 16, State 1, Procedure sp_send_dbmail, Line 119
profile name is not valid
  虽然,数据库用户 “dba” 已经在 msdb 中拥有发送邮件的权限了,但这还不够,他还需要有使用 profile:“dba_profile” 的权限。
  use msdb
go
  exec sysmail_add_principalprofile_sp @principal_name = 'dba'
,@profile_name = 'dba_profile'
,@is_default = 1
  从上面的参数 @is_default=1 可以看出,一个数据库用户可以在多个 mail profile 拥有发送权限。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-297107-1-1.html 上篇帖子: 如何在rails中正确使用MS Sql Server 2000做为数据库服务器(转) 下篇帖子: 数据库设计及维护的一些心得 -- SQL Server篇
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表