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

Откуда: большая деревня
Сообщений: 265
Приветствую.
Сейчас размер tempdb более 100 ГБ, и непонятно, что вызвало такой рост. Что пробовал для сжатия:

SELECT db_name() [DB],file_id,name ,type_desc, physical_name,size/128. [Size (MB)],
    CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 [Used Space (MB)],
 size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS [Available Space (MB)]
FROM sys.database_files;


DBfile_idnametype_descphysical_nameSize (MB)Used Space (MB)Available Space (MB)
tempdb1tempdevROWSD:\SQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\tempdb.mdf114781.5000009.375000114772.125000
tempdb2templogLOGD:\SQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\templog.ldf215.0000006.109375208.890625


DBCC OPENTRAN;
--Нет активных открытых транзакций.


DBCC SHRINKFILE('tempdev')
--[quote автор]DBCC SHRINKFILE: страница 1:14692024 не может быть перемещена, поскольку она принадлежит рабочей таблице.


Я так понимаю, причина в странице 1:14692024. Как узнать, к какой таблице принадлежит, кто её создал. И сакраментальное "что делать"? Рестарт сервера пока не хотелось бы рассматривать.
19 фев 18, 09:51    [21200855]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать tempdb  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
virtuOS,

Версия сервера какая? С 2012 по моему появилась sys.dm_db_page_allocations
19 фев 18, 09:56    [21200869]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать tempdb  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 265
Microsoft SQL Server 2014 (SP2-CU8) (KB4037356) - 12.0.5557.0 (X64)
19 фев 18, 10:02    [21200881]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать tempdb  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5112
virtuOS
DBCC OPENTRAN;
--Нет активных открытых транзакций.
и что?
- подключился я к базе и создал временную таблицу, сижу и медитирую на неё
- или делаю из неё какие либо селекты
- или вообще запустил селект к базе в котором сервер построил такой план где спулит что нибудь на диск в темпдиби
19 фев 18, 10:02    [21200883]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать tempdb  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Воспользуйтесь поиском. Было недавно неск. топиков с советами и рецептами.

1С чтоле ? Бывает.... :)
19 фев 18, 10:27    [21200939]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать tempdb  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 265
LSV
Воспользуйтесь поиском. Было недавно неск. топиков с советами и рецептами.
1С чтоле ? Бывает.... :)


Это не 1С.
Поиском пользовался, всё заканчивалось рестартом сервера, чего пока не хотелось бы.
19 фев 18, 12:08    [21201380]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать tempdb  [new]
причина в страни
Guest
virtuOS,

Где-то есть адова хранимка, возможно с MISSING JOIN PREDICATE. Или из области "удалить всё, вычислить всё, собрав всё, заполнить всё".
19 фев 18, 12:19    [21201423]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать tempdb  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
virtuOS,

отключите все подключения к серверу и сжимайте. Только она потом снова разожмется.

автор
принадлежит рабочей таблице

Какой-то процесс выполняет в любой базе запрос, в плане которого есть обращение к tempdb.
19 фев 18, 13:06    [21201611]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать tempdb  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
dbcc shrinkfile ('tempdev',xxx)

где ххх - конечный размер в Мб.
Сначала установи значение чуть меньше занятого файлом, потом уменьшай на 20-30%.
Но файл сожмется, если нет активных процессов в tempdb.
19 фев 18, 13:40    [21201757]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить