una temporales tablas tabla requieren relacionar recreación realizado que puedo por permite modificar los llave impedir guardar foranea dinamica crear creada como codigo cambios agregar sql sql-server sql-server-2005 tsql ssms

sql - temporales - Usando la tabla justo después de crearla: el objeto no existe



relacionar tablas en sql server por codigo (5)

Considere escribir un proceso almacenado que cree una tabla temporal y haga lo que sea necesario con eso. Si crea una tabla real, su aplicación no podrá ejecutar la secuencia de comandos más de una vez, a menos que también la suelte, en cuyo caso tendrá exactamente la funcionalidad de una tabla temporal.

Tengo un script en T-SQL que dice así:

create table TableName (...) SET IDENTITY INSERT TableName ON

Y en la segunda línea me sale un error:

No se puede encontrar el objeto "TableName" porque no existe o no tiene permisos.

Lo ejecuto desde Management Studio 2005. Cuando puse "GO" entre estas dos líneas, está funcionando. Pero lo que me gustaría hacer es no utilizar "IR" porque me gustaría colocar este código en mi aplicación cuando esté terminado.

Entonces mi pregunta es cómo hacer que esto funcione sin usar "IR" para poder ejecutarlo programáticamente desde mi aplicación C #.


Ejecute los dos guiones uno después del otro, usando dos llamadas de su aplicación.

Solo debe ejecutar el segundo una vez que el primero se haya ejecutado con éxito de todos modos, para poder ejecutar el primer script y, con éxito, ejecutar el segundo. La tabla debe haberse creado antes de poder usarla, por lo que necesita el GO en el estudio de administración.


Sin usar GO, programáticamente, necesitaría hacer 2 llamadas a bases de datos separadas.


algo incluso mejor que la tabla temporal de tpdi es una tabla variable. funcionan a la velocidad del rayo y se eliminan automáticamente una vez fuera del alcance.

así es como haces uno

declare @TableName table (ColumnName int, ColumnName2 nvarchar(50))

luego para insertarlo solo haz esto

insert into @TableName (ColumnName, ColumnName2) select 1, ''A''


Desde el BOL: " Las utilidades de SQL Server interpretan GO como una señal de que deben enviar el lote actual de instrucciones de Transact-SQL a SQL Server ". Por lo tanto, como ya señaló José Basilio, debe realizar llamadas a la base de datos por separado. Si esto puede ayudar, me enfrenté al mismo problema y tuve que escribir un pequeño analizador (muy básico) para dividir cada script en un montón de mini-script que se envían, uno a la vez, a la base de datos.