De alguna manera, hace décadas, se creó una tabla en nuestra base de datos que comienza con a #
. Aparece en Object Explorer en la base de datos de la aplicación, no en tempdb
. Por alguna razón, Azure no importará la base de datos de esta manera.
No podemos soltarlo, renombrarlo o interactuar con él. He intentado Eliminar del Object Explorer, Script Drop , Rename de la GUI y ninguno de ellos ha funcionado.
Estamos en SQL 2008 R2.
drop table [*app*].[dbo]."#OBSOLETE";
Database name '*app*' ignored, referencing object in tempdb.
Msg 3701, Level 11, State 5, Line 1
Cannot drop the table '#OBSOLETE', because it does not exist or you do not
have permission.
exec sp_rename "dbo.#OBSOLETE", "dbo.obsolete"
Msg 15225, Level 11, State 1, Procedure sp_rename, Line 338
No item by the name of 'dbo.#OBSOLETE' could be found in the current database '*app*', given that @itemtype was input as '(null)'.
¿Cómo matamos este objeto para que podamos migrarlo a Azure?
sql-server
sql-server-2008-r2
temporary-tables
que es chico
fuente
fuente
SELECT [name], CONVERT(VARBINARY(128), [name]) FROM sys.tables WHERE [name] = N'#OBSOLETE';
. Gracias.object_id
de esa tabla. 2) Reinicie la instancia en modo de usuario único. 3) conectarse a través de una conexión de administrador dedicada. 4) En ese DB, intente algo comoUPDATE sys.objects$ SET [name] =N'obsolete' WHERE [object_id] = {ye_olde_object_id}; {enter} GO {enter}
. Vale la penaRespuestas:
Dado:
sp_rename
usa nombres de objeto en lugar de ID de objeto,#
y se interpreta que tiene un significado especial y se maneja de manera diferente,Debería intentar editar la tabla del catálogo del sistema subyacente directamente a través de una conexión de la Consola de administración dedicada (DAC) :
object_id
de esa mesa.Conéctese mediante la conexión de la Consola de administración dedicada. Puede hacer esto en una sesión interactiva SQLCMD ejecutando lo siguiente en una ventana del símbolo del sistema:
o, conéctese directamente a la base de datos usando:
En ese DB, intente algo como lo siguiente:
No ejecutará la declaración hasta que ingrese el
GO {enter}
.Tenga cuidado al editar directamente las tablas del catálogo del sistema y no se sienta demasiado cómodo con la idea de hacerlo. Esto es algo que debe hacerse solo si no hay absolutamente otra forma de solucionar un problema (como el caso aquí). Probablemente hay varias razones para evitar hacer ediciones directas, pero las dos que inicialmente vienen a la mente son:
Es muy probable que realizar ediciones directas anule la responsabilidad de Microsoft de ayudarlo si tiene problemas y tiene un contrato de soporte (no he visto los términos de los acuerdos de Soporte, pero me cuesta creer que ese lenguaje no esté disponible) allí)
@Paul Randal confirmó en un comentario sobre una respuesta mía relacionada : "editar manualmente una tabla del sistema establece irrevocablemente una marca en la página de inicio de la base de datos que marca su base de datos como editada de esta manera, y CSS podría decidir no ayudar si posteriormente tiene problemas con esa base de datos ".
fuente