我们在客户的计算机上部署了一个包含SSRS报告的VB.Net应用程序。
应用程序连接到应用程序中的SQL Server数据库没有任何问题。我们安装了SQL Server数据工具,因此我们可以将报告(rdl)和数据源(rdl)文件部署到报表服务器。这些部署没有任何问题。
在SQL Server数据工具中,我们也可以“预览”报告而不会出现任何问题。
尝试从Internet Explorer(以管理员身份运行)查看报告时,我们遇到了问题。
我们收到以下错误:
Cannot create a connection to data source 'DataSourceReports'
(this is the name we used for the TargetDataSourceFolder)
error:40 - Could not open a connection to SQL Server
当我们部署的应用运行报告时,我们也会遇到同样的错误。
请告诉我们SQL Server端未正确设置的内容。
答案 0 :(得分:2)
可能的情况是您遇到双跳身份验证问题。从您的解释中不清楚,但SQL Server数据库是否与报表服务器位于不同的服务器上?如果是这样,那么您的凭据允许您连接到报表服务器,但如果您在报表服务器上使用NTLM,则Windows集成安全性不会将这些凭据传递到SQL Server数据库。报表服务器尝试在您的网络上使用Kerberos通过向SQL Server数据库发票进行身份验证,但您必须在网络上正确配置此Kerberos。如果要使用Kerberos,请参阅此文章:http://technet.microsoft.com/en-us/library/ff679930(v=sql.100).aspx。
另一种(更简单的)解决方案是在报表服务器上打开数据源并更改身份验证以使用存储的凭据。确保您使用的凭据具有SQL Server数据库的读取权限。此方法的缺点是您不能在用户的报表中使用行级安全性,除非您将报表设计为捕获用户信息并设置查询或数据集上的过滤器以限制用户的数据。如果这不是一个问题,那么存储的凭据很容易设置和维护 - 如果你想使用缓存,快照或订阅,你将不得不这样做。有关存储凭据的详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms159736.aspx。