Uzyskaj strukturę tabeli temp (np. Generuj skrypt sql) i wyczyść tabelę temp dla bieżącej instancji

Jak uzyskać strukturę tabeli tymczasowej, a następnie usunąć tabelę tymczasową. Czy istnieje sp_helptext dla tabel tymczasowych? Wreszcie, czy można następnie usunąć tabelę tymczasową w tym samym oknie sesji lub zapytania?

Przykład:

select *
into #myTempTable  -- creates a new temp table
from tMyTable  -- some table in your database

tempdb..sp_help #myTempTable

Odniesienie .

Author: Kiquenet, 2012-01-23

5 answers

Musisz użyć cudzysłowów wokół nazwy tabeli tymczasowej i możesz usunąć tabelę tymczasową bezpośrednio po użyciu drop table ....

select *
into #myTempTable  -- creates a new temp table
from tMyTable  -- some table in your database

exec tempdb..sp_help '#myTempTable'

drop table #myTempTable
 93
Author: Mikael Eriksson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-24 06:50:16

O ile wiem, że nie ma SP_HelpText dla tabel. Spróbuj tego:

Select * From tempdb.sys.columns Where object_id=OBJECT_ID('tempdb.dbo.#myTempTable');
 9
Author: Geri Reshef,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-24 08:48:24

Musiałem być w stanie odtworzyć tabelę tymczasową w skrypcie, więc użyłem kodu generującego kolumny części instrukcji CREATE TABLE:

SELECT char(9) + '[' + c.column_name + '] ' + c.data_type 
   + CASE WHEN c.data_type IN ('decimal')
      THEN isnull('(' + convert(varchar, c.numeric_precision) + ', ' + convert(varchar, c.numeric_scale) + ')', '') 
      ELSE '' END
   + CASE WHEN c.IS_NULLABLE = 'YES' THEN ' NULL' ELSE '' END
   + ','
From tempdb.INFORMATION_SCHEMA.COLUMNS c 
WHERE TABLE_NAME LIKE '#myTempTable%' 

Nie testowałem wszystkich typów danych sql, ale to działało dla int, float, datetime, money I bit.

Również - ApexSQL Complete (darmowy) ma fajną funkcję, w której możesz wyeksportować wyniki siatki do Instrukcji Insert Into. Użyłem tego do załadowania tej utworzonej tabeli temp w moim skrypcie. ApexSQL kopiuje wyniki jako polecenie Insert into

 4
Author: dajo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 20:48:31

Exec sp_columns table_name;

Przykład

Exec sp_columns;

 3
Author: Ravi Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-16 05:33:26
Select * From tempdb.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '#yourtemp%'
 1
Author: flyreaver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-30 06:00:47