Crystal Reports:数据库登录失败

时间:2014-01-25 13:11:55

标签: sql-server visual-studio-2012 crystal-reports iis-7.5

我正在尝试以PDF格式打印水晶报告,并且在我的本地计算机上它工作正常。但是当我将应用程序发布到服务器时,它在打印按钮上给出了以下错误。 我使用的是VS2012,SQl Server 2012,IIS 7.5和CR版本13.5 注意:我使用集成安全性,因此我将用户名和密码留空。请帮忙。 我的代码行:

    string Constring1 = ConfigurationManager.ConnectionStrings["dbRMCConnectionString"].ConnectionString;
    SqlConnection conn = new SqlConnection(Constring1);
    conn.Open();

    ReportDocument rpt = new ReportDocument();

    rpt.Load(Server.MapPath("RMCChallan.rpt"));

    ParameterFieldDefinitions crParameterFieldDefinations;
    ParameterFieldDefinition crParameterFieldDefination;
    ParameterValues crParameterValues = new ParameterValues();
    ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();
    crParameterValues.Clear();

    crParameterDiscreteValue.Value = lbl_Cno.Text;
    crParameterFieldDefinations = rpt.DataDefinition.ParameterFields;
    crParameterFieldDefination = crParameterFieldDefinations[0];
    crParameterValues = crParameterFieldDefination.CurrentValues;

    crParameterValues.Add(crParameterDiscreteValue);
    crParameterFieldDefination.ApplyCurrentValues(crParameterValues);
    rpt.SetDatabaseLogon("", "", "ADMIN-PC\\ADMIN", "dbRMC"); 
    rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, Guid.NewGuid().ToString());

感谢您的帮助! :)

堆栈跟踪: 我正在尝试以PDF格式打印水晶报告,并且在我的本地机器上它工作正常。但是当我将应用程序发布到服务器时,它在打印按钮上给出了以下错误。 我使用的是VS2012,SQl Server 2012,IIS 7.5和CR版本13.5 注意:使用Windows身份验证..没有分配给我的数据库的用户名和密码。 '/'应用程序中的服务器错误。


数据库登录失败。

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

异常详细信息:System.Runtime.InteropServices.COMException: Database logon failed.

来源错误:

Line 178:        crParameterFieldDefination.ApplyCurrentValues(crParameterValues);
Line 179:        rpt.SetDatabaseLogon("", "", "ADMIN-C\\ADMIN","MyDatabase"); 
Line 180:        rpt.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, Guid.NewGuid().ToString());
Line 181:
Line 182:

源文件:e:\25jan14\WebSite1\RMC.aspx.cs Line: 180

堆栈追踪:

[COMException (0x8004100f): Database logon failed.]
  CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions pExportOptions, RequestContext pRequestContext) +0
  CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) +257

[LogOnException: Database logon failed.]
   CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e) +332
   CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) +310
   CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext) +654
   CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream(ExportOptions options) +92
   CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToHttpResponse(ExportOptions options, HttpResponse response, Boolean asAttachment, String attachmentName) +96
   CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToHttpResponse(ExportFormatType formatType, HttpResponse response, Boolean asAttachment, String attachmentName) +119
   RMC.Button5_Click(Object sender, EventArgs e) in e:\25jan14\WebSite1\RMC.aspx.cs:180
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9553594
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724

6 个答案:

答案 0 :(得分:2)

1.清晰的数据集连接 2.设置一个或多个表格 3.不要设置数据源和数据集。因为你把数据发送到水晶报告 4.刷新报告文件 在底部看到这个:

    MyCrystalReportSource.ReportDocument.DataSourceConnections.Clear();
    MyCrystalReportSource.ReportDocument.Database.Tables[0].SetDataSource(MyDataSet.Tables[0]);
    MyCrystalReportSource.ReportDocument.Refresh();
    MyCrystalReportSource.ReportDocument.ExportToHttpResponse(ExportFormatType.PortableDocFormat, HttpContext.Current.Response, true, reportTitle);

答案 1 :(得分:1)

你确定需要两个斜杠吗?

rpt.SetDatabaseLogon("", "", "ADMIN-PC\\ADMIN", "dbRMC");

此外,这里还有一个指向SetDatabaseLogon的msdn参考的链接。

http://msdn.microsoft.com/en-us/library/ms226065(v=vs.80).aspx

文章中的示例使用的是标准安全登录帐户。

rpt.SetDatabaseLogon("limitedPermissionAccount", "1234", "ServerName", "Northwind");

您在通话中缺少用户和密码。

这也像是在尝试执行可信连接。您可以尝试在Web服务器上使用本地ODBC连接,但它可能会提示用户输入AD凭据。

祝你好运

答案 2 :(得分:1)

我们遇到了同样的问题。结束我们需要安装Microsoft SQL Server 2012 Native Client(在https://www.microsoft.com/en-us/download/details.aspx?id=29065处可用,单击Install Instructions并向中间滚动)。

我们能够告诉这一点,因为Process Monitor在访问HKCR / SNCL11注册表项时显示NOT FOUND错误。

答案 3 :(得分:0)

我最近遇到了类似的问题,当我在报告中更改数据库连接的区域设置标识符时,它工作正常。希望这有助于某人。 https://stackoverflow.com/a/35545586/3013470

答案 4 :(得分:0)

我试图在部署Click-Once应用程序的几周内和这个问题上争吵,最后发现客户端计算机需要为SQL 2012安装SQL Native客户端;所以,我必须将其添加到我的先决条件中。

答案 5 :(得分:0)

如果其他人也发现了这个问题,这就是我的问题以及解决方法:

我必须编辑一些旧报表才能向它们添加新表。作为该过程的一部分,我必须创建一个新连接并更改现有表的表位置。在尝试部署到生产环境中之前,所有方法都工作良好,在生产环境中,表位置在代码中动态更改。

所以我用Google搜索了一下,发现了这个问题,并意识到@Chet(+1)的答案可能是一个线索。那是-我创建的新连接为Sql server native client ##

但是,我没有使用prod服务器,而是使用OLE DB (Sql server)连接重新建立了新连接,然后它在所有相关位置(开发,测试,产品环境)都有效。