Как увидеть временную таблицу, созданную кодом на сервере sql?

Я создаю глобальную временную таблицу (т.е. ##TheTable), используя код C #. Я хочу видеть эту временную таблицу в студии управления SQL-сервером после того, как код будет полностью выполнен.

Можно ли сделать это ? Если да, то как?


person InTheSkies    schedule 29.01.2014    source источник
comment
Но после того, как код будет полностью выполнен, временная таблица исчезнет. Вот почему они называют это темп.   -  person paparazzo    schedule 29.01.2014


Ответы (3)


После завершения кода и закрытия сеанса временная таблица перестанет существовать. Если вы хотите увидеть его в SQL Server Management Studio (SSMS), вам необходимо держать сеанс кода открытым до тех пор, пока данные не будут проверены в SSMS.

Согласно Technet:

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

В качестве альтернативы здесь есть опция кода C #, которая выбирает данные из временной таблицы в переменную кода для просмотра в коде ... (и если код должен существовать, вы можете записать его в файл или просмотреть с помощью другое средство) - см .: https://stackoverflow.com/a/6748570/3063884

person CJBS    schedule 29.01.2014

Все временные таблицы регистрируются в разделе SQL server> Databases> System Databases> tempdb -> Temporary Tables.

person TTeeple    schedule 29.01.2014
comment
SQL-сервер ›Базы данных› Системные базы данных ›tempdb -› Временные таблицы - person InTheSkies; 29.01.2014
comment
Я не вижу никаких временных таблиц под временными таблицами. - person InTheSkies; 29.01.2014
comment
Попробуйте поставить точку останова после создания временной таблицы, а затем проверить в SSMS. Не забудьте обновить папку временных таблиц, так как она не обновляется автоматически. ## таблицы должны сохраняться даже после разрыва соединения / сеанса. # таблицы существуют только для той сессии, в которой они созданы. - person TTeeple; 29.01.2014
comment
Я попробовал это, НЕ закрывая соединение, и это не сработало. Я сейчас попробую точку останова. - person InTheSkies; 29.01.2014
comment
Хорошо. Точка останова работает. Но почему я не могу увидеть временную таблицу после полного выполнения кода (без точек останова)? Как сделать так, чтобы временная таблица по-прежнему была видна без точки останова? - person InTheSkies; 29.01.2014
comment
@InTheSkies Для этого вам не нужно закрывать сеанс на сервере (через connection.Close() или удаляя его), сервер удаляет все временные таблицы, создаваемые сеансом, когда сеанс закрывается. - person Scott Chamberlain; 29.01.2014
comment
@ScottChamberlain - На самом деле я не закрывал соединение с conn.close (). Это не сработало. - person InTheSkies; 30.01.2014
comment
@InTheSkies Без вашего показа кода мы не можем сказать, возможно, он закрывается или утилизируется, а вы этого не понимаете. Или, возможно, соединение собирает мусор перед проверкой. Измените исходный вопрос, чтобы отобразить код, который вы хотите протестировать, чтобы мы могли дать более обоснованные ответы. - person Scott Chamberlain; 30.01.2014

Создать тестовую таблицу

SELECT * INTO ##temp1
FROM dbo.SomeTable_Name

Теперь, чтобы проверить, есть ли там таблица

SELECT  * FROM tempdb.dbo.sysobjects O
WHERE O.xtype in ('U') 
AND O.ID = OBJECT_ID(N'tempdb..##temp1')
person M.Ali    schedule 29.01.2014