Захват содержимого с вкладки «Сообщения» SSMS

Я запускаю следующий запрос, чтобы сжать файл журнала базы данных.

DBCC shrinkfile('Sample_log',0) 

Меня беспокоит то, что даже если сжатие не удастся, запрос будет выполняться без ошибок. На вкладке сообщений будет отображаться только сообщение. И эта ошибка также не может быть обнаружена с помощью обработки ошибок.

Невозможно сжать файл журнала 2 (), так как запрошенный размер () больше, чем начало последнего логического файла журнала.

(затронуты 1 ряд)

Выполнение DBCC завершено. Если DBCC печатает сообщения об ошибках, обратитесь к системному администратору.

введите здесь описание изображения

У меня есть около 200 баз данных для сжатия файлов, и я написал скрипт для одновременного сжатия всех файлов. Но довольно сложно прокрутить вкладку сообщений и найти, какие файлы не удалось выполнить.

Итак, есть ли возможность захватить содержимое с вкладки сообщений и вставить в таблицу? Или есть какие-то варианты обработки такой ошибки?


person Learner    schedule 18.08.2020    source источник


Ответы (1)


это зависит от языка, который вы используете. если вы используете сеть точек (будь то с помощью C#/VB или powershell), вы можете настроить событие для получения сообщения

yourSQLConnection.FireInfoMessageEventOnUserErrors = true;
yourSQLConnection.InfoMessage += yourSQLConnection_InfoMessage;


private static void yourSQLConnection_InfoMessage(object sender, System.Data.SqlClient.SqlInfoMessageEventArgs e)
{
    // do whatever you want
}
person MLeblanc    schedule 18.08.2020
comment
Привет, не могли бы вы быть более конкретным? Потому что я новичок в этом. Я не использую никаких других языков и не запускаю это из какого-либо другого приложения. Если нам нужно использовать какой-то внешний скрипт, не могли бы вы указать полную информацию? - person Learner; 18.08.2020
comment
если под скриптом вы имели в виду скрипт sql, вы не можете. если вы хотите использовать powershell, вот пример: dba.stackexchange.com/questions/156287/ - person MLeblanc; 18.08.2020