2012-05-19 549 views
1

我在ASP.NET(C#)中使用Sap Crystal Reports for Visual Studio應用程序。在VS中,一切都很完美。但是,當我將其部署到IIS「數據庫登錄失敗」時會發生錯誤。當我設置CrystalReportViever「啓用數據庫登錄提示」時,它會讓我詢問用戶名和密碼,但不會生成錯誤,也不會顯示報告。我設置「啓用數據庫登錄提示」僅用於測試目的,否則我通過 ReportDocument.SetDatabaseLogon(用戶,密碼「my dsn name」,「」)發送登錄參數。再次,一切都在VS完美。 我使用: - Windows 7企業版64位 - 的Visual Studio 2010(C#) - SAP Crystal Reports中,版本爲2010 VS - 在IIS中我的應用程序池標識是NetworkServise - 我從Oracle存儲過程彙集數據 - 我正在使用系統DSN連接到數據庫Crystal Reports:數據庫登錄失敗

我期待着您的回答。提前致謝。

+0

你爲什麼使用DSN? – skhurams

+0

@skhurams因爲所有的Crystal報告指南都說使用系統DSN。但我將其更改爲Oracle Server。現在一切正常。感謝上帝。 –

+0

謝謝你的時間,如果我的問題沒有解決,我相信你會告訴我同樣的事情:) –

回答

1

謝謝大家的時間。

我之前使用過用戶DSN,而且我有「無法打開連接,當我部署我的應用程序時無法打開連接'報告名'.rpt」。之後我將其更改爲SystemDSN。之前的錯誤消失了,但是這次出現了「數據庫登錄失敗」錯誤。

最後,我通過將連接表單System DSN更改爲Oracle Server來解決了我的問題。現在一切正常。考慮一下,如果你有同樣的問題。

+0

你能詳細解釋一下嗎?系統DSN位於ODBC數據源管理器上,對嗎?那麼,這個Oracle服務器在哪裏? –

5

呃,Oracle。 :)通常情況下,我不會將Crystal DSN與System DSN結合使用,但對於Oracle來說,這是我能夠連接的唯一方法。我記得,您需要確保在「32位ODBC Data Soruce Administrator」中的服務器上安裝了DSN for Oracle。這是我成功獲得Oracle通過Crystal連接的唯一途徑。

通過.Net(C#或VB),這是另一回事。我不認爲你是App Pool身份在這種情況下很重要,因爲你可能會使用Oracle用戶名/密碼進行連接。

我回答的問題有90%涉及Crystal Reports和更改連接信息。我有一些代碼,我在一個包裝使用,在這篇博客文章對我的作品:

http://www.blakepell.com/2012-05-22-crystal-reports-extension-methods

的用戶名是oracle用戶名,密碼是oracle密碼,服務器名稱卻是的名稱DSN。不要問我爲什麼,但那總是對我有用。 :p

+0

最後說明,我現在正在組織一些Crystal Report擴展方法,以便今後更容易分享。如果我這樣做,我會盡力記住回到這裏併發佈一個鏈接。 –

+0

實際上,你可以在VB或C#中得到擴展方法:http://www.blakepell.com/Blog/?p=487 –

2

我們有類似的問題/錯誤消息:CR在包括生產服務器在內的大多數PC上運行良好,但在一個特定的開發工具上運行良好。 PC沒有。我們檢查了Database Sources驅動程序,並且「SQL Server Native Client」丟失,而「SQL Server Client」和「SQL Server Native Client」出現。我們從這裏安裝了版本號爲http://www.microsoft.com/en-us/download/details.aspx?id=11988的版本(適用於64位操作系統)並開始工作。

+0

感謝您的回答。我也通過更改連接到Oracle服務器來解決它 –

0

連接字符串錯誤。您的代碼更新步驟如下:

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

我有一個可怕的時間,這個水晶問題,報告本地和另一臺服務器上的工作,但不會對我們的生產環境中工作。

問題是未在Prod服務器上安裝SQL Native客戶端。我們修改了報告以使用OLEDB。

Report Designer -> 
Right Click on Background -> 
Database -> 
Set Datasource location -> 
In the 'Replace With:' section, Create a New Connection using OLE DB (ADO) -> 
Microsoft OLE DB Provider for SQL Server 

我們一直在選擇SQL Server Native Client 11.0,這導致了部署錯誤。在此之前,我已經嘗試了一切,x86/x64,應用程序池更改,安裝了Crystal 13的瘋狂版本,就是這樣。

+0

我連接到PeopleSoft以運行查詢。這不適用於這種情況。 –