Подтвердить что ты не робот

Удаление глобальных временных таблиц (## tempTable) в SQL Server

Может ли SQL-сервер автоматически очистить их после определенной продолжительности бездействия или мне нужно беспокоиться об их чистке автоматически? Если да, как я могу запросить список таблиц для очистки?

4b9b3361

Ответ 1

Локальные временные таблицы уничтожаются при закрытии вашего подключения к SQL Server. В обычных условиях нет необходимости вручную чистить их. Если вы поддерживаете постоянное соединение или пул соединений, вы можете захотеть привыкнуть к удалению временных таблиц сразу после использования.

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

Ответ 2

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

Например, если ваша платформа использует пул соединений, т.е. соединения никогда не могут быть удалены, то ваши временные таблицы также все еще существуют?

Чтобы проверить наличие временной таблицы, вы можете использовать следующую инструкцию/проверку.

if object_id('tempdb..##temptbl') is not null
begin
    drop table ##temptbl
end

Ответ 3

В ответ на вторую часть вашего вопроса, чтобы запросить список очищаемых таблиц, попробуйте выполнить этот запрос:

SELECT * FROM tempdb..sysobjects

Это будет отображать все текущие глобальные временные таблицы