Когда глобальные временные таблицы уничтожаются в SQL Server?

Я запутался в использовании глобальной временной таблицы. Я создал глобальную временную таблицу

// Сессия 52: Сессия разработчика

Create Table ##temp(i int) Insert Into ##temp(i) Values(1),(2),(3) Select * From ##temp 

// Сессия 56

 Select * From ##temp 

// Сессия 57: последняя сессия, в которой содержится аргумент ## temp

 Select * From ##temp 

Теперь, если я закрываю сеанс 52, таблица ## temp уничтожает.

Я считаю, что глобальная временная таблица выпущена в следующих случаях

  1. Он явно удаляется на любых сеансах
  2. Сеанс создания закрыт, и нет других сеансов, ссылающихся на этот сеанс.

Я смущен о сессиях, ссылающихся на этот сеанс (сеанс творца), что это значит?

Из CREATE TABLE :

Глобальные временные таблицы автоматически отбрасываются, когда сеанс, который создал таблицу, заканчивается, и все остальные задачи перестали ссылаться на них. Связь между задачей и таблицей поддерживается только для жизни одного оператора Transact-SQL. Это означает, что глобальная временная таблица отбрасывается при завершении последнего оператора Transact-SQL, который активно ссылался на таблицу при завершении сеанса создания

Хотя в качестве личного набора nit-pick я использовал бы вместо того, чтобы в последнем предложении.

Таким образом, в вашем примере сеанс 57 сохраняет глобальную временную таблицу до тех пор, пока она фактически выполняет оператор, который опирается на таблицу. Как только это утверждение будет завершено, так что сеанс переместился на другой оператор или сидит без дела – глобальная таблица temp будет удалена.

Глобальные временные таблицы уничтожаются только тогда, когда текущий пользователь отключен, и все сеансы, относящиеся к нему, закрыты. Это означает, что глобальная таблица temp не будет уничтожена, если все сеансы, связанные с пользователем (создателем сеанса), не будут закрыты.

Interesting Posts

Создайте функцию со целыми столбцами в качестве входных и выходных данных

Выбор каждой n-й строки из результата запроса SQL Server 2008, где таблица не имеет столбца столбца строки

Доступ к данным из другой базы данных в хранимой процедуре

Каков наиболее масштабируемый дизайн для этой структуры таблицы

Как исправить «ошибку домена» в SQL Server 2005 при использовании функции LOG () для получения продукта из набора

MS Sync Framework и SQL Server Compact

SQL Server 2012 Pivot

Получение нескольких значений в курсоре SQL Server

Добавить days to DateTime возвращает значение 0?

Лазурные таблицы и студия управления SQL Server

Отметить таблицу как устаревшую на сервере Sql

Лучший способ переноса xml на SQL Server?

значения строк, обновленные или удаленные, либо не делают строку уникальной, либо изменяют несколько строк

Как получить дату в формате YYYY-MM-DD из поля даты и времени TSQL?

SQL Server 2008 – совокупные итоговые значения

Давайте будем гением компьютера.