(Возврат на основную страницу)

 

Содержание номера за Декабрь 2007 год

 

SQL Server для администраторов

Декабрь 2007
№ 12 (18)

 

Кристофер Хедгейт

Обзор Lumigent Log Explorer v4

Хьюго Корнелис

Изоляция моментального снимка: угроза целостности? Часть 2

Часто задаваемые вопросы о ClusPrep 1.0 для серверных кластеров на базе Windows Server 2003

Мутусаму Ананта Кумар

Утилита командной строки SQLCMD в SQL Server 2005

Бак Вуди

Мониторинг системы. Часть 1

 

Обзор Lumigent Log Explorer v4

Кристофер Хедгейт (Christoffer Hedgate)

 

Log Explorer от Lumigent Technologies — один из самых известных продуктов сторонних разработчиков для SQL Server. Я не хочу сказать, что этот инструмент есть у каждого администратора баз данных, но большинство из нас о нем слышали.

Введение

Это единственный инструмент (по крайней мере, из тех, что мне знакомы), способный напрямую подключиться к журналу транзакций базы данных и показать, что было сделано, когда и кем. Вы можете просмотреть любую запись в журнале, в том числе в реальном времени. Можно также просматривать записи в резервных копиях журнала. Однако просмотр — не единственная доступная вам функция, вы можете откатить любую транзакцию в журнале, в том числе восстановить целую таблицу, очищенную с помощью операции truncate или даже удаленную. Поскольку Log Explorer работает напрямую с журналом, на таблицах не нужно создавать триггеры, повышающие вероятность ошибок и ухудшающие производительность. Это также означает, что вы не ограничены операциями над данными, помимо них можно просматривать и отменять изменения схем и разрешений. Все эти задачи выполняются, когда база данных находится в рабочем режиме и к ней обращаются пользователи. Операции над журналом никак не влияют на более новые транзакции, проведенные после выполнения этих операций. А теперь сравните это со стандартным способом отмены нежелательных транзакций, вроде операций DELETE без блоков WHERE, которые требуют перевода базы данных в режим офлайн, восстановления базы из резервной копии, выполнения всех операций из журнала транзакций до нужного момента и, наконец, возврата базы данных в режим онлайн.

Поскольку я никогда не пользовался Log Explorer, а в последнем обзоре этого инструмента на SQL Ser­ver Central речь шла о версии 3.0, я решил попробовать с ним поработать. В версии, которую я тестировал, представлены следующие новшества:

•     Мгновенное оповещение о ключевых событиях, таких как создание/модификация/удаление объектов, резервное копирование и восстановление, выполнение команд DBCC, возникновение взаимоблокировок и откат транзакций.

•     Возможность восстановить удаленную таблицу, просто указав Log Explorer резервную копию, где находится нужная таблица.

•     Отмена/повторное выполнение команд, которые не поддерживались в более ранних версиях, в том числе хранимых процедур, триггеров и функций.

Из­за всех этих замечательных функций, о которых я был наслышан, мне не терпелось приступить к тестированию.

Окружение

Я загрузил с веб­сайта Lumigent (www.lumigent.com) и установил на свой лэптоп бесплатную пробную версию программы. Эта пробная версия может подключаться лишь к журналам баз данных Northwind, pubs и LumigentDemoDB (создается поставляемым вместе с программой руководством), так что в основном я занимался функциональным тестированием, не имея возможности оценить производительность программы. Log Explorer состоит из двух частей — серверного и клиентского компонентов. Серверный компонент устанавливается на компьютер, где работает SQL Server, и не требует помимо SQL Server никаких ресурсов или особой конфигурации компьютера. Клиентский компонент можно запустить на том же компьютере, что и серверный, либо на любой другой Windows­машине с возможностью установить сетевое соединение с сервером. Я использовал свой лэптоп (где установлены Windows XP и SQL Server 2000 Developer Edition) и как сервер, и как клиент.

Установка

Процесс установки оказался прост: надо было пару раз нажать Next и ввести кое­какую конфигурационную информацию. Если вы устанавливаете клиентский компонент не на сам сервер, вам может потребоваться изменить способ взаимодействия компонентов. По умолчанию это именованные каналы (named pipes), так что если вы находитесь за межсетевым экраном или по какой­то другой причине не можете использовать именованные каналы, вам придется выбрать TCP/IP. Способ коммуникации определяется параметром, значение которого можно изменить после установки клиента. Обратите также внимание, что Log Explorer поддерживает кластеры SQL Server, но не воспринимает их как единое целое, поэтому его придется установить на каждый сервер в кластере. Я установил бесплатную пробную версию, для которой не нужен регистрационный ключ и которая работает только 30 дней, но при необходимости ее можно обновить до полной версии, просто оплатив лицензию и введя предоставленный ключ. Вот и вся установка. Вдобавок, поскольку базы данных Northwind и pubs по умолчанию используют режим восстановления Simple, мне пришлось переключить их в режим Full, чтобы использовать их для тестирования.

Работа с Log Explorer

В комплекте с Log Explorer идет очень простое в применении практическое руководство, которое поясняет большинство (хотя и не все) функций продукта. Однако сразу же после установки программы я запустил ее, не проходя руководство и не читая документации. Так я получил возможность оценить, насколько работа с продуктом является интуитивно понятной. И, кроме того, посмотрим правде в глаза: кто читает документацию, если без этого можно обойтись? Указав сервер, с которым хочу установить соединение, я должен был выбрать базу данных, к файлу журнала которой собираюсь подключиться. Здесь можно указать онлайн­журнал или резервную копию журнала. На тот момент я этого не знал, но Log Explorer способен подключиться более чем к одному файлу журнала — к нескольким резервным копиям либо к онлайн­журналу и резервным копиям. После этого все функции Log Explorer применимы к единому комбинированному виртуальному журналу. После подключения к файлу журнала вы готовы к началу изысканий.

GUI вполне понятен, в основном он состоит из таблиц и меню за исключением неоправданно больших пурпурных рамок. Как видно из рис. 1, пункты меню говорят сами за себя. И все­таки мне, возможно, было бы комфортнее работать в стандартном GUI Windows, может быть, даже в оснастке MMC. Тем не менее мне не на что жаловаться, поскольку мне потребовалась лишь секунда, чтобы увидеть, что происходит прямо сейчас в онлайн­журнале. Единственный щелчок мышью по Real­time Monitor, потом выражение INSERT в Query Analyzer, и я сразу же вижу транзакцию в Log Explorer.

Рис. 1

Как видно на рис. 2, я могу с легкостью просмо­треть всю информацию о транзакции, например, кто провел ее, когда и с какого клиента. Я также по­про­бовал отменить транзакцию. Это можно сделать через контекстное меню, открывающееся по щелчку правой кнопкой мыши, хотя мне снова показалось, что недостает стандартного сочетания клавиш Windows Ctrl­Z для отмены. Ладно, возможно, CtrlZ будет несколько дезориентировать пользователя, однако факт в том, что для отмены транзакции нет никакого сочетания клавиш. Работать с приложением только с помощью клавиатуры нельзя, а при нажатии Ctrl­Tab я получил картину, приведенную на рис. 3.

Рис. 2

Рис. 3

Если приложение работает нормально, это не так важно, но меня всегда удивляло, почему разработчики приложений не придерживаются стандартных методов работы. Ладно, вернемся к тестированию. Как я сказал, я попытался воспользоваться функциональностью Undo, доступной через контекстное меню, вызываемое по щелчку правой кнопкой мыши на операции INSERT_ROWS. Огромный плюс Log Explo­rer заключается в том, что сам по себе он не вносит никаких изменений. Когда я выбрал Undo, он создал следующий SQL­сценарий:

DELETE [dbo].[Region]
WHERE [Region
цID] = 42
AND [RegionDescription] = N’Somewhere and nowhere '

Сценарий сразу же открылся в Блокноте, так что я мог бы скопировать его в QA (а почему бы не открывать его сразу в QA?), но вместо этого я решил воспользоваться пунктом меню Run SQL Script in Log Ex­plorer. Как я и предполагал, я без проблем запустил только что созданный SQL­сценарий из Log Explorer (хотя для редактирования его снова нужно открыть в Блокноте), и он был выполнен нормально. Вернувшись к пункту View Log, я обновил экран, чтобы вывести последние зафиксированные в журнале транзакции, и разумеется, увидел на экране мое выражение DELETE.

Потом я решил поработать с руководством. Шаги руководства представлены на рис. 4. Как видите, у Log Explorer действительно есть множество полезных функций помимо простого просмотра журнала. Мне особенно понравилась возможность восстановления удаленных таблиц, просто указав файл с резервной копией, где содержится таблица, просмотр истории модификаций любой строки в базе данных (и возможность вернуться к любой из версий), а также очень гибкие возможности фильтрации. С помощью фильтров можно просматривать онлайн­журнал в реальном времени, не боясь затеряться среди данных, быстро находить заданные транзакции в более старых файлах журнала, а также отменять и повторно запускать по нескольку транзакций за раз.

Рис. 4

Я, как мог, пытался запутать генератор сценариев, используя типы данных image и text, а также другие вещи, с которыми обычно возникают сложности при автоматической генерации сценариев, но не смог найти ни одной ошибки ни в одном из созданных SQL­сценариев. Единственный раз я не смог запустить SQL­сценарий напрямую, когда попытался восстановить данные из резервной копии для таблицы, которая больше не существовала. Поскольку Log Explorer не генерировал выражения CREATE TABLE, я получил ошибку «Invalid object name», но Log Explorer перехватил ее и предложил мне на выбор проигнорировать ошибку и продолжить, изменить строку, содержащую ошибку, и продолжить или остановить выполнение. Наконец, я протестировал поставляемое вместе с Log Explorer приложение Server Manager, с помощью которого можно настроить оповещения о заданных событиях в выбранной базе данных. Оповещения рассылаются с помощью электронной почты, так что вам потребуется лишь SMTP­сервер (убедитесь, что разрешена ретрансляция (relaying) с компьютера, где установлен SQL Server). И снова мне понадобилось лишь несколько щелчков мышью, чтобы настроить оповещение о каждом выполнении команды DBCC в базе данных Northwind.

Техническая поддержка

Поскольку я делал лишь краткий обзор бесплатной пробной версии Log Explorer, то не занимался проверкой качества технической поддержки Lumigent Technologies. Руководство и документация продукта произвели на меня очень хорошее впечатление, я не испытал никаких трудностей при работе со всеми функциями программы. Однако у меня возникло чувство, что поддержка компании Lumigent организована на очень хорошем уровне. На своем веб­сайте Lumigent разместила подробное описание процесса обработки заявок и разрешения вопросов и проблем, в том числе, как происходит передача заявок «наверх». Помимо размещенной на сайте информации по текущей версии, документации и ответов на часто задаваемые вопросы, Lumigent предоставляет поддержку в режиме онлайн, а также по телефону. Стоимость поддержки составляет процент от стоимости купленного программного обеспечения и отличается в зависимости от того, какой вариант поддержки вы выберете (24x7 или только в рабочее время). При покупке Log Explorer вам также требуется оплатить один год поддержки.

Заключение

После того как я в той или иной мере поработал со всеми функциями Log Explorer (см. табл. 1), мне стало интересно, почему никто до сих пор не предложил продукта с похожей функциональностью. У Log Explorer есть масса замечательных функций, которые способны оказать DBA реальную помощь, особенно при разрешении проблем. При использовании большинства решений для восстановления данных (в том числе «кустарных») при возникновении ошибки вы должны находиться в режиме аудита, иначе нужная информация не будет зафиксирована. Поиск проблемы путем просмотра журнала транзакций гораздо проще и эффективнее. Кроме того, не страдает производительность, поскольку вся работа выполняется на клиенте. Мои ожидания были достаточно высоки еще до начала тестирования, поскольку я слышал о Log Explorer много хорошего, и этот продукт мне определенно понравился. О Log Explorer обязательно зайдет речь при грядущем обсуждении бюджета!

Что касается стоимости Log Explorer, то на сайте эти сведения не опубликованы. Стоимость продукта можно узнать, позвонив в компанию по телефону или связавшись с ними по электронной почте (см. информацию о продукте в конце статьи), но поскольку я лишь делал обзор бесплатной пробной версии, я решил не узнавать и не приводить здесь цены. Двух одинаковых систем не существует, поэтому стоимость Log Explorer в моем случае может существенно отличаться от его стоимости в другой ситуации. Так что я думаю, лучше всего, если каждый, кого заинтересовала эта программа, сам свяжется с Lumigent и обсудит стоимость продукта для своей конкретной системы.

Информация о продукте

•     Веб­сайт — http://www.lumigent.com/products/le_sql/le_sql.htm.

•     Разработчик — Lumigent Technologies.

•     Загрузка пробной версии — http://lumigent.com/downloads/.

Табл. 1. Рейтинги

Категория

Рейтинг

Комментарии

Простота использования

4

Я бы поставил 5, если бы имел возможность больше задействовать клавиатуру

Набор функций

5

Программа прекрасно справляется с работой, для которой была создана, и не только с ней

Отсутствие ошибок

5

Я не обнаружил никаких ошибок

Стоимость

N/A

Поскольку я не узнавал стоимости продукта, этот показатель оценить довольно сложно. Однако на основании прошлых обзоров, где были представлены сведения о ценах, а также с учетом экономии за счет сокращения времени простоя и упрощения ликвидации проблем, я бы сказал, что Log Explorer стоит своих денег

Техническая поддержка

N/A

Качество технической поддержки протестировано не было, но, кажется, она организована на очень хорошем уровне

Документация

5

Прекрасное практическое руководство и подробная документация. После написания этого обзора у меня не осталось никаких вопросов

Производительность

5

В процессе работы над обзором никаких проблем не возникло, а поскольку все операции выполняются на стороне клиента, они никоим образом не должны повлиять на производительность ваших серверов

Установка

5

Абсолютно никаких проблем

Скорость обучения

4

У меня не возникло сложностей, когда я попытался начать работу с приложением, не прочитав документации. Ознакомление со всеми функциями программы с помощью руководства заняло меньше одного дня

В среднем

5

Log Explorer — прекрасный инструмент, способный существенно облегчить работу любого DBA

 

Изоляция моментального снимка: угроза целостности? Часть 2*

Хьюго Корнелис (Hugo Kornelis)

В предыдущей части этой статьи я показал, как SQL Server препятствует нарушению ограничений внешнего ключа, молча отключая изоляцию моментального снимка. Я также продемонстрировал, как вы можете использовать ту же самую методику внутри программного кода ваших триггеров, чтобы удержать изоляцию моментального снимка от разрушения ваших пользовательских правил целостности. Сейчас я исследую некоторые менее распространенные методики сохранения целостности.

Обратите внимание на то, что обычно я не рекомендовал бы все эти способы, но мне приходилось довольно часто встречать их в сообщениях тематических телеконференций. Очевидно, они находят применение.

*См. Хьюго Корнелис. Изоляция моментального снимка: угро­за целостности? Часть 1 // SQL Server для администраторов. 2007. № 11.

Часто задаваемые вопросы о ClusPrep 1.0 для серверных кластеров на базе Windows Server 2003

 

В этой статье вы найдете ответы на некоторые часто задаваемые вопросы об инструменте Microsoft Cluster Configuration Validation Wizard (ClusPrep*) версии 1.0.

*Загрузить ClusPrep можно с веб­сайта Microsoft: http://www.microsoft.com/downloads/details.aspx?FamilyID=bf9eb3a7-fb91-4691-9c16-553604265c31&DisplayLang=en

Утилита командной строки SQLCMD в SQL Server 2005

Мутусаму Ананта Кумар, он же МАК (Muthusamy Anantha Kumar aka The MAK)

Вместе с SQL Server 2005 Microsoft поставляет утилиту командной строки SQLCMD, которая должна заменить собой утилиты ISQL и OSQL. В этой серии статей я расскажу о различных сферах применения этой утилиты.

Мониторинг системы. Часть 1

Бак Вуди (Buck Woody)

Когда требуется присмотреться к системе, чтобы выработать модели развития, обнаружить неисправность или «узкое место» с точки зрения производительности, в первую очередь нужно знать, куда смотреть. К счастью, несмотря на сложность вычислительных систем предприятий, у компьютера лишь четыре основных составляющих: процессор (или процессоры), память, система хранения данных и сетевые интерфейсы. Разумеется, аппаратная архитектура системы содержит гораздо больше компонентов, но все они влияют или подвергаются влиянию перечисленных выше основных составных частей.

Рост проявляет себя в увеличении потребления дискового пространства и трафика через сетевые интерфейсы, в повышении потребления памяти и загрузки процессоров. Проблемы возникают в одном из четырех основных компонентов или, чаще, охватывают некоторую их комбинацию. То же относится и к «узким местам».

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

(Возврат на основную страницу)

Hosted by uCoz