SQL Server 并没有内置邮件服务器(Mail Server),它跟我们发送邮件一样,需要用户名和密码通过 SMTP(Simple Message Transfer Protocol)去连接邮件服务器。我们想让 SQL Server 来发送邮件,首先要告诉它用户名称,密码,服务器地址,网络传送协议,邮件服务器的端口。。。等信息。
以下脚本实现了数据库邮件的配置:
--下面是具体的配置邮件步骤
--在 sa 系统帐户下运行。
--
--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
= 'jgj'
-- 邮件帐户名称(SQL Server 使用)
,@email_address
= [email='jiaguijun@trusee.com']'jiaguijun@trusee.com'[/email]
-- 发件人邮件地址
,@display_name
= null
-- 发件人姓名
,@replyto_address
= null
,@description
= null
,@mailserver_name
= '203.86.70.229'
-- 邮件服务器地址
,@mailserver_type
= 'SMTP'
-- 邮件协议(SQL 2005 只支持 SMTP)
,@port
= 25
-- 邮件服务器端口
,@username
= [email='jiaguijun@trusee.com']'jiaguijun@trusee.com'[/email]
-- 用户名
,@password
= 'xxxxxx'
-- 密码
,@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
-- 在 SQL Server 2005 中映射 account 和 profile
exec msdb..sysmail_add_profileaccount_sp
@profile_name
= 'dba_profile'
-- profile 名称
,@account_name
= 'jgj'
-- account 名称
,@sequence_number
= 1
-- account 在 profile 中顺序
--5. 利用 SQL Server 2005 Database Mail 功能发送邮件。
exec msdb..sp_send_dbmail
@profile_name
= 'dba_profile'
-- profile 名称
,@recipients
= [email='jiaguijun@trusee.com']'jiaguijun@trusee.com'[/email]
-- 收件人邮箱
,@subject
= 'SQL Server 2005 Mail 测试'
-- 邮件标题
,@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 拥有发送权限。
<wbr></wbr>
查看配置情况:
SELECT * FROM sys.credentials
SELECT * FROM msdb.dbo.sysmail_profileaccount
SELECT * FROM msdb.dbo.sysmail_account
手工删除配置:
EXEC dbo.sysmail_delete_profileaccount_sp @profile_id = 1, -- int,根据需要更改,以下相同
@profile_name = NULL, -- sysname
@account_id = 1, -- int
@account_name = NULL -- sysname
EXEC dbo.sysmail_delete_profile_sp @profile_id = 1, -- int
@profile_name = 'dba_profile', -- sysname
@force_delete = NULL -- bit
EXEC dbo.sysmail_delete_account_sp @account_id = 1, -- int
@account_name = 'jgj' -- sysname
也可以通过企业管理器里面的"管理"---"数据库邮件"来进行图形化配置
发邮件的几种语句:
use mdsb
--基本的发送语句
EXEC sp_send_dbmail @profile_name = 'xx_adam',
@recipients = 'xx_adam@263.com',
@subject = '我数据库邮件测试成功了!',
@body = 'hello,world!'
--包含查询的
EXEC sp_send_dbmail @profile_name = 'xx_adam',
@recipients = 'xx_adam@263.com',
@subject = '查询结果',
@query = 'select * from demo.dbo.orders',
--包含附件
EXEC sp_send_dbmail @profile_name = 'xx_adam',
@recipients = 'xx_adam@263.com',
@subject = '包含附件',
@body = '有附件,请查收',
@file_attachments = 'c:a.txt'
--将查询作为附件
EXEC sp_send_dbmail @profile_name = 'xx_adam',
@recipients = 'xx_adam@263.com',
@subject = '查询结果',
@body = '查询结果在附件中',
@query = 'select * from demo.dbo.orders',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'a.txt'
相关推荐
有些人配置了数据库邮件但仍然发送失败,其中有个环节被忽略了,这个文档里有说明。
如果不得不将默认的电子邮件客户程序更改为 Outlook Express 以外的客户程序,那么,可能需要先验证 "SQL 邮件 "能够用邮件配置文件启动,然后再停止并重新启动 MSSQLServer 服务。 在有些情况下,邮件的配置文件...
共享我配置的步骤,如果读者配置中遇到困难,可以一起交流。我会完善我的文档。
SQL SERVER数据库邮件配置脚本,更改参数即可轻松配置数据库邮件
C# 密码验证 密码强弱验证 javascrpt实现 C# 密码验证 密码强弱验证 javascrpt实现
配置database mail后测试邮件正常,但job执行失败后不发邮件的解决办法
SQL SERVER 数据库邮件配置操作文档
讲解SQL Server 2005数据库邮件的配配置方法。很详细
在 SQL Server 2005 中配置数据库邮件 适合发送提醒邮件 欢迎访问http://121.18.78.216
SQLServer数据库邮件配置及自动任务邮件.docx
SQL server 2008 中,邮件的配置。
SQL Server 2012 配置数据库邮件
Excel服务器标准版SQL server 2000邮件配置方法 一,配置sql server 2000服务: 二, OutLook2003配置: 三,配置SQL SERVER邮件 要注意的几个问题
在SQLServer2005中配置数据库邮件[归纳].pdf
SqlServer2005配置数据库邮件[归纳].pdf
共享我配置的步骤,如果读者配置中遇到困难,可以一起交流。
SQL Server 2008 通过配置数据库邮件实现发送邮件功能.doc
SQL Server 2005中提供配置文件,允许用户自定义自己语言、甚至与本行业、本企业的检索干扰词。 (4)词干分析器(Stemmer):通过断字符分割后,根据具体的语言和该语言的语法规程生成的特定词汇的变形。 这个即...
网上提供了很多sqlserver发送邮件的文章,转载居多,大部分介绍win2000+outlook2003环境,在操作系统...第一步:建配置文件开始->控制面版->邮件>双击邮件->添加->配置文件名称(mySqlFile)添加新电子邮件帐户->选择POP
SQLServer2008-建立邮件报警机制-配置手册[归纳].pdf