1

我想创建一个一次性 SSRS 共享计划,一旦运行就可以更改,以便在未来的时间点再次执行。我必须以这种方式设置订阅的原因是因为我需要通过电子邮件发送一组基于定制会计日历的报告;我们没有企业,所以数据驱动不是一种选择。

我已经在 ReportServer.dbo.Subscription 和 Schedule 表中测试了这个方法,但到目前为止还没有设法让它工作。我已将 Schedule 表的 NextRunTime 和 StartTime 列更新为我需要发送报告的时间,这似乎在 Report Server Shared Schedules 页面(下一次运行)上更新,但电子邮件未发送。

ReportServer 数据库上是否还有另一个表需要更新,或者这根本不可能?

谢谢

安迪

4

2 回答 2

0

我建议看看下面的文章。它详细介绍了如何在 SQL Server Standard Edition 上设置数据驱动订阅,并通过 SQL Server Agent 手动激活订阅。

http://www.sqlservercentral.com/articles/Development/datadrivensubscriptions/2432/

我已经为几个客户使用过 if ,它通常工作得很好。我唯一改变的是将运行每个数据驱动报告之间的计时器增加到 10 秒。

问候,

杰森

于 2014-01-14T18:30:09.447 回答
0

在阅读此内容时,Microsoft 不支持表格中的大量混乱。使用风险自负!

我尝试了同样的事情。当您在前端更改订阅时,该ReportServer.dbo.Schedule.StartDate列会随着每次编辑而更改。我试着改变这个值,但在这里添加一个值没有任何区别。没有电子邮件,当我回到 SSRS 网页中的订阅时,原始日期时间值就在那里。因此该日期时间必须存储在其他地方。

我做了一个 SQL 跟踪,发现这些 Sproc 被调用了。我抄下了看起来很有希望的台词。通过更改@active_start_time=160400最后一个中的时间值并运行整个批次,我可以在所需时间通过电子邮件收到报告。但我并不满足于此;因为当我返回查看“我的订阅”网页时,仍会列出原始日期时间。

exec msdb.dbo.sp_delete_job @job_name=N'D478A346-ED05-422D-A73E-023080AD56DD'

exec msdb.dbo.sp_add_job @job_name=N'D478A346-ED05-422D-A73E-023080AD56DD',@description=N'This job is owned by a report server process. Modifying this job could result in database incompatibilities. Use Report Manager or Management Studio to update this job.',@category_id=101

exec msdb.dbo.sp_add_jobserver @job_name=N'D478A346-ED05-422D-A73E-023080AD56DD',@server_name =N'(LOCAL)'

exec msdb.dbo.sp_add_jobstep @job_name=N'D478A346-ED05-422D-A73E-023080AD56DD',@step_name=N'D478A346-ED05-422D-A73E-023080AD56DD_step_1',@command=N'exec [ReportServer$instanceDB].dbo.AddEvent @EventType=''TimedSubscription'', @EventData=''db7d7b08-3eee-4bb8-b354-b58c653b8ab6'''

exec msdb.dbo.sp_add_jobschedule @job_name=N'D478A346-ED05-422D-A73E-023080AD56DD',@name=N'Schedule_1',@freq_type=1,@active_start_date=20180405,@active_start_time=160400,@freq_subday_type=1
于 2018-04-05T22:52:53.423 回答