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

Откуда:
Сообщений: 46
В этом запросе предполагается получить сведения о состоянии баз данных по электронной почте.
Сведения о размере лог-файла поступают во временную таблицу @temptable
Сведения о базе должны, но не поступают в таблицу @temptable2

Что требуется:
1. Узнать, какие типы данных возвращает sp_helpdb и правильно указать их в declare @temptable2
2. Объединить и передать результаты запросов в переменную @body

Пока получилось вот что (буду дорабатывать, помогайте, если кто в теме):


SET ANSI_WARNINGS OFF
set nocount on

declare @temptable as table(
DatabaseName nvarchar(128),
LogSize float(7),
LogSpaceUsed float(7),
Status1 int,
dbsize nvarchar(128))
INSERT INTO @temptable
EXEC ('DBCC SQLPERF(LOGSPACE) WITH NO_INFOMSGS')

declare @temptable2 as table(
DatabaseName nvarchar(128),
dbsize nvarchar(128),
owner varchar(128),
dbid nvarchar(128),
created nvarchar(128),
status nvarchar(128),
compatibility_level nvarchar(128))
INSERT INTO @temptable2
EXEC ('sp_helpdb')

--select DatabaseName, LogSize from @temptable order by Logsize desc
--select DatabaseName, dbsize from @temptable2 order by dbsize desc

EXEC msdb.dbo.sp_send_dbmail @profile_name = 'adminmail',
@recipients = 'admin@admin.ru', @subject = 'SQL Server info',
@body = @temptable + @temptable2;
2 авг 11, 16:34    [11060126]     Ответить | Цитировать Сообщить модератору
 Re: Получить результаты sp_helpdb по электронной почте  [new]
Glory
Member

Откуда:
Сообщений: 104751
А использовать параметер @query процедуры .sp_send_dbmail никак ?

Сообщение было отредактировано: 2 авг 11, 16:37
2 авг 11, 16:37    [11060148]     Ответить | Цитировать Сообщить модератору
 Re: Получить результаты sp_helpdb по электронной почте  [new]
pol_ar
Member

Откуда:
Сообщений: 46
Спасибо, примерно это и требуется!
2 авг 11, 16:46    [11060226]     Ответить | Цитировать Сообщить модератору
 Re: Получить результаты sp_helpdb по электронной почте  [new]
pol_ar
Member

Откуда:
Сообщений: 46
А может подскажете еще, как можно привести результаты выполнения запроса sp_helpdb к более менее читабельному виду?
3 авг 11, 12:46    [11064011]     Ответить | Цитировать Сообщить модератору
 Re: Получить результаты sp_helpdb по электронной почте  [new]
Glory
Member

Откуда:
Сообщений: 104751
pol_ar
как можно привести результаты выполнения запроса sp_helpdb к более менее читабельному виду?

Написать скрипт ?
3 авг 11, 12:51    [11064048]     Ответить | Цитировать Сообщить модератору
 Re: Получить результаты sp_helpdb по электронной почте  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
вот хорошая статья и скрипт для отслеживания состояния базы
либо целиком используете, либо под себя настроите
3 авг 11, 13:15    [11064200]     Ответить | Цитировать Сообщить модератору
 Re: Получить результаты sp_helpdb по электронной почте  [new]
pol_ar
Member

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

Замечательная процедура лежит по этой ссылке. Много из нее почерпнул. Начну использовать и переделаю под себя.
Выдает готовые отчеты в таком виде (скриншот):

Спасибо.

К сообщению приложен файл. Размер - 72Kb
3 авг 11, 15:13    [11065096]     Ответить | Цитировать Сообщить модератору
 Re: Получить результаты sp_helpdb по электронной почте  [new]
pol_ar
Member

Откуда:
Сообщений: 46
Добрый день, ALL !
После отпуска я доработал эту процедуру, и теперь она сообщает всю необходимую информацию о состоянии сервера.
Для работы необходимо:
1. Скачать и распаковать прилагаемый архив.
2. Включить отправку электронной почты средствами SQL mail (не спрашивайте как!).
3. В папке D:\PoL создать хранилище rar-архивов, сюда будут складываться ежедневные копии баз (у меня это делает nnBackup, запуская внешний консольный архиватор rar.exe). Разместить в нем содержимое папки D_PoL
4. В файле "Процедура_мониторинга_сервера_вызов.sql" сменить почтовый профиль на свой и поменять адресата admin@mail.ru на свой почтовый ящик.
5. Если путь D:\PoL был изменен, то надо отредактировать его в пакетных файлах *.bat, а также в файле "Процедура_мониторинга_сервера_by_PoL_создание.sql", сделав это ДО выполнения самого скрипта.
Командный файл "Rar-return-last-archives-from-current-dir-only.bat" возвращает список и даты архивов за последний период времени (для самоконтроля). Вызывается автоматически и попадает в отчет, но можно и вручную запускать.
6. В файле "Процедура_мониторинга_сервера_by_PoL_создание.sql" поменять адресата admin@mail.ru на свой почтовый ящик и выполнить этот запрос ОДИН раз для создания постоянной процедуры на сервере.
7. Использовать запрос "Процедура_мониторинга_сервера_вызов.sql" для отправки отчета на свой почтовый ящик.
8 сен 11, 09:07    [11245018]     Ответить | Цитировать Сообщить модератору
 Re: Получить результаты sp_helpdb по электронной почте  [new]
pol_ar
Member

Откуда:
Сообщений: 46
В архив надо добавить rar.exe и nnbackup. Из-за ограничений на размер файлов пришлось их убрать.
Скрипт брать здесь:

К сообщению приложен файл (SQL_info_script.rar - 7Kb) cкачать
8 сен 11, 09:12    [11245028]     Ответить | Цитировать Сообщить модератору
 Re: Получить результаты sp_helpdb по электронной почте  [new]
pol_ar
Member

Откуда:
Сообщений: 46
Буду рад замечаниям, комментариям и, особенно, исправлениям и добавлениям. Этот скрипт можно сделать лучше!
8 сен 11, 09:15    [11245042]     Ответить | Цитировать Сообщить модератору
 Re: Получить результаты sp_helpdb по электронной почте  [new]
Ктирика
Guest
1. Везде нужно добавить поддержку уникода.. иначе одни знаки вопроса будут приходить вместо русских букв
SET @TableHTML = N'<font face=

2. sys.sysaltfiles.size Нужно в bigint переводить... Базы у вас слишком мелкие :-)
cast(cast(sys.sysaltfiles.size as bigint) * 1024 * 8 as varchar)

3. Батники то зачем? :-)

хотябы так как-нибудь нельзя?
select @@SERVERNAME 
	SELECT @Str = 'EXEC master.dbo.xp_cmdshell ''dir \\SRV\backup\SRV\BackupDB\* /A:-D/S/O:N >c:\temp\a.txt'''

4.
9 сен 11, 10:54    [11252214]     Ответить | Цитировать Сообщить модератору
 Re: Получить результаты sp_helpdb по электронной почте  [new]
pol_ar
Member

Откуда:
Сообщений: 46
Ктирика
1. Везде нужно добавить поддержку уникода.
2. sys.sysaltfiles.size Нужно в bigint переводить...
3. Батники то зачем? :-)


Спасибо, учту. По bigint весьма полезное замечание. Батники оставил, так удобнее. Точнее, лень писать обработку @Str после DIR. Если размер файлов понадобится, тогда только напишу. Надеюсь, что не скоро ))
12 сен 11, 15:13    [11264398]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить