微软BI开拓者数据库专区SQL Server开发 有没有人搞过 数据库邮件 (MSSQL 2005)

1  /  2  页   12 跳转 查看:11767

有没有人搞过 数据库邮件 (MSSQL 2005)

有没有人搞过 数据库邮件 (MSSQL 2005)

如题,不知我是用C#实现好些,还是用SQL 实现好些.
如果用MSSQLSERVER 2005 各位有没有做过的试用代码?
 

回复: 有没有人搞过 数据库邮件 (MSSQL 2005)

SQL SERVER 2005的数据库邮件,使用存储过程直接发送就可以。
能详细说明一下你的具体问题?
 

回复: 有没有人搞过 数据库邮件 (MSSQL 2005)

想做一个小型OA,然后对其中的事务按要求发邮件通知相应的人员,但是好像在C#中要做后台服务才能实现,想通过计划任务调用SQL 来定时运行check 程序,如果有通知就发送邮件出去。


只是一个想法,非工作需要!
中国数据库联盟 :http://cndba.5d6d.com
 

回复: 有没有人搞过 数据库邮件 (MSSQL 2005)

你的想法可行

使用msdb.dbo.sp_send_dbmail等存储过程即可。
 

回复: 有没有人搞过 数据库邮件 (MSSQL 2005)

向指定收件人发送电子邮件。该邮件可能包含查询结果集和/或文件附件。将邮件成功放入数据库邮件队列中后,sp_send_dbmail 将返回消息的 mailitem_id。此存储过程位于 msdb 数据库中。
[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/Local_1811369164_topic_link.gif[/img] [url=ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/35fbcf7f-8b55-46cd-a957-9b8c7b311241.htm]Transact-SQL 语法约定[/url]
[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]语法
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 ]


[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]备注使用前,必须使用数据库邮件配置向导、SQL Server 外围应用配置器工具或 sp_configure 启用数据库邮件。
sysmail_stop_sp 通过停止外部程序使用的 Service Broker 对象来停止数据库邮件。使用 sysmail_stop_sp 停止数据库邮件后,sp_send_dbmail 仍会接受邮件。若要启动数据库邮件,请使用 sysmail_start_sp。
如果未指定 @profile,sp_send_dbmail 会使用默认配置文件。如果发送电子邮件的用户具有默认专用配置文件,则数据库邮件使用该配置文件。如果该用户没有默认的专用配置文件,则 sp_send_dbmail 将使用默认的公共配置文件。如果用户没有默认的专用配置文件和默认的公共配置文件,则 sp_send_dbmail 将返回错误。
sp_send_dbmail 不支持没有任何内容的电子邮件。若要发送电子邮件,至少必须指定 @body、@query、@file_attachments 或 @subject 之一。否则,sp_send_dbmail 会返回错误。
数据库邮件使用当前用户的 Microsoft Windows 安全上下文控制对文件的访问。因此,经过 SQL Server 身份验证的用户无法使用 @file_attachments 附加文件。请注意,Windows 不允许 SQL Server 从一台远程计算机向另一台远程计算机提供凭据。所以,如果从运行 SQL Server 的计算机以外的计算机运行该命令,则数据库邮件可能无法从网络共享附加文件。
如果已同时指定 @query 和 @file_attachments 且未找到文件,则查询仍然会执行,但是不会发送电子邮件。
指定查询后,结果集的格式被设置为内联文本。使用十六进制格式发送结果中的二进制数据。
参数 @recipients、@copy_recipients 和 @blind_copy_recipients 是以分号分隔的电子邮件地址列表。至少必须提供以上参数之一,否则 sp_send_dbmail 会返回错误。

[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]参数[ @profile_name = ] 'profile_name' 发送邮件的配置文件的名称。profile_name 的类型为 sysname,默认值为 NULL。profile_name 必须是现有数据库邮件配置文件的名称。如果未指定 profile_name,则 sp_send_dbmail 使用当前用户的默认专用配置文件。如果该用户没有默认专用配置文件,sp_send_dbmail 会使用 msdb 数据库的默认公共配置文件。如果用户没有默认的专用配置文件,而且数据库也没有默认的公共配置文件,则必须指定 @profile_name。
[ @recipients = ] 'recipients' 要向其发送邮件的电子邮件地址列表,以分号分隔。收件人列表的类型为 varchar(max)。虽然此参数是可选参数,但是必须至少指定 @recipients、@copy_recipients 或 @blind_copy_recipients 中的一个,否则 sp_send_dbmail 将返回错误。
[ @copy_recipients = ] 'copy_recipients' 要向其抄送邮件的电子邮件地址列表,以分号分隔。抄送件收件人列表的类型为 varchar(max)。虽然此参数是可选参数,但是必须至少指定 @recipients、@copy_recipients 或 @blind_copy_recipients 中的一个,否则 sp_send_dbmail 将返回错误。
[ @blind_copy_recipients = ] 'blind_copy_recipients' 要向其密件抄送邮件的电子邮件地址列表,以分号分隔。密件副本收件人列表的类型为 varchar(max)。虽然此参数是可选参数,但是必须至少指定 @recipients、@copy_recipients 或 @blind_copy_recipients 中的一个,否则 sp_send_dbmail 将返回错误。
[ @subject = ] 'subject' 电子邮件的主题。主题的类型为 nvarchar(255)。如果未指定主题,则默认为 SQL Server Message。
[ @body = ] 'body' 电子邮件的正文。邮件正文的类型为 nvarchar(max),默认值为 NULL。
[ @body_format = ] 'body_format' 邮件正文的格式。该参数的类型为 varchar(20),默认值为 NULL。如果已指定,则待发邮件的标头设置会指示邮件正文具有指定格式。该参数可能包含下列值之一:
  • TEXT
  • HTML
默认为 TEXT。
[ @importance = ] 'importance' 邮件的重要性。该参数的类型为 varchar(6)。该参数可能包含下列值之一:
  • Low
  • Normal
  • High
默认值为 Normal。
[ @sensitivity = ] 'sensitivity' 邮件的敏感度。该参数的类型为 varchar(12)。该参数可能包含下列值之一:
  • Normal
  • Personal
  • Private
  • Confidential
默认值为 Normal。
[ @file_attachments = ] 'file_attachments', 电子邮件附件的文件名列表,以分号分隔。必须使用绝对路径指定列表中的文件。附件列表的类型为 nvarchar(max)。
[ @query = ] 'query' 要执行的查询。查询结果可以作为文件附加,或包含在电子邮件的正文中。查询的类型为 nvarchar(max),并且可以包含任何有效的 Transact-SQL。请注意,查询在单独的会话中执行,所以调用 sp_send_dbmail 的脚本中的局部变量不可用于查询。
[ @execute_query_database = ] 'execute_query_database' 存储过程在其中运行查询的数据库上下文。该参数的类型为 sysname,默认为当前数据库。只有在指定 @query 时,此参数才适用。
[ @attach_query_result_as_file = ] attach_query_result_as_file 指定查询结果集是否作为附件返回。attach_query_result_as_file 的数据类型为 bit,默认值为 0。
如果该值为 0,查询结果包含在电子邮件的正文中,在 @body 参数的内容之后。如果该值为 1,结果作为附件返回。只有在指定 @query 时,此参数才适用。
[ @query_attachment_filename = ] query_attachment_filename 指定查询结果集附件使用的文件名。query_attachment_filename 的数据类型为 nvarchar(255),默认值为 NULL。如果 attach_query_result 为 0,则忽略此参数。如果 attach_query_result 为 1 且此参数为 NULL,则数据库邮件会创建任意文件名。
[ @query_result_header = ] query_result_header 指定查询结果是否包含列标题。query_result_header 值的数据类型为 bit。如果该值为 1,则查询结果包含列标题。如果该值为 0,则查询结果不包含列标题。该参数的默认值为 1。只有在指定 @query 时,此参数才适用。
[ @query_result_width = ] query_result_width 用于设置查询结果的格式的线条宽度(字符)。query_result_width 的数据类型为 int,默认值为 256。提供的值必须介于 10 到 32767 之间。只有在指定 @query 时,此参数才适用。
[ @query_result_separator = ] 'query_result_separator' 用于分隔查询输出中的列的字符。分隔符的类型为 char(1)。默认为 ' '(空格)。
[ @exclude_query_output = ] exclude_query_output 指定是否使用电子邮件返回查询执行的输出。exclude_query_output 的数据类型为 bit,默认值为 0。当此参数为 0 时,sp_send_dbmail 存储过程的执行将在控制台上打印作为查询执行结果而返回的消息。当此参数为 1 时,sp_send_dbmail 存储过程的执行不会在控制台上打印任何查询执行消息。
[ @append_query_error = ] append_query_error 指定是否在 @query 参数中指定的查询返回错误时发送电子邮件。exclude_query_output 的数据类型为 bit,默认值为 0。如果该参数的值为 1,数据库邮件会发送电子邮件,并将查询错误消息包含在电子邮件的正文中。如果该参数的值为 0,数据库邮件不发送电子邮件,sp_send_dbmail 在结束时会返回代码 1,表示失败。
[ @query_no_truncate = ] query_no_truncate 指定是否使用可避免截断大型可变长度数据类型(varchar(max)、nvarchar(max)、varbinary(max)、xml、text、ntext、image 以及用户定义数据类型)的选项执行查询。设置该选项后,查询结果将不包含列标题。query_no_truncate 值的数据类型为 bit。当该值为 0 或未指定时,查询中的列截断为 256 个字符。当该此值为 1 时,不截断查询中的列。该参数的默认值为 0。
[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/note.gif[/img]注意:
与大量数据一起使用时,query_no_truncate 选项会占用其他资源,并可降低服务器的性能。


[ @mailitem_id = ] mailitem_id [ OUTPUT ] 可选输出参数将返回消息的 mailitem_id。mailitem_id 的数据类型为 int。

[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]返回代码值0(成功)或 1(失败)

[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]结果集成功时,返回消息 Mail queued。

[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]权限默认情况下,msdb 数据库中的 DatabaseMailUser 数据库角色的所有成员对 sp_send_dbmail 都有执行权限。不过,如果发送邮件的用户不具有使用该请求的配置文件的权限,sp_send_dbmail 会返回错误且不发送该邮件。

[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]示例A. 发送电子邮件此示例使用电子邮件地址 danw@Adventure-Works.com 向 Dan Wilson 发送电子邮件。该邮件的主题为 Automated Success Message。邮件正文包含一句话 'The stored procedure finished successfully'。
[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/copycode.gif[/img]复制代码
EXEC msdb.dbo.sp_send_dbmail    @profile_name = 'AdventureWorks Administrator',    @recipients = 'danw@Adventure-Works.com',    @body = 'The stored procedure finished successfully.',    @subject = 'Automated Success Message' ;


B. 发送包含查询结果的电子邮件此示例使用电子邮件地址 danw@Adventure-Works.com 向 Dan Wilson 发送电子邮件。该邮件的主题为 Work Order Count,并执行查询以显示 DueDate 在 2004 年 4 月 30 日后的两日内的工单数。数据库邮件将该结果附加为文本文件。
[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/copycode.gif[/img]复制代码
EXEC msdb.dbo.sp_send_dbmail    @profile_name = 'AdventureWorks Administrator',    @recipients = 'danw@Adventure-Works.com',    @query = 'SELECT COUNT(*) FROM AdventureWorks.Production.WorkOrder                  WHERE DueDate > ''2004-04-30''                  AND  DATEDIFF(dd, ''2004-04-30'', DueDate) < 2' ,    @subject = 'Work Order Count',    @attach_query_result_as_file = 1 ;


A. 发送 HTML 电子邮件此示例使用电子邮件地址 danw@Adventure-Works.com 向 Dan Wilson 发送电子邮件。邮件的主题为 Work Order List,并包含一个 HTML 文档,其中列出 DueDate 在 2004 年 4 月 30 日后的二日内的工单。数据库邮件使用 HTML 格式发送该邮件。
[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/copycode.gif[/img]复制代码
DECLARE @tableHTML  NVARCHAR(MAX) ;SET @tableHTML =    N'<H1>Work Order Report</H1>' +    N'<table border="1">' +    N'<tr><th>Work Order ID</th><th>Product ID</th>' +    N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' +    N'<th>Expected Revenue</th></tr>' +    CAST ( ( SELECT td = wo.WorkOrderID,      '',                    td = p.ProductID, '',                    td = p.Name, '',                    td = wo.OrderQty, '',                    td = wo.DueDate, '',                    td = (p.ListPrice - p.StandardCost) * wo.OrderQty              FROM AdventureWorks.Production.WorkOrder as wo              JOIN AdventureWorks.Production.Product AS p              ON wo.ProductID = p.ProductID              WHERE DueDate > '2004-04-30'                AND DATEDIFF(dd, '2004-04-30', DueDate) < 2              ORDER BY DueDate ASC,                      (p.ListPrice - p.StandardCost) * wo.OrderQty DESC              FOR XML PATH('tr'), TYPE    ) AS NVARCHAR(MAX) ) +    N'</table>' ;EXEC msdb.dbo.sp_send_dbmail @recipients='danw@Adventure-Works.com',    @subject = 'Work Order List',    @body = @tableHTML,    @body_format = 'HTML' ;



[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]请参阅参考[url=ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/3bdb0e6d-9d09-465e-9a3f-7a8ccd53aca8.htm]数据库邮件和 SQL 邮件存储过程 (Transact-SQL)[/url]
[url=ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/a583c087-bdb3-46d2-b9e5-3921b3e6d10b.htm]sp_addrolemember (Transact-SQL)[/url]
其他资源数据库邮件
数据库邮件配置文件

帮助和信息获取 SQL Server 2005 帮助
中国数据库联盟 :http://cndba.5d6d.com
 

回复: 有没有人搞过 数据库邮件 (MSSQL 2005)

使用数据库邮件配置向导或数据库邮件存储过程来创建数据库邮件公共配置文件。公共配置文件允许有权访问 msdb 数据库的任意用户使用该配置文件发送电子邮件。
[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/udb9/local/collapse.gif[/img]使用 Transact-SQL 创建数据库邮件公共配置文件
  • 为配置文件创建一个或多个数据库邮件帐户。有关创建数据库邮件帐户的详细信息,请参阅[url=ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/udb9/html/c07abbc6-fc6a-470b-8fa3-532f2e06b16a.htm]如何创建数据库邮件帐户 (Transact-SQL)[/url]。
  • 执行存储过程 msdb.dbo.sysmail_add_profile_sp 以创建配置文件,要指定以下内容:
    • 要创建的配置文件的名称。
    • 配置文件的说明(可选)。
  • 对每个帐户执行 msdb.dbo.sysmail_add_profileaccount_sp,以将帐户添加到配置文件中。
  • 通过执行 msdb.sysmail_add_principalprofile_sp,并以 'public' 作为 @principal_name 或以 0 作为 @principal_id,授予对配置文件的公共访问权限。

[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/udb9/local/collapse.gif[/img]示例以下示例将创建一个数据库邮件帐户和数据库邮件配置文件。然后,将帐户添加到配置文件中,并为 msdb 数据库中的所有用户授予对该配置文件的访问权限。
[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/udb9/local/copycode.gif[/img]复制代码
-- Create a Database Mail accountEXECUTE msdb.dbo.sysmail_add_account_sp    @account_name = 'AdventureWorks Public Account',    @description = 'Mail account for use by all database users.',    @email_address = 'db_users@Adventure-Works.com',    @replyto_address = 'danw@Adventure-Works.com',    @display_name = 'AdventureWorks Automated Mailer',    @mailserver_name = 'smtp.Adventure-Works.com' ;-- Create a Database Mail profileEXECUTE msdb.dbo.sysmail_add_profile_sp    @profile_name = 'AdventureWorks Public Profile',    @description = 'Profile used for administrative mail.' ;-- Add the account to the profileEXECUTE msdb.dbo.sysmail_add_profileaccount_sp    @profile_name = 'AdventureWorks Public Profile',    @account_name = 'AdventureWorks Public Account',    @sequence_number =1 ;-- Grant access to the profile to all users in the msdb databaseEXECUTE msdb.dbo.sysmail_add_principalprofile_sp    @profile_name = 'AdventureWorks Public Profile',    @database_name = 'msdb',    @principal_name = 'public',    @is_default = 1 ;
中国数据库联盟 :http://cndba.5d6d.com
 

回复: 有没有人搞过 数据库邮件 (MSSQL 2005)

sysmail_add_account_sp  [ @account_name = ] 'account_name' ,    [ @email_address = ] 'email_address' ,    [ [ @display_name = ] 'display_name' , ]    [ [ @replyto_address = ] 'replyto_address' , ]    [ [ @description = ] 'description' , ]    [ @mailserver_name = ] 'server_name'    [ , [ @mailserver_type = ] 'server_type' ]    [ , [ @port = ] port_number ]    [ , [ @username = ] 'username' ]    [ , [ @password = ] 'password' ]    [ , [ @use_default_credentials = ] use_default_credentials ]    [ , [ @enable_ssl = ] enable_ssl ]    [ , [ @account_id = ] account_id OUTPUT ]  数据库邮件为 @email_address、@display_name 和 @replyto_address 提供单独的参数。@email_address 参数为发件人地址。@display_name 参数是在电子邮件的“发件人:”字段中显示的名称。@replyto_address 参数是接收电子邮件回复的地址。例如,一个用于 SQL Serve 代理的帐户发送邮件的电子邮件地址,可能是仅用于 SQL Serve 代理的电子邮件地址。来自该地址的邮件应显示友好名称,以便收件人可以轻松确定 SQL Server 代理发来的邮件。如果收件人回复该邮件,则回复应发送给数据库管理员,而不是 SQL Serve 代理使用的地址。在此情况下,该帐户将使用 SqlAgent@Adventure-Works.com 作为电子邮件地址。显示名称被设置为 SQL Server Agent Automated Mailer。该帐户使用 danw@Adventure-Works.com 作为回复地址,以便将对来自此帐户的邮件的回复发送给数据库管理员,而不是 SQL Server 代理的电子邮件地址。通过为上述三个参数提供独立的设置,数据库邮件允许您配置邮件来适应您的需求。
@mailserver_type 参数是为灵活适应将来版本而提供的。SQL Server 2005 支持的 @mailserver_type 值为'SMTP'。
当 @use_default_credentials 为 1 时,邮件通过 SQL Server Database Engine 的凭据发送到 SMTP 服务器。如果 @use_default_credentials 为 0,并且为帐户指定了 @username 和 @password,则该帐户将使用 SMTP 身份验证。@username 和 @password 是帐户用于访问 SMTP 服务器的凭据,而不是访问 SQL Server 或计算机所在网络的凭据。
存储过程 sysmail_add_account_sp 在 msdb 数据库中,由 dbo 架构拥有。如果当前数据库不是 msdb,则该过程必须使用由三部分组成的名称执行。
[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]参数[ @account_name = ] 'account_name' 要添加的帐户的名称。account_name 的数据类型为 sysname,无默认值。
[ @email_address = ] 'email_address' 发件人的电子邮件地址。该地址必须是一个 Internet 电子邮件地址。email_address 的数据类型为 nvarchar(128),无默认值。例如,Microsoft SQL Server 代理的帐户可以使用地址 SqlAgent@Adventure-Works.com 发送电子邮件。
[ @display_name = ] 'display_name' 该帐户发出的电子邮件所用的显示名称。display_name 的数据类型为 nvarchar(128),默认值为 NULL。例如,SQL Server 代理的帐户可以在电子邮件上显示名称 SQL Server Agent Automated Mailer。
[ @replyto_address = ] 'replyto_address' 回复该帐户的邮件时使用的地址。replyto_address 的数据类型为 nvarchar(128),默认值为 NULL。例如,给 SQL Server 代理的帐户的回复可以发给数据库管理员 danw@Adventure-Works.com
[ @description = ] 'description' 对帐户的说明。description 的数据类型为 nvarchar(256),默认值为 NULL。
[ @mailserver_name = ] 'server_name' 此帐户所用 SMTP 邮件服务器的名称或 IP 地址。运行 SQL Server 的计算机必须能够将 server_name 解析为 IP 地址。server_name 的数据类型为 sysname,无默认值。
[ @mailserver_type = ] 'server_type' 电子邮件服务器的类型。server_type 的数据类型为 sysname,默认值为 'SMTP'。'SMTP' 是 Microsoft SQL Server 2005 支持的唯一类型。
[ @port = ] port_number 电子邮件服务器的端口号。port_number 的数据类型为 int,默认值为 25。
[ @username = ] 'username' 用于登录电子邮件服务器的用户名。username 的数据类型为 nvarchar(128),默认值为 NULL。如果此参数为 NULL,则数据库电子邮件不对此帐户进行身份验证。如果邮件服务器不要求身份验证,则使用 NULL 作为用户名。
[ @password = ] 'password' 用于登录电子邮件服务器的密码。password 的数据类型为 nvarchar(128),默认值为 NULL。除非指定了用户名,否则无需提供密码。
[ @use_default_credentials = ] use_default_credentials 指定是否使用 SQL Server Database Engine 的凭据将邮件发送到 SMTP 服务器。use_default_credentials 的数据类型为 bit,默认值为 0。当此参数为 1 时,数据库邮件使用 SQL Server Database Engine 的凭据。当此参数为 0 时,数据库邮件将发送 @username 和 @password 参数(如果有),否则,将不使用 @username 和 @password 参数而直接发送邮件。
[ @enable_ssl = ] enable_ssl 指定数据库邮件是否使用安全套接字层对通信进行加密。Enable_ssl 的数据类型为 bit,默认值为 0。
[ @account_id = ] account_id OUTPUT 返回新帐户的帐户 ID。account_id 的数据类型为 int,默认值为 NULL。

[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]返回代码值0(成功)或 1(失败)

[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]权限默认情况下,sysadmin 固定服务器角色的成员有执行此过程的权限。

[img]ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/local/collapse.gif[/img]示例以下示例将创建一个名为 AdventureWorks Administrator 的帐户。此帐户使用电子邮件地址 dba@Adventure-Works.com,并将邮件发送到 SMTP 邮件服务器 smtp.Adventure-Works.com。此帐户发送的电子邮件将在邮件的“发件人:”行中显示 AdventureWorks Automated Mailer。对此邮件的回复将发往 danw@Adventure-Works.com。
EXECUTE msdb.dbo.sysmail_add_account_sp    @account_name = 'AdventureWorks Administrator',    @description = 'Mail account for administrative e-mail.',    @email_address = 'dba@Adventure-Works.com',    @display_name = 'AdventureWorks Automated Mailer',    @mailserver_name = 'smtp.Adventure-Works.com' ;
中国数据库联盟 :http://cndba.5d6d.com
 

回复: 有没有人搞过 数据库邮件 (MSSQL 2005)

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/udb9/html/58ae749d-6ada-4f9c-bf00-de7c7a992a2d.htm
晕,SQL 联机帮助代码错:

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'AdventureWorks Public Profile',
    @database_name = 'msdb',
    @principal_name = 'public',
    @is_default = 1 ;
消息 8145,级别 16,状态 1,过程 sysmail_add_principalprofile_sp,第 0 行
@database_name 不是过程 sysmail_add_principalprofile_sp 的参数。
中国数据库联盟 :http://cndba.5d6d.com
 

回复: 有没有人搞过 数据库邮件 (MSSQL 2005)

正确应为:
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @principal_name = 'public',
    @profile_name = 'AdventureWorks Public Profile',
    @is_default = 1 ;
中国数据库联盟 :http://cndba.5d6d.com
 

回复: 有没有人搞过 数据库邮件 (MSSQL 2005)

-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_name = 'yickdangmail',
    @description = 'yickdang mail system admin.',
    @email_address = [email=]'yickdang@yickdang.com'[/email],
    @replyto_address = [email=]'zhqian@yickdang.com'[/email],
    @display_name = '系统知通',
    @mailserver_name = '192.168.1.3' ;
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
    @profile_name = 'yickdangmail',
    @description = 'yickdang mail system admin.' ;
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'yickdangmail',
    @account_name = 'yickdangmail',
    @sequence_number =1 ;
-- Grant access to the profile to all users in the msdb database
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'yickdangmail',
    @principal_name = 'public',
    @is_default = 1 ;


go
EXEC msdb.dbo.sp_send_dbmail
  @profile_name = 'yickdangmail',
    @recipients = [email=]'ZHQIAN@yickdang.com'[/email],
    @body = 'The stored procedure finished successfully.',
    @subject = 'Automated Success Message' ;
go


邮件已排队。
(可是好几分钟了,我还没有收到邮件)


邮件已排队。
中国数据库联盟 :http://cndba.5d6d.com
 
1  /  2  页   12 跳转

版权所有 微软BI开拓者 

Powered by Discuz!NT 2.1.202    Copyright © 2001-2012 Comsenz Inc.
Processed in 0.1718816 second(s) , 4 queries.
返顶部