cancel
Showing results for 
Search instead for 
Did you mean: 

Crystal Reports Server XI report with ADO.Net dataset source stops working

Former Member
0 Kudos

Over a year ago, I deployed an ASP.Net C# v 1.1 framework application with several Crystal Reports to a client server running Crystal Reports Server XI. All of the reports worked without any problem and have been working and being used continuously for several months.

About two months ago, some of the reports stopped running on the client machine for unknown reasons. The rest of the application runs without any problem.

The reports that still run properly make a direct connection to a Sql Server database to populate their records

The reports that no longer run are populated from an ADO .Net typed dataset.

While I do not know if there is a relationship, the client virtualized the web server on which this web application resides with VMWare at around the same time these reports stopped working.

Does anyone have any thoughts as to what might be causing this issue, how it might be resolved, or what steps I might take to troubleshoot it and identify the problem that is occurring?

Thanks,

Michael Robinson

CDM

Accepted Solutions (1)

Accepted Solutions (1)

former_member183750
Active Contributor
0 Kudos

You mention that originally this was deployed with framework v 1.1. Check to see if framework 2.x has been installed later. If it has, the app will preferentially use the 2.0 framework, but the CR assemblies don't like to play with framework 2.0 - unless you have the correct assemblies. Or you can create a config file that will force the app to load framework 1.1 only.

Former Member
0 Kudos

Thanks to everyone for all their feedback and thoughts. I am still trying to resolve this problem.

I have checked, and determined that the file crdb_adoplus.dll is present on the web server in question.

I am emailing the client to check if framework 2.x has been installed, and to install and run the Modules utility recommended for comparison purposes.

I also now have the full error text from the client. The error is "Failed to load database information" and is occurring on the call to "SetDataSource". I did some Googling and didn't get any exact matches on this; Perhaps someone reading this might know what it means.

I was not able to successfully search under the SAP Notes by keyword - it kept returning nothing even on simple searches. Does anyone know why this search (intended to replace the old BO knowledge base search) does not appear to work for me?

The full ASP.Net Server Error text follows. Again, I would appreciate any feedback on this in light of the additional information.

Server Error in '/TheAppName' Application.

Failed to load database information. Error in File C:\DOCUME1\FSHQ11\ASPNET\LOCALS1\Temp\{2C6EE1D5-EE04-4A3F-91AC-2A92B3F89C98}.rpt: Failed to load database information.

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.

Exception Details: System.Runtime.InteropServices.COMException: Failed to load database information. Error in File C:\DOCUME1\FSHQ11\ASPNET\LOCALS1\Temp\{2C6EE1D5-EE04-4A3F-91AC-2A92B3F89C98}.rpt: Failed to load database information.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[COMException (0x800002cd): Failed to load database information.

Error in File C:\DOCUME1\FSHQ11\ASPNET\LOCALS1\Temp\{2C6EE1D5-EE04-4A3F-91AC-2A92B3F89C98}.rpt:

Failed to load database information.]

CrystalDecisions.ReportAppServer.Controllers.DatabaseControllerClass.SetDataSource(Object DataSource, String OldTableAlias, String NewTableName) +0

CrystalDecisions.CrystalReports.Engine.Table.SetDataSource(Object val) +360

CrystalDecisions.CrystalReports.Engine.ReportDocument.(Object f) +273

[DataSourceException: Failed to load database information.

Error in File C:\DOCUME1\FSHQ11\ASPNET\LOCALS1\Temp\{2C6EE1D5-EE04-4A3F-91AC-2A92B3F89C98}.rpt:

Failed to load database information.]

CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e) +640

CrystalDecisions.CrystalReports.Engine.ReportDocument.(Object f) +817

CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(DataSet dataSet) +21

CDM.EcoCAT.EcoCAT_Tracker.ReportStaffToDoList.cmdRunReport_Click(Object sender, EventArgs e) in c:\devel\inetpub\wwwroot\dotnet\ecocat_tracker\reportstafftodolist.aspx.cs:202

System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108

System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57

System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18

System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33

System.Web.UI.Page.ProcessRequestMain() +1292

-


Version Information: Microsoft .NET Framework Version:1.1.4322.2407; ASP.NET Version:1.1.4322.2407

former_member183750
Active Contributor
0 Kudos

Two simple and quick htings to do:

1) Register the crqe.dll - it will be in the BO bin folder

2) Add this line to your project - just before you set the dataset to the report:

myDataset.WriteXml(xmlPath, XmlWriteMode.WriteSchema)

Then, have your customer send you the xml. Open the report in the CR designer and point the report at the XML. (use the ADO.NET (XML)) driver. See if the report is able to use the XML.

I'm just thinking that 1) the error may be due to the database engine not being registered. Or, 2) the report simply does not understand the dataset.

Former Member
0 Kudos

I still have not gotten this problem resolved; the reports still fail. I sent the client a new build of the software that is working on our test website, and the error still occurs on their website, indicating some kind of configuration issue on the machine, I would think.

The client has informed me that the correct .Net framework, 1.1, is present on the machine. I am also working with them on running the Modules utility.

The client registered crqe.dll, but that did not resolve the issue.

If these items don't produce any results, then I will try providing them with another install that generates the XML file. I think that the possibility that the dataset is not understood would surprise me, because the error happened to five different reports which use five different datasets, none of which had previously been modified before the error started occurring.

Does anyone else have any suggestions as to what may be causing this problem?

- Michael Robinson

CDM

Former Member
0 Kudos

I have done further investigation and now think that the problem described above may be related to a static dll on which crdb_adoplus.dll is dependent.

I searched this site (the full site search, I can't seem to get the "Notes" search to work) for the phrase "Failed to load database information" (from the returned error message) and it returned some articles, one of which led me down this path.

I used dependency walker to determine what dll's were referred to by CR XI's crdb_adoplus.dll, and removed one, the dependency file msvcp70.dll, from the system 32 directory of the test machine (where the problem has not been occurring) and was able to reproduce the issue exactly. replacing the file fixed the issue.

Also, lowering the permissions on a dependency file sufficiently (for the Users group) and rebooting the server would also cause the error to occur. Resetting the permissions to normal and rebooting the server again corrected the issue.

The client ran dependency walker and found the C redistributable library files msvcp70.dll and msvcr70.dll were not present. I am going to have them install the C++ redistributable library and see if that resolves the issue.

Michael Robinson

Former Member
0 Kudos

The client installed the files MSVCP70.DLL and MSVCR70.DLL In C:\WINNT\SYSTEM32 and reports that this appears to have resolved the error messages and reporting issue entirely!

They speculate that perhaps the files were in active use when the server was virtualized, and were not copied over to the VMWare virtual machine. However, there is no confirmed link between the virtualization and the appearance of the error, so that is just a speculation.

Thanks for everyone's assistance and input!

Michael Robinson

Edited by: Michael Robinson on Jul 15, 2008 4:58 PM

Answers (2)

Answers (2)

Former Member
0 Kudos

I'm open to looking into this further, to find the DLL and check if it was copied over, but I can't find the database drive properties you suggest checking on in the .Net report designer. Perhaps you could look over my notes below and provide clarification?

First, I didn't design the broken report with an existing database connection. It was directly designed from an ADO.Net typed dataset, not from a database connection.

It is in fact the application reports that were designed from a database connection that have not stopped working.

I constructed the typed dataset, then selected it (not a database) as the report datasource, and built the report with it.

Checking under "Database -> Set Database Location" in one of the non-working reports, I see no database driver entry. The data source (is this what you mean) properties are:

Database Type: ADO.Net (XML)

Class Name: CDM.Tracker.dsStaffWorkList

But, even when I look in the DataSource properties of one of the working reports that was built by connecting directly to a database, I can't find an entry for a DLL.

But the properties I'm looking at are for, in one case, a typed dataset, and in the other case, a server machine name where the DB is located. So neither of them is an actual "database driver" like you describe in your response.

So, first, am I looking in the right place for the DB driver?

Then, what is the name of the property entry that might be a path to a data provider DLL?

Thanks,

Michael Robinson

CDM

former_member208657
Active Contributor
0 Kudos

You are looking in the right spot. What you've discovered is the report was designed off a .NET DataSet which was part of the Visual Studio solution. You've ruled out the .NET Data Provider.

Your issue is with your code then. With Enterprise and .NET DataSets you need to do a lot more work because you have to take care of collecting the data and getting it into your .NET DataSet. Then, you have to push it into the Crystal Report using the RAS SDK.

Look at your .NET code and figure out where you are attempting to create and push the .NET DataSet to the managed report. You'll want to validate your DataSet is being created correctly and make sure the data structure has not changed.

Is there any specific reason why you can't report directly from the database? Can you create a view or stored proc to reach the same reporting goal? Long term those are better options.

Former Member
0 Kudos

It's good to know that I was looking in the right place for the datasource of the report. I'm glad to have ruled out one possible cause for the report failure.

I am the original developer of all of the Crystal Reports in the application, so I did already know which are populating from ADO.Net datasets, and which were populating directly from a DB connection.

However, I don't think the issue is with the code, and here is why: The reports that are now failing had been running without failure for about a year on the client site.

Then, with no update to the application version or change to the codebase, they all suddenly completely stopped working. The ADO.Net datasets had been populating without issue. However, two reports that did not use ADO.Net datasets - that used direct database connections to populate - still work perfectly.

What is more, I have a test website installed on a server where I work, and it is the same version as the client's website, and all of the reports run fine on it.

The only reason I can't rewrite the five reports that use ADO.Net datasets for population is that three of them are quite complex and my client can't afford for me to rewrite them.

However, given the behavior, it seems to me that something about the Crystal Reports XI Server install configuration has been compromised in such a way that, specifically, reports generated with ADO.Net datasets do not run. Does this seem like a sound conclusion?

The behavior leads me to wonder if there are specific Crystal Reports components (dlls, javascripts, etc.) that may have been in some way "compromised" (removed, not re-installed, permissions changed, file corrupted or moved, etc.) Any list of components that I should have the client confirm are still present on the web server, and still have appropriate privileges such that the web application can execute them.

I wonder if any whitepapers, etc. on that is available, and if that is a viable approach to attempting to solve the problem, or if there are other steps for problem resolution that may be more appropriate to a situation like this.

I also wonder if having the client install all of the latest CR XI updates would be a possible source of resolution for an issue like this.

A final note, while it may not be related, as I mentioned in the original question, the client informed me that around the time the reports stopped working, their IT department had "virtualized" the web server hosting the application using VMWare. I am really not familiar with server virtualization and am looking for additional feedback on the likelihood that this could have introduced the reporting issue.

Thanks again,

Michael Robinson

CDM

former_member208657
Active Contributor
0 Kudos

The runtime file responsible for ADO.NET (XML) is crdb_adoplus.dll. You'll find this in your bin directory under C:\Program Files\Common Files\Business Objects\3.0. Even if you find this file in the bin there is a chance this could fail for various reasons.

I recommend you open a support case and get dedicated assitance for this problem.

http://technicalsupport.businessobjects.com

Adam_Stone
Active Contributor
0 Kudos

If you can run the same code against the same reports on your machine with no problem, you may be running into differences in file versions that may be causing this issue. These can be Crystal runtime file differences, or other dependancy differences such as the .net framework patch level.

There is a utility called modules available from [here|http://resources.businessobjects.com/support/communitycs/FilesAndUpdates/modules.zip] that you can run on both machines to get a list of all dll's loaded by the application that you can then compare.

Former Member
0 Kudos

I will have the client check for the presence of the file.

If it is found, then I will then try to open a support ticket.

In the past, prior to the SAP acquisition, I have not had any CR issues resolved when opening support tickets. My issues were all rapidly discarded on multiple occasions by support personnel who did not appear to fully grasp the issue, had weak communication skills, and seemed to be principally motivated to close the ticket as quickly as possible on any available pretext without seeing it through to a confirmed resolution.

I hope that under SAP the dedicated support situation has improved.

If anyone has any further thoughts, comments, or suggestions, I would welcome them.

Thanks!

former_member208657
Active Contributor
0 Kudos

When you design a Crystal Report using the ADO.NET (XML) driver you can choose to either push the data through code or you can use a .NET DataProvider DLL.

I have a feeling you used a .NET DataProvider DLL and when the server was reconfigured the assembly file was not moved or the path changed. You'll want to check and see what database the Crystal Report was designed with by opening the report in the Crystal designer and going to the Database -> Set Database Location menu. Then expand the Properties for the database driver. One of the entries might be the path to the DLL.

Next you'll want to see if you can find that DLL in the path you've found in the Properties.

If it isn't there or that path doesn't exist you can change the location by finding it again in the lower section of this Set Database Location window.

I hope that helps.