对于我的公司,有一份报告在到达我的部门时以访问数据库格式(.accdb)结束。我们希望使用此信息部署SSRS。虽然我能够在Visual Studio中执行此操作,但数据库管理员质疑这是否可以实际部署并在服务器环境中工作。这可以实现吗?
答案 0 :(得分:1)
您是在谈论Access报告还是Access中的数据?
SQL Server报告不是在Access中构建的,并且绝对与Access无关。唯一的问题是,因为报告无法在Access中构建,那么为什么要尝试让SQL服务器为数据源打开accDB文件呢?只需让Access将表数据传输到SQL服务器然后继续使用SQL Server中内置的报告,你会好得多。
因此,Access中的报告与SQL Server报告具有ZERO关系。因此,Access中的报告没有用,如果您的计划是使用SSRS,则必须在SSRS中构建报告。
可以在服务器上放置Access accDB数据文件并让SQL服务器连接这些数据,但它通常不允许或适用于多个用户。
请记住,反过来肯定是可能的并且经常被推荐。您将所有数据放在SQL Server表上并保留。然后,将Access应用程序链接到SQL Server。在此设置中,数据始终驻留在SQL Server上,但报告位于Access中。 Access中内置的一般表单等将保存+将数据发送到SQL服务器(这样无需编写代码即可工作)。
以上建议将包含报告的Access应用程序分发给需要此类报告的用户。因此,这些用户将仅共享一份数据,因为这些数据驻留在SQL服务器上。此设置还允许用户在SSRS中创建报告而无需上传任何类型的数据,因为来自Access应用程序的实时操作数据始终驻留在SQL服务器上。
总结如下: Access报告是Access报告,就像FoxPro报告是FoxPro报告一样,FileMaker报告是FileMaker报告。因此,无论如何,SQL服务器都无法使用,查看或使用这些报告。
然而,反过来不仅是可能的,而且是一种常见的解决方案。因此,Access(前端)链接到SQL服务器,Access应用程序的表单,代码,报告等数据表现在驻留在SQL服务器上。
如果将实际的accDB数据文件从Access安装在SQL服务器上,则SQL Server可以读取数据,但SQL服务器无法使用Access中的任何代码,表单,报告等。因此,Access中的报告是对SSRS的零使用。
因此,如果SSRS是一个目标,那么从用户界面的角度来看,无法使用任何内置于Access的内容。因此,SSRS只能使用表中的数据。
由于SSRS只能从Access中使用数据(没有其他内容),因此将accDB文件上传到服务器的更好的解决方案就是将数据从Access表推送到SQL服务器表。如果经常发生这样的数据传输,那么最好是将表和数据保存在SQL服务器中,并使Access前端部分“链接”到SQL服务器上的数据。访问报告,表单甚至VBA代码在大多数情况下将像以前一样运行,但实时数据始终驻留在SQL Server中。因此,您消除了尝试在两个系统之间传输数据的所有舞蹈和歌曲。因此,SQL服务器数据始终是“实时”并且更新到日期,并且只存在表数据EVER的一个副本。
当您将数据表放在SQL服务器上时,大多数Access应用程序和报表以及表单都可以使用很少(如果有)修改,并使前端Access部分“链接”到SQL服务器。
由于SSRS中的给定专业报告将需要预先确定且不变的表结构,因此最谨慎的解决方案是使用Access链接并使用来自SQL服务器表的数据(而不是相反) )。
因此,访问报告只能由每个客户端台式计算机上安装了Access(或免费运行时)的人使用。如果您的目标是将此类报告与SSRS一起使用,则必须100%重新构建此类访问报告。