Как определить, какие временные таблицы находятся в области видимости в SQL Server? - PullRequest
0 голосов
/ 30 июля 2009

Я часто получаю ошибки:

Msg 208, Level 16, State 0, Line 1
Invalid object name '#foo'.

Msg 3701, Level 11, State 5, Line 1
Cannot drop the table '#foo', because it does not exist in the system catalog.

Как узнать, какие временные таблицы находятся в области видимости? Они явно не отображаются в SSMS, как базовые таблицы.

Ответы [ 2 ]

4 голосов
/ 30 июля 2009

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

IF object_id('tempdb..#foo') IS NOT NULL 
1 голос
/ 31 июля 2009

Расширяя ответ Брэндона ...

В окне запроса SSMS 1:

CREATE TABLE #foo (bar int)
GO
CREATE TABLE ##bar (foo int)
GO
SELECT object_id('tempdb..#foo'), object_id('tempdb..##bar')
GO

В окне 2:

SELECT object_id('tempdb..#foo'), object_id('tempdb..##bar')

##bar виден в обеих сессиях, как и ожидалось. #foo только в локальном сеансе.

...