科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在SQL Server 2005中使用和管理数据库邮件

在SQL Server 2005中使用和管理数据库邮件

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SQL Server 2005中,出现了一种新的邮件子系统──数据库邮件。数据库邮件与早期的的SQL邮件相比较有了很大的改进。

作者:赛迪网 10363 来源:天新网 2008年3月21日

关键字: 数据库 Mssql SQL SQL Server

  • 评论
  • 分享微博
  • 分享邮件

建立个人资料并和账号相联系

在能够发送数据库邮件到一个在账号中鉴别过的SMTP服务器之前,你需要把账号和个人资料联系起来,把访问权授予个人资料。数据库邮件个人资料用来提高邮件安全性。有两种个人资料,公开的和私有的。公开的个人资料任何人都可见,它把访问权授予msdb数据库,是msdb数据库中DatabaseMailUserRole中的成员,而私有的个人资料只可以被授权访问私有个人资料的特定用户使用。一个邮件个人资料能够和一个或多个账号相联系。你可以使用数据库邮件配置向导来管理个人资料,或者使用一些和下面类似的T- SQL命令来建立邮件个人资料:

-- Create a Database Mail profile 
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'Database Administration Profile',
@description = 'Mail Profile for use by DBA processes';

这里我只是创建了一个名为“数据库管理个人资料”的个人资料。现在你仅仅有了一个刚创建的个人资料,并不意味着你能够使用它来发送邮件。你仍然需要把那个个人资料和至少一个数据库邮件账号及msdb数据库里的一个用户联系起来。为了做到这些我可以执行下面的语句:

-- Add the account to the profile 
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'Database Administration Profile',
@account_name = 'Database Administration Account',
@sequence_number =1 ;
-- Grant Access to the profile 
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'Database Administration Profile',
@principal_name = 'ProdServer01',

第一个EXECUTE语句把我的个人资料和一个账号相联系。第二个EXECUTE语句把我的个人资料和‘ProdServer01’msdb数据库用户相联系。这个用户在他们能够发送邮件之前必须是DatabaseMailUserRole中的成员。既然我把个人资料和一个特定用户联系起来,这个个人资料就是一个私有个人资料。要创建一个公共个人资料你需要把个人资料和“公共”数据库角色相联系。

发送数据库邮件

SQL Server提供了存储过程“sp_send_dbmail”来发送邮件。下面的句法用来调用这个存储过程:

sp_send_dbmail [ [ @profile_name = ] 'profile_name' ]
[ , [ @recipients = ] 'recipients [ ; ...n ]' ]
[ , [ @copy_recipients = ] 'copy_recipient [ ; ...n ]' ]
[ , [ @blind_copy_recipients = ] 'blind_copy_recipient [ ; ...n ]' ]
[ , [ @subject = ] 'subject' ]
[ , [ @body = ] 'body' ]
[ , [ @body_format = ] 'body_format' ]
[ , [ @importance = ] 'importance' ]
[ , [ @sensitivity = ] 'sensitivity' ]
[ , [ @file_attachments = ] 'attachment [ ; ...n ]' ]
[ , [ @query = ] 'query' ]
[ , [ @execute_query_database = ] 'execute_query_database' ]
[ , [ @attach_query_result_as_file = ] attach_query_result_as_file ]
[ , [ @query_attachment_filename = ] query_attachment_filename ]
[ , [ @query_result_header = ] query_result_header ]
[ , [ @query_result_width = ] query_result_width ]
[ , [ @query_result_separator = ] 'query_result_separator' ]
[ , [ @exclude_query_output = ] exclude_query_output ]
[ , [ @append_query_error = ] append_query_error ]
[ , [ @query_no_truncate = ] query_no_truncate ]
[ , [ @mailitem_id = ] mailitem_id ] [ OUTPUT ]

正如你所见,这个存储过程支持多个不同的参数。想获取这些参考中每个参数的信息,请参考Books Online。

下面是我如何使用上面创建的私有个人资料来给我发送一封有关自动数据库重索引过程方面的简单的邮件消息的例子。

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Database Administration Profile',
@recipients = 'greg.larsen@databasejournal.com',
@body = 'Reindex database process completed successfully',
@subject = 'Reindex Database' ;
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章