我的服务器上有大量报告。需要一组报告每30秒更新一次,并且通常始终在15到20台不同的计算机上运行。我们经常遇到错误,并且我不记得确切的错误,但是基于其他论坛上有限的信息,我对服务本身进行了调整,这在很大程度上有所帮助。我们仍然偶尔会看到错误,现在我被要求在服务器上放置更多内容。我已经设置了这组特定的报告,以将数据写回到我们的应用程序数据库中,并且由于这组特定的用户不再拥有该应用程序的权限,因此我需要将它们放置在其他服务器上,因此不会影响到他们的工作。 >
-背景-
我是美国最大的动物收容所之一的DBA。我们有数百名志愿者walk着我们的狗,这些狗目前是我们收容所的居民,直到被收养到他们永远的家中为止。当我从这里开始时,志愿者从一开始就不受限制地访问了我们的庇护申请。去年夏天,一名志愿者更改了重要信息,从而对我们其中一只狗的治疗产生了不利影响。幸运的是,最后那只狗还不错,应用程序记录了所有内容,因此我们可以找出是谁做的。领导层终于明白了我的观点,并同意限制访问权限。
大多数志愿者不需要访问我们的庇护应用程序。实际上,在将近1,500名志愿者中,真正需要访问的人只有200名左右,因此我仅根据他们的需要设置这些用户。但是,对于数百只walk狗的人来说,他们仍然需要访问才能看到需要needing狗的地方,并记录每次ed狗时国家要求的信息。我在SSRS中建立了一系列报告来照顾我们的dog狗犬。我们只需要保持它的稳定,因为它们不再具有应用程序访问权限。
-故事的结尾-
我首先在另一台服务器上安装新的SSRS实例。我遵循横向扩展部署过程,将新实例加入到现有的SSRS数据库中,并且按预期工作。现在,我需要知道如何将用户定向到新实例。这是我现在设置的方式:
用户打开一个操作仪表板。在底部,有一个包含狗步行摘要信息的图形,我在图形标题文本框中设置了带有操作链接的链接,该操作链接转到“ Dog Walk”仪表盘(该操作链接将location参数传递到Dog Walk仪表盘)。 Dog Walk仪表板每30秒刷新一次,因此任何计算机上的志愿者都可以看到谁已经在散步了,因此他们不必花费时间去狗窝。这样会使服务繁忙。
志愿者将单击他们想要散步的狗的名字。这具有指向“开始行走”报告的操作链接,该报告传递了动物ID号。该报告首先要求提供志愿者的姓名缩写作为附加参数。然后显示有关他们选择的狗的信息。有一个问题要问,这是否是正确的动物,并且报告上的“是”框和“否”框。 “否”框有一个操作链接,可返回到Dog Walk仪表板。 “是”框链接到另一个报告,并传递动物ID和志愿者的姓名缩写。该报告运行一个存储过程,该过程记录了步行的开始并将志愿者返回到Dog Walk主仪表板。
步行结束时,志愿者遵循相似的步骤,只是使用不同的链接来记录步行信息。
有更多细节我现在不会厌烦您(除非需要)。步骤1是我需要帮助的地方。从我们的主操作仪表板(服务器1上),当志愿者单击链接转到Dog Walk仪表板时,这是我希望他们转移到新服务器(服务器2)上的地方。所有其他操作人员都可以留在原始服务器上。我确实找到了可以在其中添加链接的文档,例如:
="javascript:void(window.open('http://[server2]/ReportServer?/Operations%20Dashboard/Dog%20Walk&rc:Parameters=Collapsed&Location=[shelter location]" + "','_blank'))"
我发现的问题是,尽管“确实”可行,但要在浏览器的新标签页中打开Dog Walk仪表板,却无法传递位置。首先,我丢失了“返回到父报表”按钮,而我找不到将其保留在那里的方法。第二个问题是,通过在URL上传递位置而不是在同一服务器上的报表传递“幕后花絮”,如果我更改它,则移动到不同的报告会重置我的位置。例如,我在每一行上都有另一个字段,用户可以单击以打开带有动物详细信息的另一个报告。由于我没有“返回上级报告”按钮,因此必须使用浏览器的“后退”按钮将我的位置重置为最初传入的位置。
有想法吗?
我唯一的想法是设置伪负载平衡(两个DNS名称相同但IP地址不同的DNS条目),因为我们没有官方负载平衡器的预算。我在以前的雇主那里做了一个大型Web应用程序,这样做可以使两个服务器上的负载保持相对平衡。