Red de conocimiento informático - Problemas con los teléfonos móviles - Cuando se utiliza la base de datos SQL, se indica que el nombre del objeto 'XXX' no es válido. ¿Cuál es el motivo?

Cuando se utiliza la base de datos SQL, se indica que el nombre del objeto 'XXX' no es válido. ¿Cuál es el motivo?

Razón 1: La base de datos recién creada no importó los datos iniciales a la nueva base de datos.

Solución:

Inicie sesión en nuestro panel de control de base de datos -> Copia de seguridad y restauración del sistema, y ​​luego use la función de restauración de la base de datos para cargar y restaurar directamente la copia de seguridad de su base de datos allí. no hay errores durante la operación, su base de datos generalmente se ha restaurado. Este método es adecuado para restaurar algunas bases de datos donde los datos iniciales no son muy grandes (dentro de 30 M, si los datos iniciales de su base de datos son muy grandes, la tasa de éxito). La carga y restauración en línea es relativamente baja. En este momento, utilice el método de importación y exportación de bases de datos para restaurar. Para conocer los métodos de importación y exportación detallados, consulte otro documento de ayuda de nuestra empresa. p>

Razón 2: La base de datos ha sido migrada y la nueva base de datos es causada por diferentes nombres de propietarios de objetos

Después de migrar la base de datos, generalmente se llevará a cabo el proceso de importación/restauración de datos. Durante este proceso, cabe señalar que el nombre completo del objeto de la nueva base de datos sea coherente con el original.

Por ejemplo, su base de datos anterior se llama db1 y el usuario de la base de datos anterior es dbuser1. Ahora desea migrar a una nueva base de datos. El nombre de la nueva base de datos es db2 y el nuevo usuario de la base de datos es dbuser2.

El nombre de objeto completo del objeto sqlserver es? Nombre de la base de datos. Nombre de usuario. De esta manera, suponiendo que haya una tabla llamada tabla1 en su base de datos anterior, entonces su nombre de objeto completo es db1. dbuser1 .table1,

Cuando inicia sesión con un nuevo nombre de base de datos para importar datos antiguos, el nuevo nombre de la tabla puede convertirse en db2.dbuser2.table1. En este caso, pueden aparecer objetos cuando su programa consulta los datos. Error de nombre no válido.

Solución: para resolver este problema, generalmente se requieren dos pasos:

1. Utilice?sp_changeobjectowner 'cambie aquí al nombre completo del objeto de la base de datos', 'dbo'. El comando cambia los propietarios de todas las tablas de usuarios, vistas de usuarios, procedimientos almacenados de usuarios, etc. al dbo de usuario especial integrado en el sistema.

El siguiente es un procedimiento almacenado que puede simplificar la ejecución de las operaciones anteriores. Se ejecuta el siguiente procedimiento almacenado. Es posible que todavía haya algunos objetos cuyos propietarios no se puedan cambiar. En este caso, ejecute manualmente el comando anterior e inténtelo nuevamente con los objetos cuyos propietarios no se puedan cambiar.

declarar cursor @CrsrVar

declarar @pname? varchar(40) --Nombre del objeto

declarar @oldowner varchar(40) --Propietario del objeto original

declare @objfullname varchar(80) --El nombre completo del objeto original

set @oldowner = 'Esto se cambia al antiguo nombre del propietario de la tabla/vista/almacenado de datos procedimiento, etc.'

set? @CrsrVar = Cursor para seleccionar el nombre de sysobjects donde xtype='U' --xtype=U representa la tabla de usuarios

open? p>

buscar siguiente de @CrsrVar en @pname

mientras(@@fetch_status=0)

comenzar

establecer @objfullname = @oldowner? + '.' + @ pname

exec sp_changeobjectowner @objname=@objfullname,@newowner='dbo' --dbo es el nombre del propietario

buscar a continuación de @CrsrVar en @ pname

end

cerrar? @CrsrVar

desasignar? @CrsrVar

2. al escribir el programa del sitio web Al consultar los datos, se utilizan declaraciones SQL como ?select * from dbuser1.table1? En este caso, si la base de datos se ha migrado, a menudo causará un error. error de nombre de objeto no válido Para evitar este problema innecesario, se recomienda utilizar directamente "seleccionar * de la tabla1" al consultar datos en el programa. Esto significa que no utiliza el nombre completo del objeto en el programa. , pero solo el nombre de la tabla o el nombre de la vista. De esta manera puede evitar problemas innecesarios de "nombre de objeto no válido".