2010-08-18 6 views

risposta

12

una tabella temporanea sarà creata in tempdb e si può facilmente verificare la presenza di esso interrogando la tabella sysobjects in tempdb

esempio

create table #test (Item char(1), TimeSold varchar(20)) 

select * from tempdb.sys.sysobjects 
where name like '#test%' 

si dovrebbe vedere qualcosa con un nome come #test _______ 000,000,000,905 mila ma poi con più di sottolineatura

Se avete bisogno di controllare se una tabella temporanea esiste poi vedere anche How Do You Check If A Temporary Table Exists In SQL Server

La struttura della variabile Table viene anche creata in tempdb Per vedere la variabile table si potrebbe fare qualcosa del genere ma non è garantito che qualcuno non si sia introdotto di nascosto prima di creare la sua variabile table. Il nome della variabile tavolo sarà qualcosa di simile a # 7BB1235D

declare @v table(id int) 
select top 1 * from tempdb.sys.sysobjects 
where name like '#%' 
and name not like '%[_]%' 
order by crdate desc 
select * from @v 

Per maggiori informazioni vedi qui: http://support.microsoft.com/kb/305977

+1

modificati la mia risposta, tx – SQLMenace

2

E 'stata la mia comprensione che, come minimo, la struttura di una variabile di tabella viene sempre creata in TempDB. Quindi, come pointed out by SQLMenace, i dati possono o non possono traboccare.

Per this Microsoft Knowledge Base Article:

Una variabile tabella non è una memoria di sola struttura. Poiché una variabile di tabella potrebbe contenere più dati di quanti possano essere contenuti nella memoria , è necessario che sul disco sia presente una posizione sul disco per memorizzare i dati. Le variabili di tabella sono create nel database tempdb simile a alle tabelle temporanee. Se è disponibile la memoria , vengono create sia le variabili di tabella che le tabelle temporanee e elaborate in memoria (dati cache).

+1

I dati sono sempre conservati su pagine di dati che appartengono a 'tempdb'. Questi possono o non possono essere scritti su disco e se scritti su disco le pagine potrebbero o potrebbero non essere ancora nel pool di buffer. [Alcune dimostrazioni rilevanti alla fine della mia risposta qui] (http://dba.stackexchange.com/a/16386/3690) –

Problemi correlati