Где расположены временные таблицы? - PullRequest
8 голосов
/ 03 февраля 2011

Если я создаю временную таблицу, используя знак #:

SELECT * INTO #temp FROM dbo.table

Где находится эта таблица?Я не могу найти это из tempdb.

Ответы [ 5 ]

7 голосов
/ 03 февраля 2011

Эти таблицы созданы в вашем tempDB - но имя таблицы может быть не совсем таким, как вы определили.

В моем случае я получаю:

#temp______________________________000000000003

Попробуйте это:

SELECT * INTO #temp FROM dbo.table
SELECT * FROM tempdb.sys.tables

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

1 голос
/ 03 февраля 2011

Когда вы объявляете временную таблицу, SQL Sever добавляет некоторые дополнительные символы в свое имя, чтобы предоставить ей уникальное системное имя, а затем сохраняет ее в tempDB в таблице sysobjects. Даже если вы можете запросить временную таблицу с ее логическим именем, внутренне известно точное имя, установленное SQL Server.

0 голосов
/ 26 марта 2019

Я подозреваю, что эта проблема возникла из-за того, что если вы не щелкните правой кнопкой мыши и не обновите папку «Временные таблицы», SSMS не покажет вам временную таблицу немедленно.

0 голосов
/ 17 ноября 2011

Локальные временные таблицы могут быть созданы с помощью знака хеш (#) перед именем таблицы.

Они видны только в текущем соединении. Когда соединение разорвано, его область действия также заканчивается.

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

Подробнее

http://sqlnetcode.blogspot.com/2011/11/there-is-already-object-named-temp-in.html

0 голосов
/ 03 февраля 2011

Как ты их ищешь? Если вы сделаете выбор, вы получите данные. Но таблица доступна только в сеансе, только для пользователя, который ее создал (вы можете иметь глобальные временные таблицы).

Они хранятся в temp db.

...