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

Откуда: УФА, БАШКОРТОСТАН
Сообщений: 411
sql 2005 ent
бд на сотни Гб
десятки разработчиков на живой базе
сотни пользователей.


Периодически сталкиваемся с переполнением tempdb что ведет к перестарту SQL сервисов и приостановки бизнеспроцессов.
Как можно узнать какая сессия сколько места отожрала от tempdb чтоб знать кому бить по рукам а кому и по головам.
16 ноя 12, 11:38    [13482630]     Ответить | Цитировать Сообщить модератору
 Re: переполнение tempdb  [new]
trew
Member

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

Может это поможет
13470764
16 ноя 12, 11:40    [13482649]     Ответить | Цитировать Сообщить модератору
 Re: переполнение tempdb  [new]
kain111
Member

Откуда:
Сообщений: 227
может стоило погуглить по форуму ?
ниже на пару топиков
https://www.sql.ru/forum/actualthread.aspx?tid=983297
там есть код
16 ноя 12, 11:41    [13482657]     Ответить | Цитировать Сообщить модератору
 Re: переполнение tempdb  [new]
Stilet
Member

Откуда: УФА, БАШКОРТОСТАН
Сообщений: 411
Самое полезное из сказанного
dbcc opentran
в случае если транзакция активна.
а если момент изьятия места из tempdb так сказать проспали.
реально помоголо бы если бы удалось связать имя обьекта #xxx с сессией его создавшей.
идеи есть ?
16 ноя 12, 12:00    [13482818]     Ответить | Цитировать Сообщить модератору
 Re: переполнение tempdb  [new]
вася из уфы
Guest
Stilet
Самое полезное из сказанного
dbcc opentran
в случае если транзакция активна.
а если момент изьятия места из tempdb так сказать проспали.
реально помоголо бы если бы удалось связать имя обьекта #xxx с сессией его создавшей.
идеи есть ?


идей нет, неужели из такого количества прогеров у вас спецов нету. И куда мир котиться?
16 ноя 12, 13:42    [13483641]     Ответить | Цитировать Сообщить модератору
 Re: переполнение tempdb  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3637
Stilet
идеи есть ?

Положить tempDB На бОльший массив ?
16 ноя 12, 13:45    [13483678]     Ответить | Цитировать Сообщить модератору
 Re: переполнение tempdb  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35396
Блог
http://sqlblog.com/blogs/kevin_kline/archive/2007/10/23/tempdb-space-usage.aspx
16 ноя 12, 13:47    [13483706]     Ответить | Цитировать Сообщить модератору
 Re: переполнение tempdb  [new]
Stilet
Member

Откуда: УФА, БАШКОРТОСТАН
Сообщений: 411
гостю из уфы огромное спасибо за сердобольность, ну а остальным и особенно критику просто большое человеческое за обычную помощь. Подточу запрос и если не забуду выложу.
16 ноя 12, 14:04    [13483889]     Ответить | Цитировать Сообщить модератору
 Re: переполнение tempdb  [new]
не писатель
Guest
Stilet
гостю из уфы огромное спасибо за сердобольность, ну а остальным и особенно критику просто большое человеческое за обычную помощь. Подточу запрос и если не забуду выложу.
так я напомню
16 ноя 12, 14:12    [13483985]     Ответить | Цитировать Сообщить модератору
 Re: переполнение tempdb  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Stilet
бд на сотни Гб
десятки разработчиков на живой базе
сотни пользователей.

Я правильно понимаю, что десятки разработчиков сидят не на сервере разработки, а на production-сервере? Если не секрет, что они там делают?

По теме: "если бы удалось связать имя обьекта #xxx с сессией его создавшей" — теоретически можно использовать event notification по событию object_created, но, скорее всего, на таких нагрузках это даст существенный оверхед.
16 ноя 12, 14:20    [13484041]     Ответить | Цитировать Сообщить модератору
 Re: переполнение tempdb  [new]
Stilet
Member

Откуда: УФА, БАШКОРТОСТАН
Сообщений: 411
конец дня, пока вот что получилось, но надо еще количество страниц в мегобайты перевести да и потестировать малость. подозреваю что здесь пока нет обьема данных активных транзакций


select
a.session_id
,user_objects_alloc_page_count-user_objects_dealloc_page_count +
internal_objects_alloc_page_count-internal_objects_dealloc_page_count as pages_used
,s.[host_name]
,s.[program_name]
,s.status
,s.memory_usage
,( select text from sys.dm_exec_sql_text(COALESCE(r.sql_handle, c.most_recent_sql_handle))) as txt

from sys.dm_db_session_space_usage a
left join sys.dm_exec_sessions s
on s.session_id=a.session_id
LEFT OUTER JOIN sys.dm_exec_requests r
ON r.session_id = s.session_id
left JOIN sys.dm_exec_connections c
ON s.session_id = c.most_recent_session_id

LEFT JOIN (
SELECT
session_id,
database_id
FROM sys.dm_tran_session_transactions t
INNER JOIN sys.dm_tran_database_transactions dt
ON t.transaction_id = dt.transaction_id
WHERE dt.database_id = DB_ID('tempdb')
GROUP BY session_id, database_id
) dt
ON s.session_id = dt.session_id
16 ноя 12, 15:11    [13484496]     Ответить | Цитировать Сообщить модератору
 Re: переполнение tempdb  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Stilet,

Можете еще дернуть историю из default trace-а по auto file grow. Запрос оно вам конечно не скажет, но дату/время, логин и название приложения узнаете.
19 ноя 12, 21:50    [13497060]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить