|
По материалам статьи Narayana Vyas Kondreddi на сайте vyaskn.tripod.com: The undocumented nature of sp_readerrorlog in SQL Server 2000 Известно, что системная хранимая процедура sp_readerrorlog
может использоваться для чтения файла журнала регистрации
ошибок SQL Server в T-SQL запросах. Если Вы вызываете
sp_readerrorlog без параметров, будет получено отображение
текущего файла. Вы можете просматривать и предыдущие файлы
ошибок, вводя их номер в качестве первого параметра процедуры.
Вроде бы всё ясно и понятно… Однако, в один прекрасный вечер,
автор статьи заметил отправленное в телеконференцию Microsoft
SQL Server сообщение,
в котором задавался вопрос, что означают второй, третий и
четвертый параметр sp_readerrorlog? Используя sp_helptext, Вы
можете увидеть, что sp_readerrorlog принимает четыре
параметра, но нет никакой информации относительно последних
трех параметров. Этот вопрос остался без ответа, точнее,
инженер технической поддержки Microsoft ответил следующее: "IT
is undocumented". Этот ответ пробудил у автора статьи
любопытство, и он проделал несколько экспериментов с
sp_readerrorlog, подставляя ему различные варианты параметров,
анализируя результаты и регулируя параметры. В основном, это
были исследования методом проб и ошибок. Это не было сложным
исследованием, и после тридцати минут экспериментов, автор
выяснили эти "Undocumented nature" для
sp_readerrorlog. - первый параметр, как non-zero; На основании представленных выше заключений, ниже представляются некоторые примеры недокументированного поведения: 1. Чтение файла, не являющегося файлом регистрации ошибок: EXEC sp_readerrorlog 1, 'C:\Test.txt' Для работоспособности этого примера, первый параметр должен быть числом не равным 0 и в диапазоне значений между 1 и 99. Также, второй параметр должен быть именем файла с полным путём к нему. 2. Чтение определенной строки из файла: EXEC sp_readerrorlog 1, 'C:\Test.txt', 4 Этот запрос выдаст четвертую строку из указанного файла. Вы должны использовать допустимый номер строки для указания в качестве третьего параметра, иначе ничто не будет возвращено. 3. Чтение определенной строки только, если она содержит указанное ключевое слово: EXEC sp_readerrorlog 1, 'C:\Test.txt', 4, 'Vyas' Этот пример выводит четвёртую строку файла 'C:\Test.txt', только если она содержит слово 'Vyas'. Автор не думает, что четвертый параметр может принимать знаки подстановки. Автор проверял поведение sp_readerrorlog на SQL Server 2000 с SP1, но не имел возможности воспроизвести его на SQL Server 7.0. И ещё одно ограничение, для такого использования sp_readerrorlog Вы должны быть членом роли sysadmin или securityadmin. Также, автор предостерегает Вас от включения этой не документированной возможности в свои приложения, но отмечает, что для повседневной работы администратора баз данных эта процедура может оказаться полезной. Не исключена вероятность того, что sp_readerrorlog не будет работать так, как описано в этой статье после установки следующего service pack или в следующей версии SQL Server.
|
Перевод: Александра Гладченко 2002г. |