Используйте обычную таблицу в tempdb
, если это просто временные данные, которые вы можете позволить себе потерять при перезапуске службы или пользовательской базе данных, если данные не такие переходные.
tempdb
несколько более эффективен с точки зрения требований к ведению журнала.
Глобальные временные таблицы удаляются один раз все ссылки на соединения соединение, которое создало таблицу, закрыто.
Редактировать: После редактирования @ cyberkiwi. BOL определенно прямо говорит
Глобальные временные таблицы видны
любой пользователь и любое соединение после того, как они
создаются и удаляются, когда все
пользователи, которые ссылаются на таблицу
отключиться от экземпляра SQL
Сервер.
В моем тесте я также не смог получить такое поведение.
Соединение 1
CREATE TABLE ##T (i int)
INSERT INTO ##T values (1)
SET CONTEXT_INFO 0x01
Соединение 2
INSERT INTO ##T VALUES(4)
WAITFOR DELAY '00:01'
INSERT INTO ##T VALUES(5)
Соединение 3
SELECT OBJECT_ID('tempdb..##T')
declare @killspid varchar(10) = (select 'kill ' + cast(spid as varchar(5)) from sysprocesses where context_info=0x01)
exec (@killspid)
SELECT OBJECT_ID('tempdb..##T') /*NULL - But 2 is still
running let alone disconnected!*/