Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Новости сайта "Упражнения по SQL" (http://www.sql-ex.ru) 189


Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)" Выпуск 189 (10 мая 2008 г.)

Новым посетителям сайта

SQL Exercises Сайт посвящен изучению языка, с помощью которого осуществляется взаимодействие с реляционными (и не только) СУБД. Суть обучения состоит в выполнении заданий на написание запросов к учебным базам данных; при этом система контролирует правильность выполнения заданий. В настоящее время реализованы все операторы подъязыка манипуляции данными (DML), которые включают в себя оператор извлечения данных SELECT, а также операторы модификации данных - INSERT, DELETE и UPDATE.

Мы надеемся, что справочного материала сайта окажется достаточно для самостоятельного обучения. Кроме того, свои решения вы можете обсудить на форуме сайта. Опытных же специалистов приглашаем проверить (продемонстрировать) свое мастерство и принять участие в соревновании, обеспечиваемом рейтинговой системой учета времени выполнения заданий. Фактически, рейтинг ведется на втором этапе тестирования, который начинается сейчас после решения 57-ти задач первого этапа. При подсчете рейтинга каждого участника отбрасывается один самый худший показатель среди всех решенных им упражнений.

Демонстрация плана выполнения запроса и сравнительная оценка эффективности решений поможет вам освоить принципы оптимизации запросов, которые пригодятся на третьем рейтинговом этапе, который начинается после 138 задачи.

Имеется возможность получить сертификат по SQL DML при выполнении определенного количества заданий.


С днем Победы!

Новости сайта

§ Уважаемые коллеги.

Приглашаем вас на семинар Russian SQL Server User Group, который состоится 21 мая с.г. в аудитории 501 факультета высоких технологий Южного Федерального Университета по адресу Ростов-на-Дону, ул.Мильчакова, 10.
С докладами на семинаре выступят Николай Денищенко и Ян Либерман, Microsoft Most Valueable Professionals. В мае этого года Николай и Ян были признаны лучшими докладчиками на конкурсе User Groups-2008. В программе семинара:

Как снизить риск сетевой атаки на SQL Server. Демонстрация. Николай Денищенко, Ян Либерман - 60 мин.
Перерыв - 15 мин.
Некоторые вопросы шифрования в SQL Server. Ян Либерман - 60 мин.
Перерыв - 15 мин.
Дешифрование и защита серверного кода. Николай Денищенко - 45 мин.
Extensible Key Management (EKM) в SQL Server 2008. Николай Денищенко - 45 мин.

Зарегистрироваться на семинар можно здесь. Приходите, будет интересно.

§ Cтоимость сертификата в рублях изменилась и составляет 960 рублей (в евро цена осталась прежней). Те, кто сделал заказ и распечатал квитанцию со старой ценой, могут заплатить по ней.

§ Новая задача от $erges выставлена под номером 81. Прежнюю 81-ю задачу пришлось убрать вообще, т.к. ее решение не составляет труда после решения 80-ой задачи, и перенос этой задачи на первый этап повлиял бы на объективность рейтинга. Приношу VIG свои извинения :-).

§ Продвинулись в рейтинге:
36. AKudrakov (137, 28.609)
37. avk (137, 64.164)
39. AlexFJ (137, 160.759)
52. nebiros (135, 84.057)
75. Чумазик (130, 94.974)

§ Продвижение ближайших претендентов на попадание в ТОР 100:
103. reks07 (124, 34.555)
116. Angellore (122, 36.453)
125. shock (120, 8.995)
130. CasperGhost (119, 59.077)
140. LexusSaD (117, 2.535)
166. DDV (110, 40.642)

§ На этой неделе сертифицированы:
Umrikhina (A08032416) [BK] - г.Новосибирск, Россия

§ Число подписчиков - 3789

Число участников рейтинга - 16249

Число участников второго этапа - 1351

Число участников третьего этапа - 31

Сертифицировано на сайте - 271

Лучшие результаты (ТОР 20)

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 Days_3 S_3 LastSolved LastVisit
1 Сальников С.А. ($erges) 146 44 21 357 62 2.754 3.359 28 28 Apr 2008 08 May 2008
2 Печатнов В.В. (pvv) 146 44 21 357 190 19.165 6.326 28 26 Apr 2008 08 May 2008
3 Креславский О.М. (Arcan) 146 44 21 357 452 22.436 12.553 28 26 Apr 2008 09 May 2008
4 Карасёва Н.В. (vlksm) 146 44 21 357 721 64.764 38.288 28 26 Apr 2008 05 May 2008
5 Любченко В.А. (IAS56) 146 44 21 357 600 403.414 373.617 28 26 Apr 2008 08 May 2008
6 Держальцев В.А. (MadVet) 145 44 21 354 1108 57.441 25.129 25 28 Apr 2008 05 May 2008
7 Голубин Р.С. (Roman S. Golubin) 145 44 21 354 983 92.541 58.822 25 27 Apr 2008 09 May 2008
8 Мурашкин И.В. (lepton) 144 44 21 350 767 37.129 26.815 21 28 Apr 2008 06 May 2008
9 Белогурова К. (Katy_Ekb) 142 143 21 346 287 10.733 4.673 18 07 Mar 2008 25 Apr 2008
10 Войнов П.Е. (pаparome) 143 44 21 346 978 3.013 .213 17 28 Apr 2008 08 May 2008
11 Северюхин Ю.А. (Venser) 139 142 21 338 335 4.930 .655 14 01 Feb 2008 04 Feb 2008
12 Борисенков Д.В. (xuser) 142 141 21 343 92 3.219 .926 14 02 May 2008 09 May 2008
13 Тарасов Д.Б. (Gavrila) 141 44 21 340 976 23.390 2.501 14 28 Apr 2008 08 May 2008
14 Солдатенков Ю.С. (SolYUtor) 140 142 21 339 703 17.852 2.695 14 20 Apr 2008 08 May 2008
15 Кувалкин К.С. (Cyrilus) 140 142 21 339 1207 13.042 2.782 14 15 Mar 2008 08 May 2008
16 Шептунов П.П. (Dzen) 138 142 21 337 279 8.130 3.499 14 02 Oct 2007 15 Nov 2007
17 Селезнёв А.С. (Артём С.) 141 142 21 342 127 15.597 4.279 14 14 Mar 2008 31 Mar 2008
18 iglbeat (iglbeat) 142 44 21 343 265 27.442 6.641 14 05 May 2008 05 May 2008
19 Мальцев А.В. (Палкин) 138 142 21 337 422 48.788 7.690 14 13 Oct 2007 20 Jan 2008
20 Васьков Е.В. (Johan) 141 44 21 340 656 14.323 12.767 14 05 May 2008 05 May 2008

Лучшие результаты за неделю

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Кожушко А.А. (Stasca) 51 51 97 0 97 1725 08 May 2008
2 Мишин С. (CepbIu) 39 110 90 0 90 173 08 May 2008
3 Мельников Е. (evgen_m) 43 43 80 0 80 2318 08 May 2008
4 Кошовник А. (2sh) 40 40 76 0 76 2457 07 May 2008
5 >Fomichev A.M. (Black Rey) 28 86 60 15 75 288 09 May 2008
6 Эм А.Г. (AlexLipetsk) 32 42 68 0 68 2357 08 May 2008
7 Баранова (OP) 20 67 36 31 67 564 08 May 2008
8 Хасанов Р.Р. (rHoM) 35 35 64 0 64 3121 09 May 2008
9 >Барыльников А.Я. (_lexab_) 16 59 32 30 62 799 09 May 2008
10 >Soja M. (Mariusz) 29 29 49 11 60 3392 09 May 2008
11 Умеров А. (Goerik) 25 36 56 0 56 2877 06 May 2008
12 Vitysya (Vitysya) 30 30 56 0 56 3710 07 May 2008
13 Андриевская Е.Н. (Sovest) 22 29 48 7 55 3269 09 May 2008
14 Тачков Д.Е. (Zenturion) 11 66 20 34 54 603 08 May 2008
15 Мисечко В.В. (junior-aka-mvv) 16 56 31 23 54 982 08 May 2008
16 >Лахижа Р.Н. (Roman_La) 12 44 21 32 53 1325 09 May 2008
17 Гладун В.В. (Coding1) 22 36 52 0 52 2873 08 May 2008
18 сариев И.К. (Gilby) 22 45 49 1 50 2006 08 May 2008
19 Колганов Д.Н. (Dobrinya) 27 27 49 0 49 4391 08 May 2008
20 Sadilov (s3) 20 40 45 0 45 2462 09 May 2008
21 Aulova (haru) 25 25 43 0 43 5028 09 May 2008
22 zwejinsky (zwe32) 25 25 42 0 42 5147 07 May 2008
23 Кресов А.А. (Never) 19 97 41 0 41 227 07 May 2008
24 Gruzdev S. (gruzdev_sergey) 13 30 33 8 41 2627 08 May 2008
25 Yurkin Y. (Yurkin_Yura) 11 21 23 17 40 4263 08 May 2008

Изучаем SQL

Восстановление базы данных SQL Server с помощью журналов транзакций

Tim Chapman (оригинал: Restore your SQL Server database using transaction logs )
Перевод Моисеенко С.И.

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

Сценарий

Сотрудник называет Вас в панике, потому что он случайно удалил некоторые данные производственной базы, и он хочет, чтобы Вы восстановили потерянные записи.

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

Процесс восстановления

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

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

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

 

RESTORE DATABASE NewDatabase
FROM DISK = 'D:\BackupFiles\TestDatabaseFullBackup.bak'
WITH
MOVE 'PreviousDatabase' TO 'D:\DataFiles \TestDatabase.mdf',
MOVE 'PreviousDatabase_log' TO 'D:\DataFiles \TestDatabase_Log.ldf',
NORECOVERY

 

Код определяет, что местоположение файла полной резервной копии находится на диске D вашего сервера, и что Вы восстанавливаете файл в базу данных с именем NewDatabase. Оператор перемещает файл данных и файл журнала из полной резервной копии в новые файлы для моей базы данных TestDatabase. Последний оператор в скрипте, NORECOVERY, является ключевым моментом. Режим NORECOVERY (без восстановления) - один из трех возможных вариантов, которые описаны ниже.

|> NORECOVERY: Сообщает SQL Server, что Вы не закончили восстановление базы данных, и что последуют другие файлы восстановления. Пока база данных находится в этом состоянии, она еще не доступна, т.е. никакие подключения к ней не позволяются.
|> RECOVERY: Сообщает SQL Server, что Вы закончили восстановление базы данных, и она готова к использованию. Это опция принимается по умолчанию и, безусловно, используется чаще всего.
|> STANDBY: Сообщает SQL Server, что текущая база данных еще не готова к полному восстановлению, и что последовательные файлы журнала транзакций будут применены для восстановления. Вы можете использовать эту опцию, чтобы подключения стали доступны для восстановленной базы данных в случае необходимости. Однако будущие журналы транзакций могут быть применены к базе данных, только если нет никаких текущих подключений.

Как только Вы восстановили полную резервную копию, используя опцию NORECOVERY, то можете начать применять резервные копии журнала транзакций или дифференциальную резервную копию.

Дифференциальная резервная копия

Дифференциальная резервная копия - это резервная копия любых изменений в базе данных, которые произошли, начиная с последней полной резервной копии базы данных. Если Вы имеете многочисленные дифференциальные резервные копии, то Вам потребуется восстановить только одну самую последнюю. В данной ситуации, нет никаких дифференциальных резервных копий, таким образом, Вы можете сразу перейти к резервным копиям журнала транзакции.

Резервные копии журнала транзакции

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

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

 

RESTORE LOG NewDatabase
FROM DISK = 'D:\BackupFiles\TestDatabase_TransactionLogBackup1.trn'
WITH NORECOVERY
RESTORE LOG NewDatabase
FROM DISK = 'D:\BackupFiles\ TestDatabase_TransactionLogBackup2.trn'
WITH NORECOVERY
RESTORE LOG NewDatabase
FROM DISK = 'D:\BackupFiles\ TestDatabase_TransactionLogBackup3.trn'
WITH NORECOVERY
RESTORE LOG NewDatabase
FROM DISK = 'D:\BackupFiles\ TestDatabase_TransactionLogBackup4.trn'
WITH RECOVERY

 

Восстановление к определенному моменту времени

В примере выше Вы восстанавливаете базу данных к моменту окончания последнего журнала транзакций. Если Вы хотите вернуть вашу базу данных к определенному моменту времени перед концом журнала транзакций, то должны использовать опцию STOPAT. Скрипт ниже восстанавливает четвертый журнал транзакций в последовательности журналов ко времени 16:01 - непосредственно перед тем, как случилась неприятность с базой данных.

 

RESTORE LOG NewDatabase
FROM DISK = 'D:\BackupFiles\ TestDatabase_TransactionLogBackup4.trn'
WITH STOPAT = N'6/28/2007 4:01:45 PM', RECOVERY

 

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

Будь готов

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

13-09-2007

Полезная информация

§ Все статьи, публикуемые в рассылке, затем выкладываются на сайте Книги и статьи по SQL.

§ Желающих поспособствовать популяризации сайта прошу проголосовать/поставить закладку в социальных сетях:
del.icio.us
dzone.com
Digg.com
stumbleupon.com

Контакты

По всем вопросам, связанным с функционированием сайта, проблемами при решении упражнений, идеями вы можете обращаться к Сергею И.Моисеенко msi77[@]yandex.ru. Вы также можете предложить свои задачи для публикации на сайте.

Подписка Subscribe.Ru
Новости сайта "Упражнения по SQL"

В избранное