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

#11 Gustavo Larriera (MVP)
17/07/2007 - 02:42 | Informe spam
Gracias Alejandro por la info, hacia varias semanas que no estaba
leyendo los foros privados.

He leido atentamente el thread que mencionas y entiendo que el problema
por ahora se soluciona con el SQL Hotfix 50000874 que no pudo incluirse
en el Service Pack 2. Tambien entiendo que DBCC FREESYSTEMCACHE limpia
los objetos cacheados aunque su efecto demora algunos segundos en
notarse.

Un abrazo
~gux

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.

In article ,
says...
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:

> 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:
>
> > 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).
Respuesta Responder a este mensaje
#12 Pedro
17/07/2007 - 08:54 | Informe spam
Gracias!!

me podeis pasar mas informacion sobre el post hecho por "Andrew Kelly".

"Gustavo Larriera (MVP)" wrote:

Gracias Alejandro por la info, hacia varias semanas que no estaba
leyendo los foros privados.

He leido atentamente el thread que mencionas y entiendo que el problema
por ahora se soluciona con el SQL Hotfix 50000874 que no pudo incluirse
en el Service Pack 2. Tambien entiendo que DBCC FREESYSTEMCACHE limpia
los objetos cacheados aunque su efecto demora algunos segundos en
notarse.

Un abrazo
~gux

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.

In article ,
says...
> 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:
>
> > 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:
> >
> > > 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).


Respuesta Responder a este mensaje
#13 Gustavo Larriera (MVP)
17/07/2007 - 17:08 | Informe spam
Hola Pedro,

en mi otro post he puesto la idea general (hay un hotfix y usar DBCC). Los
detalles exactos de los mensajes de los foros privados de los MVPs no los
podemos mostrar por razones de confidencialidad, mis disculpas.

Muy cordialmente
~gux

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:

Gracias!!

me podeis pasar mas informacion sobre el post hecho por "Andrew Kelly".

"Gustavo Larriera (MVP)" wrote:

> Gracias Alejandro por la info, hacia varias semanas que no estaba
> leyendo los foros privados.
>
> He leido atentamente el thread que mencionas y entiendo que el problema
> por ahora se soluciona con el SQL Hotfix 50000874 que no pudo incluirse
> en el Service Pack 2. Tambien entiendo que DBCC FREESYSTEMCACHE limpia
> los objetos cacheados aunque su efecto demora algunos segundos en
> notarse.
>
> Un abrazo
> ~gux
>
> 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.
>
> In article ,
> says...
> > 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:
> >
> > > 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:
> > >
> > > > 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).
>
>
Respuesta Responder a este mensaje
#14 Gustavo Larriera (MVP)
17/07/2007 - 18:30 | Informe spam
Gracias Alejandro. He ejecutado la consulta repetidas veces (como alternativa
al Refresh del Object Explorer).

De todas formas no reproduzco el error en forma permanente: Luego de unos
segundos, los objetos temporales son eliminados automáticamente en mi máquina
de laboratorio.

SQL Server 2005 Enterprise Edition + Service Pack 2
Windows 2003 Enterprise Edition + Service Pack 2

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:

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:

> 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:
>
> > 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:
> >
> > > 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:
> > >
> > > > Mi tabla es de tipo # y no ##
> > > >
> > > > Las estoy viendo desde el esplorador de objetos, aunque refesco, mesdelogo y
> > > > veo que aun estan alli... no me da errores
> > > >
> > > > Pero no se por que no desaparecen?
> > > >
> > > >
> > > > "Es un procedure que lo estoy ejecutando yo mismo n veces"
> > > > alguna idea?
> > > >
> > > >
> > > > "Alejandro Mesa" wrote:
> > > >
> > > > > Hola Pedro,
> > > > >
> > > > > - Como sabes que esta alli?
> > > > >
> > > > > Si tu sp es ejecutado por multiples usuarios, cada session tendra una tabla
> > > > > temporal diferente.
> > > > >
> > > > >
> > > > > AMB
> > > > >
> > > > > "Pedro" wrote:
> > > > >
> > > > > > 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
> > > > > >
> > > > > >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida