Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 global temporary table  [new]
demas
Member

Откуда:
Сообщений: 204
Блог
автор
A global temporary table, ##table_name, also exists for the duration of a user session or the procedure that created the table. When the last user session that references the table disconnects, the global temporary table is lost.


Session 52 : создаем временную таблицу

Create Table ##temp(i int) 
Insert Into ##temp(i) Values(1),(2),(3)
Select * From ##temp


Session 56

Select * From ##temp


Session 57 : еще одна сессия работающая с этой таблицей

Select * From ##temp


Теперь, если закрыть вкладку с сессией 52, то таблица ##temp будет недоступна в сессиях 56 и 57. Почему ? Ведь по описанию она должна жить, пока есть хотя бы одна сессия, работающая с ней.
24 июн 14, 10:03    [16210159]     Ответить | Цитировать Сообщить модератору
 Re: global temporary table  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
demas,
У вас есть и сообщение по ошибке?
Нам покажите?
24 июн 14, 10:35    [16210336]     Ответить | Цитировать Сообщить модератору
 Re: global temporary table  [new]
demas
Member

Откуда:
Сообщений: 204
Блог
WarAnt,

автор
Msg 208, Level 16, State 0, Line 1
Invalid object name '##temp'.
24 июн 14, 10:41    [16210386]     Ответить | Цитировать Сообщить модератору
 Re: global temporary table  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Нашел вот такой ответ
Global temporary tables operate much like local temporary tables; they are created in tempdb and cause less locking and logging than permanent tables. However, they are visible to all sessions, until the creating session goes out of scope (and the global ##temp table is no longer being referenced by other sessions).
24 июн 14, 11:11    [16210589]     Ответить | Цитировать Сообщить модератору
 Re: global temporary table  [new]
aleks2
Guest
demas
автор
A global temporary table, ##table_name, also exists for the duration of a user session or the procedure that created the table. When the last user session that references the table disconnects, the global temporary table is lost.


Session 52 : создаем временную таблицу

Create Table ##temp(i int) 
Insert Into ##temp(i) Values(1),(2),(3)
Select * From ##temp


Session 56

Select * From ##temp


Session 57 : еще одна сессия работающая с этой таблицей

Select * From ##temp


Теперь, если закрыть вкладку с сессией 52, то таблица ##temp будет недоступна в сессиях 56 и 57. Почему ? Ведь по описанию она должна жить, пока есть хотя бы одна сессия, работающая с ней.


Темнота, надо так

Session 52 : создаем временную таблицу

Create Table ##temp(i int) 
Insert Into ##temp(i) Values(1),(2),(3)
Select * From ##temp


Session 56

begin transaction
Select * From ##temp


Session 57 : еще одна сессия работающая с этой таблицей

begin transaction
Select * From ##temp


Вот теперь она будет жить...
26 июн 14, 12:26    [16222439]     Ответить | Цитировать Сообщить модератору
 Re: global temporary table  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
aleks2
Вот теперь она будет жить...


ничем не лучше пример...нужен другой уровень изоляции...чтобы удерживать блокировку на объекте
26 июн 14, 12:29    [16222476]     Ответить | Цитировать Сообщить модератору
 Re: global temporary table  [new]
aleks2
Guest
Knyazev Alexey
aleks2
Вот теперь она будет жить...


ничем не лучше пример...нужен другой уровень изоляции...чтобы удерживать блокировку на объекте


Прям откровение.
27 июн 14, 06:05    [16226675]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить