将后端数据库从SQL Server 2008 R2更改为SQL Server 2014(两者都是企业版)后,我们的Crystal报表不再运行。该数据库于2008年备份,并在2014年使用SQL Server Management Studio进行了恢复。除了没有运行Crystal Reports之外,.Net应用程序工作正常。屏幕只是闪烁,没有生成或传送PDF。如果我们将web.config中的连接字符串更改回原始服务器和数据库,则报告可以正常工作。下面是连接字符串,其中SERVERNAME,DBNAME,USER和密码已更改,以保护无辜者。唯一可以改变的是SERVERNAME。
<link href="https://cdnjs.cloudflare.com/ajax/libs/awesomplete/1.1.1/awesomplete.min.css" rel="stylesheet"/>
<input id="srehberText" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/awesomplete/1.1.1/awesomplete.min.js"></script>
谢谢。
更新
再次检查后,我现在看到SQL日志中的身份验证失败。我不完全确定这些是否来自Crystal Reports。客户端IP是同一Web服务器上完全不同的IIS网站IP,不应与此DB通信。
<add name="Pubs"
connectionString="Data Source=SERVERNAME;Initial Catalog=DBNAME;Integrated Security=False;User Id=USER;Password=*********"
providerName="System.Data.SqlClient" />
更新#2
开发人员显然发现报告中缺少为连接指定端口的一些问题,并且正在通过报告来解决问题。
感谢您的投入。
答案 0 :(得分:0)
开发人员显然发现在从代码调用报告时缺少为连接指定端口的报告存在一些问题。他们正在浏览报告并进行更新以解决问题。
开发者输入如下....
必须更改子报告登录:
foreach (IConnectionInfo conn in rpt.DataSourceConnections)
{
conn.SetLogon(sConn.UserID, sConn.Password);
conn.SetConnection(sConn.DataSource + ",1433", sConn.InitialCatalog, false);
}
rpt.SetDatabaseLogon(sConn.UserID, sConn.Password);
foreach (Table t in rpt.Database.Tables)
{
t.LogOnInfo.ConnectionInfo.UserID = sConn.UserID;
t.LogOnInfo.ConnectionInfo.Password = sConn.Password;
}
对此:
#include <stdio.h>
void main()
{
int i;
for(i=0;i!=12;i++)
{
printf("%d\n",i);
i=12;
}
}