Reporting services SSRS 2016报告跨时区的电子邮件

Reporting services SSRS 2016报告跨时区的电子邮件,reporting-services,ssrs-2016,Reporting Services,Ssrs 2016,我正在使用SSRS 2016,有许多用户需要在当地时间上午11点之前收到一份电子邮件报告 这样做的最佳实践是什么 我最初的想法是为每个时区创建不同的Active Directory通讯组列表,并相应地添加用户……然后为每个报告创建多个计划,并调整报告发送时间相对于通讯组列表需要报告的时间 例如,SQL server位于中部时间,而东部和中部时间的员工需要在当地时间上午11点之前提交报告。-创建电子邮件时间表,以便在上午10点(服务器时间)向东部时间员工发送报告,并在上午11点再次向中部时间员工发

我正在使用SSRS 2016,有许多用户需要在当地时间上午11点之前收到一份电子邮件报告

这样做的最佳实践是什么

我最初的想法是为每个时区创建不同的Active Directory通讯组列表,并相应地添加用户……然后为每个报告创建多个计划,并调整报告发送时间相对于通讯组列表需要报告的时间

例如,SQL server位于中部时间,而东部和中部时间的员工需要在当地时间上午11点之前提交报告。-创建电子邮件时间表,以便在上午10点(服务器时间)向东部时间员工发送报告,并在上午11点再次向中部时间员工发送报告


有更好的方法吗?

您的方法正是我们正在做的。SQL Server实例位于中央时区,我们的用户遍布世界各地。每个组维护一个邮件列表,并在创建报告订阅时手动执行算术运算。有趣的是,SSRS会根据本地用户的语言进行调整(Le Rapp hebdomadaire@ReportName aétéexécutéa@ExecutionTime而不是@ReportName在@ExecutionTime为默认主题执行),但在时区方面没有提供任何帮助

如果您有SQL Server的企业版,则可以使用数据驱动的报表订阅。考虑到标准版和企业版之间的成本大幅增加,我怀疑这一特性是否能证明成本的合理性

另一种解决方案需要SSR之外的东西,但它可能很方便。如果其他调度工具在不同的位置运行,它们可以运行PowerShell脚本来触发订阅。例如,您还可以使用这种方法在加载数据时运行报告

列出订阅及其ID的PowerShell脚本:

$server = 'http://server.company.com/reportserver'
$site = '/'

$rs2010 = New-WebServiceProxy -Uri "$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential
$subscriptions = $rs2010.ListSubscriptions($site)
$subscriptions | Sort-Object -property path,owner,SubscriptionID -Unique | select Path, Owner, SubscriptionID 
要触发订阅的Powershell脚本:

# Given an SSRS URL and a subscription ID, trigger the subscription.
$server = 'http://server.company.com/reportserver'
$subscriptionid = "55477447-b0b0-433c-a75f-08ad0b6d18bd"

$rs2010 = New-WebServiceProxy -Uri "$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;
$rs2010.FireEvent("TimedSubscription",$subscriptionid,$null)

你的方法正是我们正在做的。SQL Server实例位于中央时区,我们的用户遍布世界各地。每个组维护一个邮件列表,并在创建报告订阅时手动执行算术运算。有趣的是,SSRS会根据本地用户的语言进行调整(Le Rapp hebdomadaire@ReportName aétéexécutéa@ExecutionTime而不是@ReportName在@ExecutionTime为默认主题执行),但在时区方面没有提供任何帮助

如果您有SQL Server的企业版,则可以使用数据驱动的报表订阅。考虑到标准版和企业版之间的成本大幅增加,我怀疑这一特性是否能证明成本的合理性

另一种解决方案需要SSR之外的东西,但它可能很方便。如果其他调度工具在不同的位置运行,它们可以运行PowerShell脚本来触发订阅。例如,您还可以使用这种方法在加载数据时运行报告

列出订阅及其ID的PowerShell脚本:

$server = 'http://server.company.com/reportserver'
$site = '/'

$rs2010 = New-WebServiceProxy -Uri "$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential
$subscriptions = $rs2010.ListSubscriptions($site)
$subscriptions | Sort-Object -property path,owner,SubscriptionID -Unique | select Path, Owner, SubscriptionID 
要触发订阅的Powershell脚本:

# Given an SSRS URL and a subscription ID, trigger the subscription.
$server = 'http://server.company.com/reportserver'
$subscriptionid = "55477447-b0b0-433c-a75f-08ad0b6d18bd"

$rs2010 = New-WebServiceProxy -Uri "$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;
$rs2010.FireEvent("TimedSubscription",$subscriptionid,$null)