Новости сайта "Упражнения по SQL" (http://www.sql-ex.ru) 95
Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)" Выпуск 95 (8 июля 2006 г.)
Новым посетителям сайта
Сайт посвящен изучению языка, с помощью которого осуществляется взаимодействие с реляционными (и не только) СУБД. Суть обучения состоит в выполнении заданий на написание запросов к учебным базам данных; при этом система контролирует правильность выполнения заданий. В настоящее время реализованы все операторы подъязыка манипуляции данными (DML), которые включают в себя оператор извлечения данных SELECT, а также операторы модификации данных - INSERT, DELETE и UPDATE.
Мы надеемся, что справочного материала сайта окажется достаточно для самостоятельного обучения. Кроме того, свои решения вы можете обсудить на форуме сайта. Опытных же специалистов приглашаем проверить (продемонстрировать) свое мастерство и принять участие в соревновании, обеспечиваемом рейтинговой системой учета времени выполнения заданий. Фактически, рейтинг ведется на втором этапе тестирования, который начинается сейчас после решения 58-ти задач первого этапа. При подсчете рейтинга каждого
участника отбрасывается один самый худший показатель среди всех решенных им упражнений.
Демонстрация плана выполнения запроса и сравнительная оценка эффективности решений поможет вам освоить принципы оптимизации запросов.
Имеется возможность получить сертификат по SQL DML при выполнении определенного количества заданий.
Новости сайта
§ Произвел компенсацию времени, связанную с недоступностью сайта на прошлой неделе.
§ Многочисленные нарекания по поводу формулировки задачи 52, наконец, дали результат :-). Спасибо GoshaS_29 и Shurgenz за новые формулировки. Вернул с небольшими изменениями старую формулировку задачи 97, т.к. последняя редакция не вполне соответствовала проверочному решению.
§ В проверочной базе оказались "квадраты-однофамильцы", т.е. разные квадраты с одинаковыми именами. Вот к чему приводит копирование :-). Хотя нигде не сказано, что имена квадратов уникальны, и это не должно вызывать ошибок при правильном решении задач, все же исправил.
§ Новый человек в сотне: Ocean (задач 102, время 23.869)
§ Сохранили шансы попасть в ТОР 10: Shurgenz (135, 12.406) a2010 (128, 10.176) Ded I (128, 7.339) =Maxim= (115, 5.773) Если a2010 не потеряет темп, то в десятке впервые в истории может оказаться "подлинный" иностранец :-). Видимо, английские формулировки не так плохи.
§ Продолжили свое восхождение к вершине: gps (136, 213.761) vlksm (132, 19.791) SoVa (123, 81.270) silich (115, 52.830) FanOfBeer (113, 60.178) ba (110, 24.865) Zhekaus (101, 152.535)
§ На этой неделе сертифицированы: a2010 (B06009602) [AR] (ISRAEL, Ra'anana)
Тупик - это состояние, когда 2 (или больше) процесса пытаются обратиться к ресурсу, который заблокирован другим процессом. Поскольку каждый процесс запрашивает ресурс другого процесса, ни один из них не может быть завершен. Когда SQL Server обнаруживает тупик, он откатывает транзакцию, которая имеет наименьшую продолжительность обработки и возвращает в приложение сообщение об ошибке 1205. Сообщение об ошибке 1205 прерывает выполнение текущего пакета и откатывает текущую транзакцию.
Детали
В некоторых случаях состояние тупика будет вызывать команду библиотеки DB-Library (DB-Lib) типа dbsqlexec, dbsqlok или dbresults, чтобы вернуть FAIL (сбой). Программа всегда ответственна за проверку кодов возврата из каждой команды DB-Lib. Если одна из этих команд DB-Lib возвращает FAIL, программа должна отменить выполнение пакета, а не попытаться его продолжить. В некоторых случаях возможно продолжение выполнения последующих команд в пакете. Однако поскольку произошла тупиковая ситуация, и для команды,
которая ее вызвала, был выполнен откат, последующие команды в пакете будут, вероятно, вызывать более серьезные ошибки, например, "объект не найден".
В других случаях состояние тупика не будет заставлять команду DB-Lib возвращать FAIL. Чтобы обработать такую ситуацию, программа должна проверить сообщение 1205 в обработчике сообщений и использовать функцию dbsetuserdata, чтобы сообщить об этом вашему приложению (пример может быть найден в Главе 4 " DB-Library Functions" справочника программиста С в пункте dbsetuserdata). Таким образом, программа должна проверять индикатор тупика после каждого вызова DB-Library и отменять выполнение пакета
в случае обнаружения тупика.
Хотя может показаться необязательной отмена пакета после получения сообщения о тупике 1205, это необходимо, потому что сервер не всегда прерывает выполнение пакета в тупиковой ситуации. Если выполнение пакета не отменено, любая другая попытка принять новый пакет может привести к ошибке DB-Library 10038 "Results Pending" (задержка результатов).
Вы можете найти описание проблемы тупика и пример того, как обнаружить состояние тупика в Приложении E "Максимизирование согласованности и параллелизма" в "Справочнике программиста C" SQL Server для Windows NT
Применимо к
o Microsoft SQL Server 4.21a Standard Edition o Microsoft SQL Server 2000 Standard Edition o Microsoft SQL Server 2005 Standard Edition o Microsoft SQL Server 2005 Developer Edition o Microsoft SQL Server 2005 Enterprise Edition o Microsoft SQL Server 2005 Express Edition o Microsoft SQL Server 2005 Workgroup Edition
05/06/2006
Полезная информация
§ Набрел на интересную программу, которая в QA и Management Studio упрощает ввод и украшает код. Скриншот можно посмотреть здесь. Там же можно и скачать (кажется 2.5 Мб). Бесплатна, но требуется регистрация.
§ Все статьи, публикуемые в рассылке, затем выкладываются на сайте Книги и статьи по SQL.
§ Поступила в продажу книга SQL. Задачи и решения, посвященная анализу ошибок, допускаемых при решении задач первого этапа. На сайте издательства Питер можно сделать заказ и познакомиться с содержанием.
Контакты
По всем вопросам, связанным с функционированием сайта, проблемами при решении упражнений, идеями вы можете обращаться к Сергею И.Моисеенко msi77@yandex.ru. Вы также можете предложить свои задачи для публикации на сайте.