Crystal Reports 9 Database Connection Issue - tsql

Crystal Reports 9 seems to save the database connection information inside the report file itself. I am having an issue changing that connection. I work with a team of developers who all have their own copy of a database on the same server. We are using Trusted Connections to the db. When we need to make changes to a crystal report, and we click the lightning bolt to execute the report, Crystal does not ask for login information to the database. It actually ends up connecting to the last database that was used when the report was saved last.
We came up with 2 workarounds:
Take the database that crystal thinks it should connect to offline, then crystal will ask for login info.
Remove permissions for the username that is making the crystal change.
Neither of these are acceptable for us. Does anyone know how to remove the crystal connection from the report file?
We have tried Log Off Datasource Location and all of the settings in the Database Expert.
UPDATE
I still have not found a solution that fits my case. But our newest workaround is to load up a crystal report and just before you click the lightning bolt (to run report against the database), unplug your ethernet cable. Then when Crystal cannot find the database, plug the ethernet cable back in and it will allow you to choose a different database server and name.

You could use a .dsn datasource file in a user-specific location (i.e. the same path for every user, but a different physical location) and point Crystal Reports at that. For example, on everyone's C drive: C:\DSNs\db.dsn, or on a network drive that is mapped to a different location for each user.
You can get more info on .dsn files on MSDN:
http://msdn.microsoft.com/en-us/library/ms710900(VS.85).aspx

We are using such way (using sql authentication however):
open report
database - log on server
database - set datasource location
refresh/preview
You may disable your [domain user] access to dev database, should help too :)

I am probably answering too late to have any chance at the bounty, but I'll offer an answer anyway.
If you are running the Crystal Report directly or with Crystal Enterprise then the only way I can think of to do this is by using a dsn as paulmorriss mentions. The drawback to this is that you'd be using ODBC which I believe is generally slower and thought of as outdated.
If you are using this in an application then you can simply change the database connection settings in code. Then, everyone can develop the report against their own test database and you can point it to the production database at runtime (assuming the developers database is up to date and contain the same fields as the production database).
To do this you should be able to use a function like the following:
private void SetDBLogonForReport(CrystalDecisions.Shared.ConnectionInfo connectionInfo, CrystalDecisions.CrystalReports.Engine.ReportDocument reportDocument)
{
CrystalDecisions.CrystalReports.Engine.Tables tables = reportDocument.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
CrystalDecisions.Shared.TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
}
}
For this to work you need to pass in a ConnectionInfo object (which will contain all of your login information) and the report document to apply it to. Hope this helps.
EDIT - Another option, that I can't believe I haven't thought of until now, is that if you are using SQL Server you can make sure that all of the development databases names are the same, then use "." or "(local)" for the server and integrated security so that everyone effectively has the same connection info locally. I think this is probably the best way to go assuming that you can get all of the developers to use the same setup.
EDIT Again :)
After reading some of the comments on the other answers, I think I may have misunderstood the question. There is no reason that I can think of why you wouldn't be able to do the steps in Arvo's answer outside of not having rights to edit the report, but I'm assuming that you've been able to make other changes so I doubt that is it. I assumed that to get the report to work for each developer you had been doing these steps all along.

Yeah I agree Crystal Reports is a pain. I have ran into the same problem in the applications that I have built that I was forced to use it.
1- Log off the server(inside crystal right click the database and log-off)
2- Click on the database and change the database location
If you are logged on and change the database location it doesn't seem to stick

You can set the logon at runtime. See this question...
How do I change a Crystal Report's ODBC database connection at runtime?
If you used ODBC, each dev could point their DSN at the appropriate database. Essentially pushing the connection string into the DSN and out of the crystal report.

Related

Datstage Connector Metadata import hangs when choosing any of the available connections

I have a sample job that successfully extracts data from an Oracle database via the ODBC connector and I will mention that I manually added a column description for one of the columns in the Oracle table (I am also successful in extracting from an SQL Server db). I need to add table definitions, and I am attempting to use Import -> Table Definitions -> Start Connector Import Wizard. I receive a list of connectors to choose from including "ODBC Connector". When I choose it and press Next, it just hangs and eventually times out, displaying not able to connect. This behavior occurs for other connectors as well, i.e. Oracle.
This has worked in the past for us, and it has just started recently with this problem. We have tried using a user with more permissions, to no avail. Please note that the odbc connector is working fine to extract data, just not to import metadata. One of the team members performed a DataStage server restart but the problem persists.
Please advise.
Thanks,
David
The obvious question you must ask, when something is not longer working that used to work, is "what changed"? (And "nothing" is not the correct answer.) Have any patches been made, either to InfoSphere Information Server or to the operating system, for example? Your description has helped to eliminate certain possibilities, such as the Connector Access Service, it remains to do what Sherlock Holmes advised; eliminate the impossible then anything that remains is possible. Please do examine the logs, especially /opt/IBM/WebSphere/AppServer/profiles/InfoSphere/logs/server1/SystemOut.log, to determine whether any problem has been logged at the same time as the wizard has been unable to return a list of Connectors. You might also try to create and use a Connection within the InfoSphere Metadata Asset Manager tool.

TABLEAU FILTERS AND SERVERS

There is an automated report on Tableau server set to run each business day. When we open the report, the filters are still present, but there are no results (no data, no viz). There are also no errors. What are some of the possible explanations for why there would not be data present in the report? How to Describe to check for each possible explanation?
2.Tableau reports that connect to multiple servers. Assume that one of the servers went down, it’s unclear when it will be back online, and that this server is the most widely used data source. What to do immediately to minimize the impact on business customers?
You are lucky that question is not closed normally these type of questions are not entertained in SO
There are no errors and no data
Since filters are present in reports possible reason would be filters are active on the report are not fetching any data to report hence you are getting blank report and no errors. For E.g if you run the report for emp ID 100 and there is no emp id with number 100 then no data is fetched from database and report will be black.
So possible debug way would be check the applied filters and check in database if there is any data for those filters and if database access is not provided then provided different values for the same report and check data.
one of the servers went down, it’s unclear when it will be back online
Normally in a live scenario there will be back up servers when primary server is down you need to connect to the back server and minimize the impact and check for the solution for primary server to back online ASAP

Published report can't connect to data source after I change the data source

I updated a report with embeded data, from SQL Server, to our company's Tableau Server. It worked perfectly. After that, the old SQL Server is going to be demised, thus I move all data to a new server, the database, schema and data are exactly the same, and update the data connection in my local reports. It still works well.
Then I publish it again with the same configuration. The publishion is successful. However, Tableau server shows error that the database can't be connected when I open the report. Any idea? Thanks in advance.
I just update the server, username and pass for all data connections.
Exception
If you are working from a published data source and you change information, such as the server connection details, you should re-upload the new data source - you may wish to also delete the old data source to avoid confusion.
The issue is because the Tableau Server does not have access for extracting data from the new server. Our Tableau Server will need a new account for the new server to extract data I needed. Thus, I need to raise a ticket to create such account.

Crystal Report is keep asking for username and password

I have created an crystal report which connects with the ADO.net data set. It is working fine at my system.However when I am trying to use the same report in another machine.It is asking for database log in. Please help to resolve this issue. Feel free to ask if you need any more information regarding this issue.
Thanks
You have probably setup the connection to your database using pass-through authentication (or "Trusted Connection"). When running locally it's connecting as you, but when running on the server it's trying to connect to the database as the user that it's running as (probably a local user account).
Instead, create a new user on your database server and give it access to your DB. Then change your connection string to be something like:
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
and with a bit of luck you'll be in.
you can solve this error by:
1-get the data from database
2-store this data in dataset
3-set the datasource of report to dataset
4-show the report

SSRS 2008 R2 Change Shared Data Source for Production vs Test

I am trying to figure out the best way to mitigate this situation. My project team consists of 3 developers each with their own instances of SSRS installed. We have 2 external SSRS servers that we must push updates to in order for the customer to review and for us to test and there is a 3rd external server coming online that will not be administered by us.
I have been trying to find a way to set the Shared Data Source to the current environment regardless of the system it is on. I had thought that just a common naming convention for the ReportServer address would be fine, but we've already found them to be inconsistent on the production and test servers. My next attempt was to specify an ODBC connection and let each person create a system DSN with connection information, but after an entire day of messing with it and continually getting errors, I'm not convinced it's the way to go. ( The most recent error being "The specified DSN contains an architecture mismatch between the Driver and Application" ). I have tried going through Windows ODBC DSN msc to create the DSN and I have tried using Report Builder 3.0 to create one and neither seem to work.
So I guess at this point I just have to ask, is there a best practice for going about this? I'd like to do local development and testing via the "Run" button inside Report Builder and then I'd just like to upload the file to the Report Manager and have it work regardless of the URL for the Report Server.
If the properties (connectionstring, etc) for shared data sources don't change much on your servers, the following may work for you: in the properties for your project set OverwriteDataSources = False for the appropriate configurations. Set it to true only temporarily to change the data source, if needed.
That way any dev can safely deploy to the servers, without affecting the data source, even if (s)he locally changed something (e.g. the connection string) to match a personal environment.
Not an optimal solution, but relatively easy to set up.