2015-12-21 110 views
2

我對Crystal Reports有一個奇怪的(但也是常見的)問題。Crystal Reports數據庫登錄失敗,使用SQL Server 2014和Windows 10

數據庫是SQL服務器2014快捷(12.0.2000或12.0.2269)

的Web應用程序可以連接到數據庫,沒有任何問題。用戶想要運行報告時出現問題。

現在,我有幾個生產基地。 Windows Server 2012 R2雲虛擬機,幾臺Windows Server 2008 R2機器和一臺Windows 10機器。

報告在Windows Server 2008計算機上運行良好,但在服務器2012 R2或win 10上運行良好。在那裏,我遇到了可怕的數據庫登錄失敗錯誤。它甚至不適用於我的開發筆記本電腦(Win 10)。我的意思是我可以在Visual Studio中運行報告,但不能在將它們部署到IIS之後運行。

報告本身主要使用SQL本機客戶端(SQLNCLI11)驅動程序連接到數據庫,其中一些使用OLE DB(SQLOLEDB),但這似乎不是問題,因爲我已經嘗試了兩個版本,並且他們都失敗了。

現在,我想也許應用程序中缺少一些DLL,但部署到贏得服務器2008的非常相同的應用程序工作得很好。所以我在想,它一定是環保的。但是什麼?

我猜測客戶端驅動程序在某種程度上被破壞,或者在新版本的Windows中發生了某些變化。

所以,我要求一些想法,如果有人有任何意見,可以指向正確的方向。

這是錯誤片段:

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

[LogOnException: Database logon failed.] 
    CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e) +263 
    CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) +1522 
    CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext) +704 
    CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream(ExportOptions options) +115 
    CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream(ExportFormatType formatType) +96 
    SYSTEM.Controllers.ReportController.GenerateReport(NameValueCollection Form, String how) in C:\SYSTEM\SYSTEM\Controllers\ReportController.cs:210 
    SYSTEM.Controllers.ReportController.Index() in C:\SYSTEM\SYSTEM\Controllers\ReportController.cs:467 
    lambda_method(Closure , ControllerBase , Object[]) +90 

UPDATE:

這似乎是由於Windows 10,但我還沒有找到一個解決方案。

SAP說安裝.NET 3.5,因爲它沒有默認安裝在WIN 10中,但即使在我這樣做時,錯誤仍然存​​在。

您應該安裝CR的13.0.15版本,因爲它不是唯一支持WIN 10的版本,但正如我所說,它不起作用。

我測試過三種不同的WIN 10機器,結果總是一樣的。

+0

我在使用NativeClient作爲提供者的sql 2008上有類似的問題,改爲使用OLEDb解決了這個問題。事實上,OLEDb在我使用OLEDb時工作得很好。我現在只是避免使用NativeClient。 – aMazing

回答

1

我在使用OLE DB(ADO)數據源類型和Native Client提供程序時遇到了問題。當消費用戶的計算機上未安裝Native Client時,它會要求輸入數據庫登錄名,並且似乎沒有登錄名可以使用。我的解決方案是使用OLEDB提供程序的OLE DB(ADO)數據源。您可以通過右鍵單擊數據源的屬性來查看提供者。在這種情況下,首選提供者是SQLOLEDB,而Native Client則是SQLNCLI11。

0

如果有人有興趣,讓我只是分享解決方案:

這不是水晶報表,也不支持Windows 10,那是我。我的報告基於SQL Server 2008,它使用SQLNCL10,SQLNCL11不向後兼容,因此數據庫登錄錯誤(根本沒有任何幫助,順便說一句)。

爲了以防萬一。

0

您必須利用SQL客戶端2005或版本10(我猜)。

如果使用最新的驅動程序,Crystal Reports確實存在問題。

嘗試使用SQL 2005的客戶端驅動程序建立連接 - 它將運行...