簡體   English   中英

Crystal Reports 在 Azure 雲服務中引發數據庫登錄失敗錯誤

[英]Crystal Reports throws Database Logon Failed error in Azure Cloud Service

當 Crystal Reports 使用與連接沒有問題的 .NET 應用程序相同的憑據時,我很難理解為什么 Crystal Reports 會失敗並顯示“數據庫登錄失敗”消息。 在 Azure 中作為雲服務運行應用程序,連接到 Azure SQL 數據庫。 Crystal 運行時作為啟動任務安裝。

在本地調試中一切正常,但在部署時失敗並出現相同的登錄錯誤。

我嘗試了幾件事,但都沒有奏效。 安裝了 Crystal Reports 運行時,我有一個 StartUp.cmd 文件,其中包含:

msiexec.exe /I "CR13SP29MSI64_0-10010309.msi" /qn
robocopy D:inetpubwwwroot E:sitesroot /S

我在根目錄中使用 CR13SP29MSI64_0-10010309.msi 部署應用程序,在 ServiceDefinition.cscfg 中定義了一個啟動任務,它是:

<Startup>
  <Task commandLine="StartUp.cmd" executionContext="elevated" taskType="background" />
</Startup>

請注意,如果我 RDP 到雲服務並運行 MSI,它會詢問我是否要重新安裝,因此看起來安裝本身沒問題。

嘗試運行報告

doc.SetDatabaseLogon(conn.UserID, conn.Password, conn.ServerName, conn.DatabaseName, true);

其中docReportDocument並且conn包含有效憑據。

還嘗試從配置中讀取並使用 DataSourceConnections ...

var connString = ConfigurationManager.ConnectionStrings["myEFconnection"].ConnectionString;

var sCon = new SqlConnectionStringBuilder(connString);

doc.DataSourceConnections[0].SetConnection(sCon.DataSource, sCon.InitialCatalog, sCon.UserID, 
sCon.Password);

用戶和密碼是正確的,myEFconnection 是應用程序使用的並且一切正常,而且這一切都可以在連接到 Azure SQL DB 的 Visual Studio 中使用相同的配置正常工作。 所以顯然不是用戶名和密碼問題,也不能是防火牆,否則其他應用程序功能將失敗。 還有什么?

任何幫助都非常感謝,因為該錯誤特別無益,我有點不知道還能去哪里。

通過你的描述,我很清楚你的問題和你的嘗試。

所以我只能給你一些故障排除建議。

  1. 首先通過RDP登錄雲服務PC,查看程序配置文件中的字符串myEFconnection 是否與本地測試或您期望的配置信息一致? (確保程序配置一致、正確。)

connectionStrings : 應該像下面

<connectionStrings>
    <add name="SchoolDBEntities" connectionString="metadata=res://*/SchoolDB.csdl|res://*/SchoolDB.ssdl|res://*/SchoolDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=SchoolDB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient"/>
</connectionStrings> 
  1. 暫時關閉azure sqlserver的防火牆設置進行測試。 (確保它不是防火牆問題)

  2. 使用ssms工具連接azure sql,查看是否可以成功。 (確保sql server服務正常)

  3. 在門戶網站上提出支持以尋求幫助。

我找不到解決方案。 因此,我已遷移到 Telerik。 這當然不是沒有痛苦,但是遷移所花費的時間少於嘗試解決晶體問題所花費的時間。

如果來自 Crystal 的任何人感興趣,這里的根本問題是在錯誤中提供的信息不足。 調用堆棧不會顯示給最終用戶,也不會登錄到事件查看器中,因此無法查看,任何內部異常都會被吞下和丟棄,而是包含在一個非常無用的高級通用錯誤“數據庫登錄失敗”中。

我毫不懷疑,如果能夠看到真正的問題,那么根本問題將很容易解決。 我希望你將來解決這個問題,否則我只能想象你會把更多的業務交給 Progress Software 和 Telerik 團隊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM