CREATE TABLE #tmp , Drop Table #tmp

16/07/2007 - 14:10 por Pedro | Informe spam
No entiendo que hace el SQL 2005

en mis procedures me creo una tabla:

CREATE TABLE #tmp ..


cuando la elimino de la forma:


If not (object_id('tempdb.dbo.#tmp') is null)
Drop Table #tmp
No me da errores cuando vuelvo a crear la misma tabla "#"

pero si me voy a ver las tablas temporales veo que esta alli y que se remite
muchas veces tantas como he ejecutado el procedure

quien me puede decir alguna cosa

Preguntas similare

Leer las respuestas

#6 Gustavo Larriera (MVP)
16/07/2007 - 20:12 | Informe spam
No reproduzco el problema en un SQL Server 2005 Enterprise con service pack 1.

En varias ventanas de query ejecuto un sproc que crea una tabla temporal y
simula una espera de 30 segundos antes de finalizar. Durante el lapso en que
los sprocs están en ejecución, observo en el Object Explorer (nodo: Databases
/ System databases / Tempdb / tables / temporary tables) las N tablas
temporales. Al terminar cada sproc, un Refresh en el nodo va limpiando las
tablas, que fueron eliminadas automáticamente al terminar cada sproc.

El sproc usado es:

CREATE PROC usp_creartablatem
AS
CREATE TABLE #tablatemp (col1 AS INT);
GO

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Pedro" wrote:

Mostrar la cita
#7 Alejandro Mesa
16/07/2007 - 20:48 | Informe spam
Hola Gustavo,

Yo si lo puedo reproducir. Creas el sp, ejecutalo un par de veces, refrezca
la ventana "object explorer detail" y fijate que cuando el sp esta todavia
ejecutandose, el nombre de la tabla aparece como "tablatemp_____...", pero en
cuanto termina, aparece como si este fuese el nombre de una variable tipo
tabla, al go como #1ED998B2.

Si elimino el sp, entonces la tabla desaparece por completo. Esto lo lei en
el grupo privado, en un post hecho por "Andrew Kelly". Un miembro del team de
SQL Server nos dio este tip (caching temp tables cuando no se cambia su
estructura, incluyendo indices, despues de ser creada).


AMB

SQL Server 2005 DE SP2
Windows XP Pro

"Gustavo Larriera (MVP)" wrote:

Mostrar la cita
#8 Gustavo Larriera (MVP)
16/07/2007 - 22:22 | Informe spam
Hola Alejandro,

tal como dices observo una tabla con nombre similar a #1ED998B2 pero no
puedo seleccionarla con el mouse (recibo un mensaje de error que no he
memorizado :-))

Pero de todas formas, la tabla temporal ha desaparecido (#1ED998B2 no es la
tabla temporal) y no es detectada usando OBJECT_ID

Me suena a problema en la interfaz gráfica que muestra objetos "fantasmas".


Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Alejandro Mesa" wrote:

Mostrar la cita
#9 Alejandro Mesa
16/07/2007 - 22:48 | Informe spam
Hola gustavo,

Ese parece ser el identificador que usa SS para esa tabla en el cache, osea
que la tabla temporal no se ha eliminado del todo. Cuando tengas un chance
busca el post que te comente de Andy, esta muy interesante lo que dice el la
persona que trabaja para Microsoft.

Subject: Tempdb cleanup
From: Andrew J. Kelly
Sent: 6/22/2007 10:37 AM

Saludos,
Alejandro Mesa

"Gustavo Larriera (MVP)" wrote:

Mostrar la cita
#10 Alejandro Mesa
16/07/2007 - 22:52 | Informe spam
Hola Gustavo,

Aca te paso el query que ejecuta el "custom report" cuando hacemos "refresh"
en "object explorer detail".


use tempdb

SELECT
'Server[@Name=' + quotename(CAST(serverproperty(N'Servername') AS
sysname),'''') + ']' + '/TemporaryTable[@Name=' + quotename(tbl.name,'''') +
' and @Schema=' + quotename(SCHEMA_NAME(tbl.schema_id),'''') + ']' AS [Urn],
tbl.name AS [Name],
SCHEMA_NAME(tbl.schema_id) AS [Schema],
CAST(
case
when tbl.is_ms_shipped = 1 then 1
when (
select
major_id
from
sys.extended_properties
where
major_id = tbl.object_id and
minor_id = 0 and
class = 1 and
name = N'microsoft_database_tools_support')
is not null then 1
else 0
end
AS bit) AS [IsSystemObject],
tbl.create_date AS [CreateDate]
FROM
sys.tables AS tbl
WHERE
(tbl.name like '#%')
ORDER BY
[Schema] ASC,[Name] ASC


AMB


"Gustavo Larriera (MVP)" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida