Добавил:
support-vk-server-knmcadiknmcadibav.ru Сайт моих друзей из VKT NDA : https://support-vk-server-knmcadiknmcadibav.ru/about/rnila_iv_id566844132@dnevnik.rurnVK Testers NDA (тестировщик) QA. Студент 4 курса.rn+79009627198rnhttps://vk.cc/helprn#HLKLesNarod# Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
05.07.2025
Размер:
2 Кб
Скачать
USE NameDataB;
GO

-- 🔧 1. Самые тяжёлые таблицы
DECLARE @HeavyTables XML = (
    SELECT TOP 10
        s.name AS [@Схема],
        t.name AS [@Таблица],
        SUM(p.rows) AS [@Строки],
        CAST(SUM(a.total_pages) * 8 / 1024.0 AS DECIMAL(10,2)) AS [@РазмерМБ]
    FROM sys.tables t
    JOIN sys.schemas s ON t.schema_id = s.schema_id
    JOIN sys.indexes i ON t.object_id = i.object_id
    JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
    JOIN sys.allocation_units a ON p.partition_id = a.container_id
    WHERE i.type IN (0,1)
    GROUP BY s.name, t.name
    ORDER BY SUM(p.rows) DESC
    FOR XML PATH('Таблица'), ROOT('СамыеТяжёлые')
);

-- 🛑 2. Последние ошибки
DECLARE @LogTable TABLE (
    LogDate DATETIME,
    ProcessInfo NVARCHAR(100),
    Text NVARCHAR(MAX)
);
INSERT INTO @LogTable
EXEC xp_readerrorlog;

DECLARE @Errors XML = (
    SELECT TOP 10 
        LogDate AS [@Дата],
        ProcessInfo AS [@Источник],
        Text AS [@Сообщение]
    FROM @LogTable
    WHERE Text LIKE '%error%' OR ProcessInfo LIKE 'spid%'
    ORDER BY LogDate DESC
    FOR XML PATH('Ошибка'), ROOT('ПоследниеОшибки')
);

-- 📊 3. Состояние базы
DECLARE @DatabaseState XML = (
    SELECT 
        d.name AS [@База],
        CONVERT(DECIMAL(10,2), SUM(mf.size) * 8.0 / 1024) AS [@РазмерМБ],
        CONVERT(DECIMAL(10,2), 
            SUM(mf.size) * 8.0 / 1024.0 - 
            ISNULL(SUM(FILEPROPERTY(mf.name, 'SpaceUsed')) * 8.0 / 1024.0, 0)
        ) AS [@СвободноМБ],
        ISNULL(CONVERT(VARCHAR(30), MAX(b.backup_finish_date), 120), 'Нет копий') AS [@ПоследнийБэкап]
    FROM sys.master_files mf
    JOIN sys.databases d ON d.database_id = mf.database_id
    LEFT JOIN msdb.dbo.backupset b ON b.database_name = d.name AND b.type = 'D'
    WHERE d.name = DB_NAME()
    GROUP BY d.name
    FOR XML PATH('База'), ROOT('СостояниеБазы')
);

-- 🧩 4. Итоговый отчёт
DECLARE @FullReport XML = (
    SELECT 
        @HeavyTables AS [Таблицы],
        @Errors AS [Ошибки],
        @DatabaseState AS [Состояние]
    FOR XML PATH('Отчёт'), ROOT('Мониторинг')
);

-- 📤 Вывод в SSMS
SELECT @FullReport AS [XML-отчёт];
Соседние файлы в папке dnevnik ru