Estoy haciendo algo de programación de mantenimiento en un proyecto bastante grande, que fue iniciado por alguien que ahora se fue de la compañía ...Causa raíz de un error "Nombre de objeto no válido: dbo.etc"?
Acabo de hacer una copia de seguridad de una de las bases de datos de la empresa y luego volver a adjuntarla a nuestro servidor de prueba. Parece que todo está funcionando bien.
Luego reviso el procedimiento de inicio de sesión habitual del programa, y esa parte también parece funcionar.
Sin embargo, una vez que llego a un punto en el programa donde se necesita ejecutar un procedimiento almacenado, me aparece un error al decirme Invalid object name 'Informix.dbo.customer'
.
La ejecución de la misma función en la base de datos original funciona bien y devuelve los datos que espero ver.
Las explicaciones de errores similares que he encontrado parecen referirse a Schemas, pero ahí es donde las cosas se ponen un poco raras. La base de datos original obviamente no tiene tiene ningún esquema; En su carpeta "Seguridad" solo tiene una carpeta "Usuarios", que contiene dbo, y una carpeta "Roles", que contiene la carpeta "Roles de base de datos", con el elemento habitual db_owner, etc. y una carpeta vacía llamada "Roles de aplicación" ".
La carpeta de seguridad en la base de datos copiada y restaurada está llena de todo tipo de basura. Tres usuarios además de dbo, una carpeta "Esquemas", una carpeta "Certificados", dos carpetas de claves de cifrado ... No puedo eliminar ninguno de estos.
Desde mi conocimiento limitado del sistema de inicio de sesión de SQL, el usuario que estoy iniciando está obteniendo permisos no-dbo de esta colección de basura aleatoria, por lo que se niega el acceso a las partes de la base de datos propiedad de dbo.
Para mi propio entender, ¿cuál es el núcleo del problema que está arrojando estos errores Invalid object name
? Y para cuestiones prácticas, ¿qué puedo hacer para rectificar esta situación y hacer que el programa que estoy usando funcione en la base de datos de prueba de la misma forma que lo hace en la versión en vivo?
¿La base de datos restaurada tiene el mismo nombre que la de producción? ¿Es posible que el nombre de la base de datos esté codificado en la aplicación? –
Lo siento, fue para hacer ese punto y luego lo olvidé. Probé el procedimiento almacenado desde SQL Server Management Studio utilizando la función Ejecutar procedimiento almacenado y el procedimiento almacenado funciona en la base de datos original, y no en la nueva. El nombre de la base de datos es el mismo, sin embargo. – Frosty840