这篇文章源于在上一篇博文中有园友提出订阅 SSRS 报表时的一个问题,  于是就好好总结了一下,把有关 SSRS 报表订阅的要点和容易出现问题的地方写出来,希望对大家有所帮助!

参看上一篇博文 - SSRS 报表中分组聚合的展开和收起效果与处理不规则层次结构的技巧(没有子元素的时候不展开, 删除+符号)


先展示订阅成功的效果之一


进入正文....

首先,先列出常见问题,大家多多少少碰到过。

第一,在SSRS报表订阅的地方找不到 Email 的选项 - Choose a method of delivery 下只有 Windows File Share 看不到 Email 选项。

第二,只要一设置订阅,就会出现这种错误信息。

Subscriptions cannot be created because the credentials used to run the report are not stored, or if a linked report, the link is no longer valid.

大致的意思就是"运行报表的证书没有保存因此不能创建订阅...."

第三,比如 SQL Server Agent 没有启动造成的错误。报表的订阅是按时间周期发送报表的,因此实际上是由 SQL Server Agent Job 来完成的。当订阅完成后,在 SQL Server Agent 下就能看到

第四,除了这些基本的错误之外,最常见的问题,很多人按照MSDN或者网上其它资料讲解的配置怎么就配置不成功(收不到订阅的报表)。一种是在公司使用公司域用户邮箱也配置不成功,第二种是公司域用户能配置成功,但是换了其它比如126等邮箱就是不成功,为什么?如何来验证?

我们依次来解决这些问题,不过要先说明一下,其中有些结论只在于我个人不断的尝试,猜测,再尝试和最终总结的结果。有可能总结有不正确的地方,希望大家也可以积极探讨和指正。


第一,在SSRS报表订阅的地方找不到 Email 的选项 - Choose a method of delivery 下只有 Windows File Share 看不到 Email 选项。

这个比较简单,原因就是我们在 Reporting Services 的配置中并没有设置我们的 SMTP Server 和 发送邮件信息,这样就无法发送邮件。

第二,只要一设置订阅,就会出现这种错误信息 - Subscriptions cannot be created because the credentials used to run the report are not stored, or if a linked report, the link is no longer valid.

这个错误其实是报表数据源的设置错误造成的,因为在报表的数据源没有绑定一个存储在 SQL Server 上的用户,而有可能使用了 Windows 集成验证等方式。

因此,首先创建一个 SQL Server 用户,我在本地还给了这个账户 sysadmin 权限.

数据源访问使用这个账户

这样就可以了!

等这些基本的配置问题解决后,后面就是真正在使用 SSRS 报表订阅过程了!


在解决问题4之前,先完成了以下这些准备.

第一,Reporting Services 先要配置好,特别是之前提到的 SMTP Server 那里的配置.

我的 Service Account 和其它的账户都是域账户。

这个最后来解释,SMTP Server 这里的配置发现没有? 是没有密码验证的,这就是很多人配置失败和比较困惑的地方!

第二,报表的实例是来自于上一篇博文中的报表 - SSRS 报表中分组聚合的展开和收起效果与处理不规则层次结构的技巧(没有子元素的时候不展开, 删除+符号)

部署这个报表到 Reporting Service 中去.

检查 Data Source 中的配置

一定要记得 Apply !

回到报表,选择订阅 - Subscribe..

常用的发送邮件设置很简单,注意我这里填的邮件地址 biworktest@yopmail.com 和在 Reporting Services 里配置的 biwork@yopmail.com 使用的都是同一个 SMTP Server smtp.yopmail.com。这里不想误导大家,填着两个地址是有原因的,我们先看配置和发送邮件的结果。

下面的订阅选项中,报表可以 PDF, HTML 或者 Excel 的形式发送,都可以尝试一下,这里我选择的是 Excel, 目的就是想看看这个报表的分组的 +和- 在不在。

选择计划 - Schedule, 和 SQL Server Agent 里一样很容易配置。

为了快速测试,我选择每1分钟发送一次,点击确定。

可以看到外面的显示,每1分钟一次。

1分钟以后... 看看 My Subscriptions 的记录,显示了订阅的最后一次发送的时间和状态。

到我的接收邮箱 biworktest@yopmail.com 中看看有没有来自 biwork@yopmail.com 发送过来的报表。

非常壮观啊!也有之前2分钟测试发一次的!都成功了!

打开附件,看看果然只有第一层的 + 存在,而第二层和第三层的就没有了!并且 France 在之前的例子中是不可以展开的,因为它下面并没有子元素,但是在这里看到确实展开的效果。

对比一下之前在 Reporting Services 上的效果。

至此,整个 SSRS 报表的订阅过程,以及报表以 Excel 附件发送和效果都看到了,这里的订阅是成功的。


再来谈谈,为什么我们所有的配置看似成功,订阅也可以顺利的创建,SMTP 服务器也没有问题(通过 DB Email 发送邮件验证过肯定没有问题,参看我的另一篇文章 配置 SQL Server Email 发送以及 Job 的 Notification通知功能),但是最终还是不能成功。

还是先看看我们在 Reporting Service 里 SMTP 服务器的配置。

在这里 Sender Address, 是发件人地址。 SMTP Server, 是这个发件人地址的 SMTP 服务器。在这里并没有进行用户安全性验证,比如输入密码。我的理解是,Reporting Service 在这里只是拿这个发件人地址去访问 SMTP 服务器,如果 SMTP服务器支持不用密码安全性验证的匿名访问的话,那么是完全没有问题的。

第一种测试,我在我们公司内部,使用我们公司的 SMTP 服务器和自己的邮箱地址,配置好了订阅,但是依旧不能成功。

错误的信息 -

Failure sending mail: The SMTP server requires a secure connection or the
client was not authenticated. The server response was: 5.7.1 Client was not
authenticatedMail will not be resent.

原因就是,我们公司的 SMTP 服务器不支持匿名访问,但是因为PC在域中,能够识别到运行 Reporting Service 的 Windows 账号,这时就需要你主动提供认证的要求,那么 SMTP 服务器会通过对你进行 Windows 认证,如果认证通过那么就可以发送邮件了!

但是,这个东西的配置并不是在 Reporting Services 上就能直接完成的,需要修改 Report Server 的配置文件。

我的地址是 - C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer

在 rsreportserver.config 中找到 -

将<SMTPAuthenticate></SMTPAuthenticate> 改成 <SMTPAuthenticate>2</SMTPAuthenticate>

默认是 0 - 没有身份验证,也就是说 SMTP 服务器不支持匿名访问,但是因为我们已经在域中,SMTP 服务器本来可以进行 Windows 验证的,但是我们在这个配置中却写上了没有身份验证,那么 SMTP 即使可以给你验证,它看到这个 0 那么也就放弃了,那么你肯定就不成功了!

2 - 身份验证,并且是 Reporting Services 通过 Windows 服务的安全凭证连接到 SMTP 服务器,那么就是告诉 SMTP 服务器我是有身份的,你应该验证下,这样不就验证成功了吗? 所以微软这样设计 Reporting Services 的目的可能也是考虑到安全性的问题,如果可以随便订阅,没有域环境下的安全检查,那不是随便填个地址就可以随便把报表发出去了吗? 因为大多数 SMTP 服务器都不支持匿名访问的,这样就给报表的订阅限定了一个安全的范围,这是我自己的理解!

OK! 在域环境下,设置为 2 就可以正常发送邮件订阅了!


第二种测试与很多人有关,因为肯定有人和我一样一开始就傻傻的很执着的配置这个订阅,翻资料查资料屡战屡败,屡败屡战到最后也没有搞明白问题出在什么地方,反而开始怀疑起是不是自己的系统防火墙或者什么小地方配置出错了?要么最后这就是微软的一个 Bug,最后放手。

我也尝试过多次为什么在域中可以,但是回到家就不能发 163,126等邮箱,配置过很多遍就是不成功。看过日志看过 Reporting Service 配置文件,再仔细尝试过在域中的配置后,我意识到确确实实不是我们自身配置的问题。想想,就126 邮箱来说,如果我们在没有输入密码进行安全性验证的情况下就可以随便借助 SMTP 服务器发邮件,那么是不是会有很多的垃圾的邮件产生。以前相信很多 SMTP服务器应该支持匿名访问,但是现在估计很少了。

于是,找了一个不需要安全验证的 SMTP 服务器,它可以允许匿名访问来验证一下我的想法。

访问地址 - http://www.yopmail.com/en/ 无须注册,我用了两个测试用户名,一个是 biwork, 一个是 biworktest.

再看下在 Reporting Services 中的配置,发送人是 biwork@yopmail.com

由于这个邮箱只允许同域(邮箱后缀相同)的邮件发送,因此在 Subscription 中都是发送给 biworktest@yopmail.com 的。

这样配置完成后,订阅邮件就发送成功了!所以如果 SMTP 服务器支持匿名访问,那么这个配置是非常简单的。我们之前很多失败的尝试就是因为这个原因才不能成功,而这并不是因为我们的配置不正确造成的。

最后,为什么不问问在匿名访问中这个配置中应该不填还是填 2? 这个答案就留给大家去尝试了!

<SMTPAuthenticate>2</SMTPAuthenticate>

希望我上面的测试与分析对大家有所帮助!如果有误导的地方,欢迎指正,不求有功,但求无过!


更多 BI 文章请参看 BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)

如果觉得这篇文章看了对您有帮助,请帮助推荐,以方便他人在 BIWORK 博客推荐栏中快速看到这些文章。


转载于:https://www.cnblogs.com/biwork/p/3258728.html

微软BI 之SSRS 系列 - 报表邮件订阅中 SMTP 服务器匿名访问与 Windows验证, 以及如何成功订阅报表的实例...相关推荐

  1. 微软BI 之SSRS 系列 - 解决Pie Chart 中控制标签外部显示与标签重叠的问题

    微软BI 之SSRS 系列 - 解决Pie Chart 中控制标签外部显示与标签重叠的问题 参考文章: (1)微软BI 之SSRS 系列 - 解决Pie Chart 中控制标签外部显示与标签重叠的问题 ...

  2. 微软BI 之SSRS 系列 - 使用 LookupSet 和 Adjacent Group 等高级技巧在报表中跨 Dataset 分组查询...

    SSRS 报表中有一些高级的技巧,平常很少用到,下面我通过这个案例来展现一下如何在实际开发中使用它们,并且如何解决一些实际的需求. 这张报表分别统计了不同的 Product 产品在不同的月份的 Ord ...

  3. 微软BI 之SSIS 系列 - MVP 们也不解的 Scrip Task 脚本任务中的一个 Bug

    开篇介绍 前些天自己在整理 SSIS 2012 资料的时候发现了一个功能设计上的疑似Bug,在 Script Task 中是可以给只读列表中的变量赋值.我记得以前在 2008 的版本中为了弄明白这个配 ...

  4. 微软BI 之SSAS 系列 - 在SQL Server 2012 中开发 Analysis Services Multidimensional Project

    SQL Server 2012 中提供了开发 SSAS 项目的两种模型,一种是新增加的 Tabular Model 表格模型,另一种就是原始的 Multidimensional Model 多维模型. ...

  5. 微软BI 之SSIS 系列 - Lookup 组件的使用与它的几种缓存模式 - Full Cache, Partial Cache, NO Cache...

    开篇介绍 先简单的演示一下使用 Lookup 组件实现一个简单示例 - 从数据源表 A 中导出数据到目标数据表 B,如果 A 数据在 B 中不存在就插入新数据到B,如果存在就更新B 和 A 表数据保持 ...

  6. 微软BI 之SSAS 系列 - 在 SQL Server 2012 下查看 SSAS 分析服务的模型以及几个模型的简单介绍...

    在SSDT中部署一个 SSAS 项目到本地服务器上出现错误. You cannot deploy the model because the localhost deployment server i ...

  7. 微软BI 之SSAS 系列 - 多维数据集维度用法之二 事实维度(退化维度 Degenerate Dimension)...

    这篇文章是基于上一篇 SSAS 系列 - 多维数据集维度用法之一 引用维度 Referenced Dimension 继续讲解多维数据集维度用法中的事实维度. 事实维度,顾名思义就是把事实表 Fact ...

  8. 微软BI 之SSIS 系列 - 利用 SSIS 模板快速开发 SSIS Package

    开篇介绍 在做 ETL 项目的时候,往往很多 Package 的开发都是基于相同的模型和流程.比如在 Package 开始运行时需要向 Process Log 表中插入记录,在 Package 运行结 ...

  9. 微软BI 之SSIS 系列 - 理解Data Flow Task 中的同步与异步, 阻塞,半阻塞和全阻塞以及Buffer 缓存概念...

    开篇介绍 在 SSIS Dataflow 数据流中的组件可以分为 Synchronous 同步和 Asynchronous 异步这两种类型. 同步与异步 Synchronous and Asynchr ...

最新文章

  1. 解决ubuntu上opengl的问题
  2. 【Flink】No key set. This method should not be called outside of a keyed context.
  3. 打通语言理论和统计 NLP 两个世界,Transformers/GNNs 架构能做到吗?
  4. 什么是FLV视频格式?FLV视频格式是什么意思?
  5. VBA解压压缩文件。
  6. 怎么把ppt文字大小设置一致_PPT“烫金字”,不用再劳烦设计师了
  7. x平方检验计算_x2检验或卡方检验和校正卡方检验计算
  8. 2022小米运维开发笔试1
  9. SSD固态硬盘测试工具收集(持续更新)
  10. Java中arraycopy()的使用说明
  11. 光场相机系列-----相机标定
  12. maven 指令之package 和install的区别
  13. qq公众平台出错了609_腾讯广告投放平台,腾讯广告投放推广平台有哪些?
  14. 什么叫h5项目_对移动端h5项目的一点总结
  15. 车联网应用之“财产保全”
  16. css实现滚动条美化功能
  17. centos8添加中文语言包
  18. python 代码块批量添加 Tab缩进 取消缩进 anaconda
  19. Winfrom ListView 导出Ecel
  20. python递归求斐波那契数列前20项_Python 求斐波那契数列前20项和

热门文章

  1. 网络营销——网络营销专员表明网站地图助力网站收录进一步提升
  2. 网站推广——网站推广优化期间突然发现网站收录降低怎么回事?
  3. compattelrunner.exe占用磁盘过高_Linux 系统 CPU 占用率太高?
  4. linux多进程条件变量,Linux 多线程条件变量同步
  5. java.library.path hadoop_java - Hadoop“无法为您的平台加载native-hadoop库”警告
  6. python画图标题为蓝色_请问使用matplotlib和绘图色标创建自己的颜色图
  7. ubuntu 12.04 php升级,在 Ubuntu 12.04 LTS 中将 PHP 从 5.3 升级到 5.5
  8. mysql sql 检测磁盘_MySQL 找到临时表用到磁盘的SQL
  9. 开发日记-20190915 关键词 汇编语言王爽版 第十章
  10. 内存数据库MemSQL ——基于内存,MVCC+哈希表、跳表