


SQL Server 2005使用管理数据库邮件
本文将要讨论建立和管理数据库邮件。
什么是数据库邮件?
数据库邮件是一个邮件队列系统。电子邮件消息存储在msdb数据库里的队列中等待被处理。当一个电子邮件消息到达队列时,将会触发一个外部过程来把队列中的这个消息送到合适的邮件服务器端。邮件一旦被发送,一个装有邮递状态的电子邮件消息就会被邮递回SQL Server。
打开数据库邮件功能项
数据库邮件在模块之外是不可用的。由于SQL Server安全模型缺省把所有选项都关闭了,如果你要想使用它的话就需要使能数据库邮件。你可以使用表面区域配置工具,或者用下面的T-SQL来使能数据库邮件:
sp_configure'showadvancedoptions',1;
GO
RECONFIGURE;
GO
sp_configure'DatabaseMailXPs',1;
GO
RECONFIGURE
GO
建立账号
数据库邮件账号鉴别SQL Server 2005应该如何和SMTP服务器进行通信。这个账号具体说明了电子邮件如何被格式化和发送的。单一的账号将会鉴别单一的SMTP服务器和认证方法。数据库邮件所使用的账号不和SQL Server登录账号相对应。
当建立一个账号时你需要鉴别足够的信息以便使SQL Server 2005能够和SMTP服务器通讯,如果需要的话还要认证。可以参考Books Online获取定义账号的完整选项列表。你可以使用数据库邮件配置向导来建立账号,向导可以在SQL Server Management Studio里的“管理”文件夹“数据库邮件”下找到,或者使用存储过程(SP)“sysmail_add_account_sp”。这里有一个脚本使用了上面提到的存储过程来创建一个和不需要认证的SMTP服务器相通信的账号。
EXECUTEmsdb.dbo.sysmail_add_account_sp
@account_name='DatabaseAdministrationAccount',
@deion='MailaccountforusedbyDBAstaff',
@email_address='ProdServer01@databasejournal.com',
@display_name='ProdServer01DBAMail',
@replyto_address='Greg.Larsen@databasejournal.com',
@mailserver_name='mailserver.databasejournal.com';
这个账号名为“数据库管理账号”,邮件地址为ProdServer01@databasejournal.com。使用数据库邮件的优点之一就是这个邮件地址不必再是你邮件系统中的一个有效的邮件账号。除此之外,你可以把回复地址和你的数据库邮件账号联系起来。在上面的例子中,我定义了Greg.Larsen@databasejournal.com作为回复地址。所以现在,当某人从我的自动邮件通知处理得到一封邮件时,他们可以回复,这个回复邮件能直接发送到我这里。
有了数据库邮件,你就可以根据你的需要尽可能多地建立邮件账号。一会儿,我将讨论你需要建立多个数据库邮件账号的原因。
建立个人资料并和账号相联系
在能够发送数据库邮件到一个在账号中鉴别过的SMTP服务器之前,你需要把账号和个人资料联系起来,把访问权授予个人资料。数据库邮件个人资料用来提高邮件安全性。有两种个人资料,公开的和私有的。公开的个人资料任何人都可见,它把访问权授予msdb数据库,是msdb数据库中DatabaseMailUserRole中的成员,而私有的个人资料只可以被授权访问私有个人资料的特定用户使用。一个邮件个人资料能够和一个或多个账号相联系。你可以使用数据库邮件配置向导来管理个人资料,或者使用一些和下面类似的T-SQL命令来建立邮件个人资料:
--CreateaDatabaseMailprofile
EXECUTEmsdb.dbo.sysmail_add_profile_sp
@profile_name='DatabaseAdministrationProfile',
@deion='MailProfileforusebyDBAprocesses';
这里我只是创建了一个名为“数据库管理个人资料”的个人资料。现在你仅仅有了一个刚创建的个人资料,并不意味着你能够使用它来发送邮件。你仍然需要把那个个人资料和至少一个数据库邮件账号及msdb数据库里的一个用户联系起来。为了做到这些我可以执行下面的语句:
--Addtheaccounttotheprofile
EXECUTEmsdb.dbo.sysmail_add_profileaccount_sp
@profile_name='DatabaseAdministrationProfile',
@account_name='DatabaseAdministrationAccount',
@sequence_number=1;
--Grantaccesstotheprofile
EXECUTEmsdb.dbo.sysmail_add_principalprofile_sp
@profile_name='DatabaseAdministrationProfile',
@principal_name='ProdServer01',
第一个EXECUTE语句把我的个人资料和一个账号相联系。第二个EXECUTE语句把我的个人资料和‘ProdServer01’msdb数据库用户相联系。这个用户在他们能够发送邮件之前必须是DatabaseMailUserRole中的成员。既然我把个人资料和一个特定用户联系起来,这个个人资料就是一个私有个人资料。要创建一个公共个人资料你需要把个人资料和“公共”数据库角色相联系。
发送数据库邮件
SQL Server提供了存储过程“sp_send_dbmail”来发送邮件。下面的句法用来调用这个存储过程:
关键字:SQL Server、数据库、存储过程
新文章:
- CentOS7下图形配置网络的方法
- CentOS 7如何添加删除用户
- 如何解决centos7双系统后丢失windows启动项
- CentOS单网卡如何批量添加不同IP段
- CentOS下iconv命令的介绍
- Centos7 SSH密钥登陆及密码密钥双重验证详解
- CentOS 7.1添加删除用户的方法
- CentOS查找/扫描局域网打印机IP讲解
- CentOS7使用hostapd实现无AP模式的详解
- su命令不能切换root的解决方法
- 解决VMware下CentOS7网络重启出错
- 解决Centos7双系统后丢失windows启动项
- CentOS下如何避免文件覆盖
- CentOS7和CentOS6系统有什么不同呢
- Centos 6.6默认iptable规则详解