Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как узнать "хозяина" временной таблицы?  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 556
Для MS SQL 2000 есть примерчик с использованием DBCC PSS.
Но в 2005 он не работает.
Как в скуле 2005 сопоставить spid и временные таблицы #XXXXX?
ХХХ - шестнадцатеричный набор.
28 дек 12, 11:29    [13699471]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать "хозяина" временной таблицы?  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Max-xaM,

Владельцем базы данных tempdb является dbo.

Да, для ms sql 2000 работает 930408
а для новых версий пока ответ не найден 6432142

Временные таблицы и проблемы, связанные с их использованием
размышления
проверить существование временной таблицы
28 дек 12, 13:10    [13700208]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать "хозяина" временной таблицы?  [new]
komrad
Member

Откуда:
Сообщений: 5703
Max-xaM,

можно попробовать найти корреляции между

select object_name(object_id),index_id,index_type_desc,alloc_unit_type_desc,page_count*8. [Size, KB] 
from sys.dm_db_index_physical_stats (2,null,null,null,null)


и

select 'tempdb' [database],des1.session_id,
des1.login_name, des1.login_time, des1.[host_name], des1.program_name,
SUM(dbssu.user_objects_alloc_page_count-dbssu.user_objects_dealloc_page_count)/128. [user_objects_size(MB)],
SUM(dbssu.internal_objects_alloc_page_count-dbssu.internal_objects_dealloc_page_count)/128. [internal_objects_size(MB)]
,des1.[status] 
,des1.reads, des1.writes
,des1.logical_reads
,des1.cpu_time
,des1.memory_usage
from sys.dm_db_session_space_usage dbssu
JOIN sys.dm_exec_sessions des1 ON des1.session_id = dbssu.session_id
GROUP BY des1.session_id
, des1.login_name
, des1.login_time
, des1.[host_name]
, des1.program_name
, des1.[status] 
, des1.reads, des1.writes
, des1.logical_reads
, des1.cpu_time
, des1.memory_usage
ORDER BY (SUM(dbssu.user_objects_alloc_page_count-dbssu.user_objects_dealloc_page_count)+SUM(dbssu.internal_objects_alloc_page_count-dbssu.internal_objects_dealloc_page_count)) DESC


но точных рецептов нет
28 дек 12, 13:24    [13700320]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать "хозяина" временной таблицы?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Max-xaM
временные таблицы #XXXXX
ХХХ - шестнадцатеричный набор.

Вообще похоже на табличные переменные. Простой пример:
declare @t table(i int);
waitfor delay '00:00:10';

Пока выполняется этот скрипт, в tempdb.sys.tables будет строчка с именем таблицы вида #27C3E46E. Как только скрипт закончится — строчка исчезнет.

А что у вас за ситуация, для чего это нужно?
28 дек 12, 13:24    [13700323]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать "хозяина" временной таблицы?  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 556
Для чего нужно.
У нас 1С семерка.
Иногда пухнет tempdb и в базе тормоза.
Хочу найти тяжелые запросы, чтобы оптимизировать их.
28 дек 12, 14:33    [13700774]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать "хозяина" временной таблицы?  [new]
komrad
Member

Откуда:
Сообщений: 5703
Max-xaM
Для чего нужно.
У нас 1С семерка.
Иногда пухнет tempdb и в базе тормоза.
Хочу найти тяжелые запросы, чтобы оптимизировать их.

из дефолтного трейса берите spid процесса, который инициировал [Data/Log] File Auto Grow базы tempdb, и профилируйте его
28 дек 12, 14:41    [13700822]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить