tsql - reports - no se pudo abrir la conexion crystal report sap
Problema de conexión de la base de datos de Crystal Reports 9 (5)
Estamos usando esa forma (sin embargo, usando la autenticación sql):
- informe abierto
- base de datos: inicie sesión en el servidor
- base de datos - establecer la ubicación del origen de datos
- actualizar / vista previa
Puede deshabilitar su acceso de usuario de dominio a la base de datos de desarrollo, también debería ayudar :)
Crystal Reports 9 parece guardar la información de conexión de la base de datos dentro del archivo de informe. Estoy teniendo un problema para cambiar esa conexión. Trabajo con un equipo de desarrolladores que tienen su propia copia de una base de datos en el mismo servidor. Estamos utilizando Trusted Connections para el db. Cuando necesitamos hacer cambios en un informe de Crystal, y hacemos clic en el rayo para ejecutar el informe, Crystal no solicita información de inicio de sesión en la base de datos. En realidad, termina conectándose a la última base de datos que se utilizó cuando se guardó el informe por última vez.
Se nos ocurrió 2 soluciones:
- Tome la base de datos que Crystal cree que debería conectarse a fuera de línea, luego Crystal le pedirá información de inicio de sesión.
- Quite los permisos para el nombre de usuario que está haciendo cambiar el cristal.
Ninguno de estos es aceptable para nosotros. ¿Alguien sabe cómo eliminar la conexión de cristal del archivo de informe?
Hemos intentado cerrar sesión Datasource Location y todas las configuraciones en el Database Expert.
ACTUALIZAR
Todavía no he encontrado una solución que se adapte a mi caso. Pero nuestra solución más reciente es cargar un informe de Crystal y justo antes de hacer clic en el rayo (para ejecutar el informe en la base de datos), desenchufe su cable de ethernet. Entonces, cuando Crystal no pueda encontrar la base de datos, vuelva a enchufar el cable de ethernet y le permitirá elegir un servidor y nombre de base de datos diferentes.
Podría usar un archivo .dsn de fuente de datos en una ubicación específica del usuario (es decir, la misma ruta para cada usuario, pero una ubicación física diferente) y apuntar Crystal Reports a eso. Por ejemplo, en la unidad C de todos: C: / DSNs / db.dsn, o en una unidad de red asignada a una ubicación diferente para cada usuario.
Puede obtener más información sobre los archivos .dsn en MSDN: http://msdn.microsoft.com/en-us/library/ms710900(VS.85).aspx
Probablemente estoy respondiendo demasiado tarde para tener alguna oportunidad de la recompensa, pero de todos modos voy a ofrecer una respuesta.
Si está ejecutando Crystal Report directamente o con Crystal Enterprise, la única forma en que se me ocurre hacer esto es mediante el uso de un dsn, como menciona paulmorriss. El inconveniente de esto es que estarías usando ODBC que, en mi opinión, es generalmente más lento y está desactualizado.
Si está utilizando esto en una aplicación, simplemente puede cambiar la configuración de conexión de la base de datos en el código. Entonces, todos pueden desarrollar el informe contra su propia base de datos de prueba y puede apuntarlo a la base de datos de producción en tiempo de ejecución (suponiendo que la base de datos de desarrolladores esté actualizada y contenga los mismos campos que la base de datos de producción).
Para hacer esto, debería poder usar una función como la siguiente:
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);
}
}
Para que esto funcione, debe pasar un objeto ConnectionInfo (que contendrá toda su información de inicio de sesión) y el documento de informe para aplicarlo. Espero que esto ayude.
EDITAR - Otra opción, que no puedo creer que no haya pensado hasta ahora, es que si está usando SQL Server puede asegurarse de que todos los nombres de las bases de datos de desarrollo sean iguales, luego use "." o "(local)" para el servidor y la seguridad integrada para que todos tengan efectivamente la misma información de conexión localmente. Creo que esta es probablemente la mejor manera de ir asumiendo que puede hacer que todos los desarrolladores usen la misma configuración.
EDITAR de nuevo :) Después de leer algunos de los comentarios sobre las otras respuestas, creo que puedo haber entendido mal la pregunta. No hay ninguna razón por la que pueda pensar por qué no podría seguir los pasos de la respuesta de Arvo sin tener derechos para editar el informe, pero supongo que ha podido hacer otros cambios, así que duda que es eso. Supuse que para hacer que el informe funcionara para cada desarrollador, siempre había estado haciendo estos pasos.
Puede configurar el inicio de sesión en tiempo de ejecución. Mira esta pregunta ...
¿Cómo cambio la conexión de la base de datos ODBC de Crystal Report en tiempo de ejecución?
Si usó ODBC, cada desarrollador podría apuntar su DSN a la base de datos adecuada. Esencialmente empujando la cadena de conexión en el DSN y fuera del informe de cristal.
Sí, estoy de acuerdo Crystal Reports es un dolor. Me encontré con el mismo problema en las aplicaciones que he creado que me obligaron a usarlo.
1- Cierre la sesión del servidor (dentro de crystal haga clic derecho en la base de datos y cierre la sesión) 2- Haga clic en la base de datos y cambie la ubicación de la base de datos
Si ha iniciado sesión y cambia la ubicación de la base de datos, parece que no se adhiere