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

Откуда:
Сообщений: 76
Приветствую вас, форумчане.





вся темп БД весит 20 Гб.

А вот этот запрос показывает что в ней свободен всего-лишь 1 Мб

SELECT SUM(unallocated_extent_page_count) AS [free pages], 
(SUM(unallocated_extent_page_count)*1.0/128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;



При этом в свойствах БД в MSSSMS пишет что доступно 15Гб. (лог там около 3 Гб).





Подскажите, как корректно посмотреть сколько свободного места темповой БД на данный момент?
7 авг 17, 15:05    [20705585]     Ответить | Цитировать Сообщить модератору
 Re: Как корректно посмотреть сколько свободного места темповой БД на данный момент?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7403
use tempdb
go

exec sp_spaceused
7 авг 17, 15:16    [20705619]     Ответить | Цитировать Сообщить модератору
 Re: Как корректно посмотреть сколько свободного места темповой БД на данный момент?  [new]
люблю скл
Member

Откуда:
Сообщений: 76
Владислав Колосов
use tempdb
go

exec sp_spaceused




Спасибо.
7 авг 17, 15:52    [20705776]     Ответить | Цитировать Сообщить модератору
 Re: Как корректно посмотреть сколько свободного места темповой БД на данный момент?  [new]
люблю скл
Member

Откуда:
Сообщений: 76
А скажите, как можно

unallocated space

из sp_spaceused получить с помощью SELECT?

разбираю эту процедуру - как-то сложно там все... может быть еть готовый запрос именно для получения unallocated space ?
7 авг 17, 15:54    [20705783]     Ответить | Цитировать Сообщить модератору
 Re: Как корректно посмотреть сколько свободного места темповой БД на данный момент?  [new]
люблю скл
Member

Откуда:
Сообщений: 76
в общем, вытащил из процедуры


	select 
		 	((SELECT sum(convert(bigint,case when status & 64 = 0 then size else 0 end)) FROM dbo.sysfiles) - 
			(SELECT sum(a.total_pages) 	from sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id
		left join sys.internal_tables it on p.object_id = it.object_id))* 8192/1048576 AS unallocated_space_MB




надеюсь верно.
7 авг 17, 16:04    [20705819]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить