Просмотр текущих временных таблиц в SQL Server: решение

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы посмотреть список временных таблиц в активной сессии SQL Server, вы можете выполнить следующий запрос:

SQL
Скопировать код
-- Поиск временных таблиц в сессии...
SELECT [name] FROM tempdb.sys.tables WHERE [name] LIKE '#%';

В результате появится перечень всех таблиц с уникальными системными приставками к их названиям.

Кинга Идем в IT: пошаговый план для смены профессии

Подробнее о временных таблицах

Исключим из рассмотрения системные объекты и сфокусируемся на пользовательских таблицах, используя для этого фильтр по полю type:

SQL
Скопировать код
-- Выводим только пользовательские таблицы
SELECT [name] FROM tempdb.sys.tables WHERE [name] LIKE '#%' AND type = 'U';

Если вы используете устаревший SQL Server 2000, вы можете применить sysobjects:

SQL
Скопировать код
-- Передача привета из прошлого
SELECT [name] FROM tempdb..sysobjects WHERE xtype = 'U' AND [name] LIKE '#%';

Учтите, что для работы с метаданными вам необходимы соответствующие права доступа.

Целевой поиск

Для отличия локальных и глобальных временных таблиц необходимо обратить внимание на их названия:

SQL
Скопировать код
-- Различаем типы временных таблиц
SELECT [name] FROM tempdb.sys.tables WHERE [name] LIKE '#%'; -- Локальные таблицы
SELECT [name] FROM tempdb.sys.tables WHERE [name] LIKE '##%'; -- Глобальные таблицы

Проверить существование определённой временной таблицы можно с помощью функции OBJECT_ID:

SQL
Скопировать код
-- Проверяем наличие таблицы
IF OBJECT_ID('tempdb..#MyTempTable') IS NOT NULL
  PRINT '#MyTempTable присутствует!';
ELSE
  PRINT 'Такой таблицы нет...';

Мониторинг производительности

При возникновении проблем производительности, связанных с временными таблицами, вы можете использовать SQL Profiler.

Также для программиста будет полезно завести систему логов для отслеживания происходящих операций:

SQL
Скопировать код
-- Запись о создании таблицы
CREATE TABLE devOpsLog (timestamp DATETIME, details NVARCHAR(MAX));
INSERT INTO devOpsLog SELECT GETDATE(), 'Создана #MyTempTable';

Особенности совместимости

В разных версиях SQL Server учет временных таблиц отличается:

Markdown
Скопировать код
- SQL Server 2000: Используем `sysobjects`.
- SQL Server 2005 и позднее: Предпочитаем `sys.tables`.

Будьте осторожны при переходе между версиями SQL Server и всегда проверяйте синтаксис и названия объектов.

Визуализация

Можно представить временные таблицы как павильоны на фестивале:

Markdown
Скопировать код
Фестиваль временных таблиц:
- 🎪: #tempTable1
- 🎪: #tempTable2
- 🎪: #tempLab3
- ...

Следующий запрос поможет вам ориентироваться среди "шатров":

SQL
Скопировать код
-- Обзор всех временных "павильонов"
SELECT [name] FROM tempdb.sys.tables WHERE [name] LIKE '#%';

Для дифференциации "павильонов" вы можете воспользоваться следующими командами:

SQL
Скопировать код
SELECT [name] FROM tempdb.sys.tables WHERE [name] LIKE '##%'; -- Глобальные
SELECT [name] FROM tempdb.sys.tables WHERE [name] LIKE '#%'; -- Локальные

Полезные материалы

  1. Временные таблицы в SQL Server – Simple Talk – Исчерпывающий обзор темы временных таблиц и их жизненного цикла.
  2. MSSQL Server Management Studio (SSMS) 2005 New Query Template – Stack Overflow – Обсуждение шаблонов запросов в SSMS 2005 на Stack Overflow.
  3. TABLES (Transact-SQL) – SQL Server | Microsoft Learn – Документация Microsoft по запросам к таблицам.
  4. temporary tables – SQLServerCentral Forums – Опыт использования временных таблиц на форуме SQL Server.
  5. DBCC CHECKALLOC (Transact-SQL) – SQL Server | Microsoft Learn – Инструкция по использованию DBCC для работы с ресурсами в SQL Server от Microsoft.