Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Sandist Member Откуда: Сообщений: 433 |
Здравствуйте! Подскажите пожалуйста, как можно узнать какие сеансы ссылаются на глобальную временную таблицу (##Tmp) Дело в том, что есть один сеанс, который создает эту таблицу и держит ее, нужно в определенный момент узнать, есть ли сеансы, помимо того, что создал эту таблицу и если такого сеанса (второго, дополнительного) нет, то нужно эту таблицу удалить Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor) |
3 июл 18, 11:24 [21538678] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Sandist, ссылаются ? это как? ps RTM это к психологам |
3 июл 18, 11:25 [21538683] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8706 |
|
||
3 июл 18, 11:28 [21538700] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
msLex, так а чем не устраивает что она сама удалится если никого нет? |
3 июл 18, 11:31 [21538709] Ответить | Цитировать Сообщить модератору |
Sandist Member Откуда: Сообщений: 433 |
TaPaK, Один сеанс создает его, другие используют, система не удалит таблицу до тех пор, пока все сеансы ее не освободят Нужно узнать какие именно держат эту таблицу, если среди них не будет нужных, то удалить таблицу Есть таблица, в которой видно какие сеансы на какие ресурсы ссылаются? |
3 июл 18, 11:36 [21538732] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Sandist, долбаная бредятина. Если сеанс использует - значит надо, если никто не использует сама дропнется. Если пакет не дошёл до вашей богомерзкой глобальной таблицы, то что? дропнем пусть потом страдает? но наверное этого знать не хочу.... SELECT request_session_id request_mode, request_type, request_status FROM sys.dm_tran_locks WHERE resource_associated_entity_id = OBJECT_ID('tempdb..##NAME') не забудьте раздать всем VIEW SERVER STATE, если не ошибаюсь |
3 июл 18, 11:40 [21538746] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
или вообще заверните в try/catch свой дроп и в цикл... |
3 июл 18, 11:41 [21538751] Ответить | Цитировать Сообщить модератору |
Sandist Member Откуда: Сообщений: 433 |
TaPaK, это не то я имею ввиду не те процессы которые используют ее в текущий момент, а просто процессы благодаря которым она жива то есть вот если я в текущий момент не буду осуществлять select update или что что к таблице, то тот запрос который ты переслал не отобразить соединение |
3 июл 18, 12:03 [21538865] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9634 |
Можете взять способ TaPaK'а. Только нужно еще добавить условие resource_database_id = db_id('tempdb'). Но результат может быть недостоверным. Более правильно так: set lock_timeout 0; begin try drop table ##NAME end try begin catch select error_number(), error_message(); end catch; set lock_timeout -1;Если в блоке catch error_number() = 1222, то таблица используется. |
||
3 июл 18, 12:15 [21538910] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
я вас огорчу... сервер так не делает, а проверяет именно активные ссылки |
||
3 июл 18, 12:19 [21538930] Ответить | Цитировать Сообщить модератору |
Sandist Member Откуда: Сообщений: 433 |
invm, Не знаю как правильно донести мысль Сеанс1: create table ##NAME (id int) insert into ##NAME (id) values (1) Сеанс2: select * from ##Name Сеанс3: select * from ##Name Вот после этих операций, таблица никем не будет блокироваться, не будет использоваться, но жить она будет Если я закрою Сеанс 2 и Сеанс1, таблица будет жить Нужно просто узнать из-за каких сеансов пока жива временная таблица? Система ведь как-то понимает, что если я сейчас закрою сеанс, на таблицу ничего не ссылается (или ссылается), значит ее нужно удалить/не удалять Вот где эта такая инфа хранится? |
3 июл 18, 12:23 [21538945] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Sandist, перейдите к изучению, что же такое сеанс, и узнайте что вы в ssms пооткрывали |
3 июл 18, 12:25 [21538947] Ответить | Цитировать Сообщить модератору |
Sandist Member Откуда: Сообщений: 433 |
TaPaK, так есть где-то такая информация? |
3 июл 18, 12:27 [21538954] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9634 |
Таблица останется жить, только если Сеанс3 удерживает на нее какую-либо блокировку.
У вас явные проблемы с пониманием смысла термина "ссылается". Для вас это - упоминается в каком-то ранее выполненном запросе. |
||||
3 июл 18, 12:38 [21538980] Ответить | Цитировать Сообщить модератору |
Sandist Member Откуда: Сообщений: 433 |
invm, Да, вы правы спасибо |
3 июл 18, 12:49 [21539013] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |