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

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


Информационный Канал Subscribe.Ru

Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)" Выпуск 66 (17 декабря 2005 г.)

http://www.sql-ex.ru

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

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

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

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

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


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

§ Исправлен баг, вызывавший ошибку на странице сравнительной оценки эффективности запросов-решений.

§ Задача от Roman S. Golubin заменила задачу 96. Условная сложность 2 балла. Планирую еще поменять несколько задач, в частности, одну или две задачи первого этапа.

§ Изменился подсчет рейтинга задач второго этапа. Теперь это среднее время по первым 20 участникам рейтинга ТОР 100. Это более объективная оценка, т.к. многие участники, которые бросают где-то на середине, дают вклад не во все задачи, а только в те, которые они решили. Изменения, которые могут произойти в двадцатке, на мой взгляд, будут только улучшать такую оценку сложности задачи. Вот как упорядочились задачи по сложности: рейтинг задач.

§ Уже не первый человек сменил сертификат с BK на AR. На прошедшей неделе этого добился ogarok_dima.
Я расцениваю это как способность сайта не только тестировать знания, но и давать их. Пользуясь случаем хочу поблагодарить не только авторов задач, но и всех тех, кто делится своими решениями на форуме, что и является главной составляющей обучения.

§ Похоже, что у студентов наступили "критические дни". Как еще расценивать призывы типа "вопрос жизни и смерти - помогите решить задачу"? Я не могу, да и не хочу, влиять на политику других сайтов. Но поскольку опубликование решений рейтинговых задач понижает ценность нашего сертификата и влияет на рейтинг участников, мы вынуждены как-то защищаться. "Великим русским писателям" наш администратор накинул по году за чужое решение 72 задачи. Кроме того, мы не собираемся подтверждать сертификатом умение копировать чужие решения.
Заодно я хочу обратиться к преподавателям, использующих сайт в учебных целях. Мне представляется очевидным, что не следует ставить оценку успеваемости студентов в зависимость от результатов, показанных при решении задач на сайте, т.к. результат этого подхода заранее известен и не даст объективной оценки. Нельзя заставить человека учиться, но можно заставить его приспосабливаться к требованиям и искать пути обхода :-).
P.S. Мне всегда казались подозрительными лица, скрывающие свое имя (я имею в виду не ник, а фамилию). Что характерно, подозрения подтверждаются с завидной регулярностью :-).

§ Начали постепенно просыпаться лидеры. Однако пока только Cyrilus решил все выставленные задачи и по праву занимает первую позицию. Только два участника начали решать последнюю задачу - 138. За неделю решить ее не удалось. Внутренний голос подсказывает мне, что вряд ли найдутся еще смельчаки, если задачу не удастся решить начавшим ее. Поэтому я искренне желаю успеха Roman S. Golubin и EffEct.

§ Новый человек в сотне - Julia_M (задач 95, время 9.283).

§ На этой неделе сохранили шансы на место в десятке
ValdemarES (задач 123, время 6.060)
SergeyTikh (120, 5.879)
User_Name (102, 7.950)

§ Продолжили свое восхождение к вершине в сотне:
BOBAH (134, 28.359)
Sp999 (124, 23.871)
Bolschakoff_I_A (124, 52.562)
go (121, 23.852)
хах (120, 49.279)
Weed (120, 49.554)
Lord Nick (120, 18.984)
fil (107, 36.839)
Zhekaus (101, 82.703)

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 LastSolved LastVisit
1 >Кувалкин К.С. (Cyrilus) 138 96 20 316 387 5.234 16 Dec 2005 16 Dec 2005
2 Голубин Р.С. (Roman S. Golubin) 137 96 20 312 117 6.572 13 Dec 2005 16 Dec 2005
3 Тарасов Д.Б. (Gavrila) 137 96 20 312 109 10.968 13 Dec 2005 16 Dec 2005
4 Войнов П.Е. (pаparome) 136 137 20 310 104 1.724 06 Dec 2005 16 Dec 2005
5 Духин А. (Shark) 136 137 20 310 148 2.746 06 Dec 2005 15 Dec 2005
6 Абашин П.И. (Dizil) 136 137 20 310 104 3.651 06 Dec 2005 16 Dec 2005
7 Страшников А.С. (EffEct) 136 137 20 310 205 57.937 06 Dec 2005 16 Dec 2005
8 Галиаскаров Э.Г. (Galogen) 136 72 20 310 387 67.460 14 Dec 2005 16 Dec 2005
9 >Носков Н.В. (niko2) 135 59 20 308 163 8.002 16 Dec 2005 16 Dec 2005
10 Зверев Д.Л. (dimzv) 134 137 20 307 643 2.871 08 Aug 2005 16 Dec 2005
11 Гонтовой В.А. (noname) 134 137 20 307 105 9.793 29 Jun 2005 10 Nov 2005
12 Леденев С.А. (Shurgenz) 134 137 20 307 313 9.831 27 Jun 2005 14 Dec 2005
13 Бураков С.Г. (burakov58) 134 137 20 307 164 12.079 12 Jul 2005 04 Dec 2005
14 Крижевич С.А. (yaff) 134 137 20 307 134 14.218 11 Nov 2005 01 Dec 2005
15 Валуев Д.И. (Fiolent) 134 137 20 307 662 26.556 27 Jun 2005 16 Dec 2005
16 Мельникова И.А. (Iris_m) 134 137 20 307 478 91.730 02 Sep 2005 10 Oct 2005
17 Gershovich (VIG) 134 136 20 304 999 13.913 05 Dec 2005 16 Dec 2005
18 Алалыкин В.М. (BOBAH) 134 135 20 303 202 28.359 11 Dec 2005 11 Dec 2005
19 Колосов А.С. (KAS) 131 137 20 301 25 3.384 11 Mar 2005 30 Oct 2005
20 Сныткин В.Л. (Ded I) 131 136 20 299 252 7.347 12 May 2005 16 Nov 2005

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 Лущенко С.В. (lsv) 57 57 102 0 102 563 15 Dec 2005
2 >Арефин Д.С. (ardec) 56 56 99 0 99 586 16 Dec 2005
3 >Макаровский Л.И. (malion) 50 50 85 3 88 683 16 Dec 2005
4 Толстой Л.Н. (Tolstoy) 25 95 53 29 82 85 16 Dec 2005
5 >Хрыстыч З.Ю. (Захар) 42 42 69 9 78 806 16 Dec 2005
6 Bezverkhikh (Pulse) 37 37 66 0 66 995 14 Dec 2005
7 >Bukin V.A. (Bukin V.A.) 36 36 64 1 65 1008 16 Dec 2005
8 Хромов С.Ю. (корч) 26 60 48 15 63 352 16 Dec 2005
9 Мельник В.В. (Dr. Lion) 35 35 62 0 62 1080 13 Dec 2005
10 >Ones I.V. (ilya) 35 35 61 0 61 1100 16 Dec 2005
11 Багриевич А.В. (BDRON) 27 57 47 9 56 428 16 Dec 2005
12 Федоров В.В. (Виталик) 9 58 22 32 54 241 16 Dec 2005
13 >Абдулин А.Р. (Andrey_Alekta) 30 32 53 0 53 882 16 Dec 2005
14 >Киселев М.А. (KiselevM) 28 28 49 0 49 1362 16 Dec 2005
15 >rezvukhin G.S. (rezvukhin) 28 28 49 0 49 1363 16 Dec 2005
16 >Зубов М.В. (max2103) 28 28 49 0 49 1364 16 Dec 2005
17 >Ульянов Л.В. (Leva) 28 28 49 0 49 1394 16 Dec 2005
18 >Пантелеев С.А. (Panteleev_Semen) 27 44 48 0 48 945 16 Dec 2005
19 >Селезнева Н.А. (Natala) 36 36 48 0 48 1431 16 Dec 2005
20 >Кондратьев К.А. (Kostyan) 26 32 47 0 47 1285 16 Dec 2005
21 >Прилуков Е.В. (HATE SQL) 26 28 47 0 47 1412 16 Dec 2005
22 Рыбкин К.В. (strstr) 22 43 37 7 44 855 15 Dec 2005
23 >Elkin S.A. (SQL-monster) 23 28 44 0 44 1413 16 Dec 2005
24 >Пономарев (lion-phoenix) 26 26 43 0 43 1522 16 Dec 2005
25 >Gatapov B. (Gatap) 31 31 41 0 41 1579 16 Dec 2005
26 >Palacharla P. (sry) 25 25 40 0 40 1600 16 Dec 2005
27 >Новокрещенных Е.Г. (Катя) 25 25 40 0 40 1610 16 Dec 2005

Изучаем SQL

Управление безопасностью SQL Server средствами Microsoft Access (окончание, начало в вып.60-65)

Rick Dobson, Ph.D. (оригинал: Managing Microsoft SQL Server Security with Microsoft Access )
Выборочный перевод Леденева С. А.

Создание логина с пользователем - участником роли db_datareader

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

Пример кода заключительной части статьи демонстрирует процедуру добавления нового логина для аутентификации SQL Server, а также создает пользователя для этого логина в базе данных your_db_name. В этом примере новый пользователь также включается в фиксированную роль базы данных db_datareader. Наконец, открывается проект ADP, основываясь на новом логине и пользователе.

После соединения с сервером и создания нового логина login_name, код создает нового пользователя. Далее назначаются свойства Name и Login для пользователя. Свойство Login означает логин, под которым пользователь соединяется - login_name в нашем примере. После этого пользователь готов к добавлению в коллекцию Users базы данных. Отметим, что синтаксис добавления нового пользователя соответствует синтаксису иерархии объектов. Метод Add для нового пользователя применяется к коллекции Users принадлежащей в свою очередь объекту database. Database - член коллекции Databases принадлежащей объекту сервера (SQLserver). После создания пользователя требуется одна или несколько строчек для внесения пользователя в фиксированную роль базы данных db_datareader. Метод по добавлению пользователя в роль называется AddMember. В нашем случае метод AddMember элемента коллекции DatabaseRoles добавляет пользователя в роль базы данных. Этот метод берет в качестве параметра строковое выражение свойства Name объекта нового пользователя.

Как только настройка безопасности нового логина и пользователя завершены, вызывается процедура OpenADPWindowsOrSQLServer. В предыдущих листингах есть пример использования этой процедуры. В нашем случае открывается файл msdn_test_security.adp, основываясь на логине login_name. Для проверки работоспособности логина откройте таблицы базы данных your_db_name. Дополнительно, работоспособность нового логина можно проверить в диалоговом окне Параметры соединения, указав логин your_login.

Если попытаться повторно запустить процедуру MakeLoginWithDatareaderUser попытка закончится ошибкой. Это потому, что логин your_login уже существует. Ошибка возникнет при попытке повторно его добавить. Попытка запустить процедуру может закончиться неудачей и по другой причине: Вы не закрыли проект, подключенный к БД с этим логином. Вы можете написать стандартную обработку ошибок VBA для обработки ошибок времени выполнения. Подобные ошибки могут сопровождать выполнение предыдущих примеров. Я предпочел не углубляться в обсуждение обнаружения ошибок времени выполнения, акцентируя внимание на вопросах безопасности SQL сервера.

Sub MakeLoginWithDatareaderUser()
    Dim srv1 As SQLDMO.SQLServer
     Dim lgn1 As SQLDMO.Login
     Dim usr1 As SQLDMO.User
     Dim srvname As String
     Dim suid As String
     Dim pwd As String
     Dim dbname As String
     Dim prpath As String
     Dim prname As String
     Dim bolWindowsLogin As Boolean

     'Определяем аргументы
     srvname = "YOUR_SERVER_NAME"
     suid = "sa"
     pwd = "password"
     dbname = "your_db_name"

     'инициализируем сервер
     Set srv1 = New SQLDMO.SQLServer

     'Вызываем метод Connect для логина при аутентификации SQL сервером
     srv1.Connect srvname, suid, pwd

     'Инициализируем и добавляем объект login
     'на сервер srv1
     suid = "login_name"
     Set lgn1 = New SQLDMO.Login
     lgn1.Name = suid
     lgn1.Database = dbname
     lgn1.SetPassword "", pwd
     srv1.Logins.Add lgn1

     'Инициализируем и добавляем объект user
     'в базу данных your_db_name
     Set usr1 = New SQLDMO.User
     usr1.Name = suid
     usr1.Login = lgn1.Name
     srv1.Databases(dbname).Users.Add usr1
     srv1.Databases(dbname).DatabaseRoles("db_datareader").AddMember usr1.Name

     'Устанавливаем параметры для открытия проекта ADP

     prpath = "Path_to_project_file"
     prname = "msdn_security_test"

     'Этот аргумент контролирует использование логина Windows
     'для текущего пользователя вместо suid и pwd SQL сервера
     bolWindowsLogin = False

     'Вызов процедуры открытия проекта prname
     'с Windows или SQL Server аутентификацией
     OpenADPWindowsOrSQLServer srvname, dbname, _
     prpath, prname, suid, pwd, bolWindowsLogin

     'Оставляем объект открытым для просмотра

End Sub

Заключение

Безопасность SQL Server построена на принципах, отличных от тех, что использовали программисты в базах данных Jet. Тем не менее, SQL Server Books Online тщательно документирует правила по безопасности SQL Server. Эта статья переводит основные правила BOL в специфические правила, цель которых использовать проект Access с SQL Server. Примеры кода, приведенные в этой статье, демонстрируют, как управлять безопасностью SQL Server с помощью Access.

Контакты

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

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

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.db.sqlex
Архив рассылки
Отписаться
Вспомнить пароль

В избранное