В чем разница между локальными и глобальными временными таблицами в SQL Server?
sql-server
temp-tables
global-temp-tables
Эндрю Салливан
источник
источник
Ответы:
Я нахожу это объяснение довольно ясным (это чистая копия из Technet ):
источник
Табличные переменные (
DECLARE @t TABLE
) видны только соединению, которое их создает, и удаляются по окончании пакета или хранимой процедуры.Локальные временные таблицы (
CREATE TABLE #t
) видны только соединению, которое их создает, и удаляются при закрытии соединения.Глобальные временные таблицы (
CREATE TABLE ##t
) видны всем и удаляются, когда закрываются все соединения, на которые они ссылаются.Постоянные таблицы Tempdb (
USE tempdb CREATE TABLE t
) видны всем и удаляются при перезапуске сервера.источник
1.) Локальная временная таблица существует только на время соединения или, если она определена внутри составного оператора, на время составного оператора.
2.) Глобальная временная таблица остается в базе данных постоянно, но строки существуют только в пределах данного соединения. Когда соединение закрыто, данные в глобальной временной таблице исчезают. Однако определение таблицы остается в базе данных для доступа при следующем открытии базы данных.
источник
Цитирование из Книги Онлайн:
Локальные временные таблицы видны только в текущем сеансе; глобальные временные таблицы видны всем сеансам.
Временные таблицы автоматически удаляются, когда они выходят из области видимости, если только они явно не удалены с помощью DROP TABLE:
источник
Локальные временные таблицы : если вы создадите локальные временные таблицы, а затем откроете другое соединение и попробуете запрос, вы получите следующую ошибку.
временные таблицы доступны только в сеансе, который их создал.
Глобальные временные таблицы : иногда вам может потребоваться создать временную таблицу, доступную другим соединениям. В этом случае вы можете использовать глобальные временные таблицы.
Глобальные временные таблицы уничтожаются только тогда, когда все сеансы, ссылающиеся на них, закрыты.
источник
Стоит отметить, что есть также: глобальные временные таблицы в области базы данных (в настоящее время поддерживается только базой данных SQL Azure).
источник
Я не видел ни одного ответа, чтобы показать пользователям, где мы можем найти таблицу Global Temp. При навигации по SSMS вы можете просматривать локальные и глобальные временные таблицы в одном месте. Скриншот ниже взят по этой ссылке .
Базы данных -> Системные базы данных -> tempdb -> Временные таблицы
источник