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

Откуда:
Сообщений: 98
Добрый день.


Вот эту информацию, только с помощью SELECT
DBCC sqlperf( logspace)
10 авг 17, 16:13    [20714049]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать запросом заполненность файла лога?  [new]
Колян Козлов
Member

Откуда:
Сообщений: 98
Можно конечно результат этой команды впихнуть в таблицу, а из таблицы сделать выборку.

однако это какой-то странный путь.

Хочется более красиво узнать заполненность файла лога.
10 авг 17, 16:21    [20714090]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать запросом заполненность файла лога?  [new]
архивариус
Member

Откуда:
Сообщений: 150
Колян Козлов,

подредактируйте только, погуглите названия счетчиков и добавьте вычисление % если надо...
SELECT db.[name] AS [Database Name], lu.cntr_value AS [Log Used (KB)] FROM sys.databases AS db INNER JOIN sys.dm_os_performance_counters AS lu ON db.name = lu.instance_name WHERE lu.counter_name LIKE 'Log File(s) Used Size (KB)%';
10 авг 17, 16:25    [20714108]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать запросом заполненность файла лога?  [new]
Колян Козлов
Member

Откуда:
Сообщений: 98
архивариус
Колян Козлов,

подредактируйте только, погуглите названия счетчиков и добавьте вычисление % если надо...
SELECT db.[name] AS [Database Name], lu.cntr_value AS [Log Used (KB)] FROM sys.databases AS db INNER JOIN sys.dm_os_performance_counters AS lu ON db.name = lu.instance_name WHERE lu.counter_name LIKE 'Log File(s) Used Size (KB)%';



Супер! ТО что нужно!

Спасибо.
10 авг 17, 16:27    [20714119]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать запросом заполненность файла лога?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Как вариант

IF OBJECT_ID('tempdb.dbo.#space') IS NOT NULL
    DROP TABLE #space

CREATE TABLE #space (database_id INT PRIMARY KEY, data_used_size DECIMAL(18, 2), log_used_size DECIMAL(18, 2))

DECLARE @SQL NVARCHAR(MAX)

SELECT @SQL = STUFF((
SELECT '
	USE [' + d.name + ']
	INSERT INTO #space (database_id, data_used_size, log_used_size)
	SELECT
		  DB_ID()
		, SUM(CASE WHEN [type] = 0 THEN space_used END)
		, SUM(CASE WHEN [type] = 1 THEN space_used END)
	FROM (
		SELECT s.[type], space_used = SUM(FILEPROPERTY(s.name, ''SpaceUsed'') * 8. / 1024)
		FROM sys.database_files s
		GROUP BY s.[type]
	) t;'
        FROM sys.databases d
        WHERE d.[state] = 0
        FOR XML PATH (''), TYPE
    ).value('.', 'NVARCHAR(MAX)'), 1, 2, '')

EXEC sys.sp_executesql @SQL

SELECT d.name
     , t.total_size
     , t.data_size
     , s.data_used_size
     , t.log_size
     , s.log_used_size
FROM (
    SELECT database_id
         , log_size = CAST(SUM(CASE WHEN [type] = 1 THEN size END) * 8. / 1024 AS DECIMAL(18, 2))
         , data_size = CAST(SUM(CASE WHEN [type] = 0 THEN size END) * 8. / 1024 AS DECIMAL(18, 2))
         , total_size = CAST(SUM(size) * 8. / 1024 AS DECIMAL(18, 2))
    FROM sys.master_files
    GROUP BY database_id
) t
JOIN sys.databases d ON d.database_id = t.database_id
LEFT JOIN #space s ON d.database_id = s.database_id
ORDER BY t.total_size DESC
10 авг 17, 16:31    [20714135]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать запросом заполненность файла лога?  [new]
o-o
Guest
select size * 8 / 1024 AS 'Total_MB',
      FILEPROPERTY(name, 'SpaceUsed') * 8 / 1024 as SpaceUsed_Mb
from sys.database_files
where file_id = 2;
10 авг 17, 16:33    [20714146]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать запросом заполненность файла лога?  [new]
o-o
Guest
AlanDenton,
sys.master_files это права уровня сервера, а sys.database_files это паблик
10 авг 17, 16:40    [20714168]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить