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

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


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

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

http://www.sql-ex.ru

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

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

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

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

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


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

§ Усилил проверку 66 задачи. Спасибо User_Name и pаparome, обративших внимание на проблему.

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

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

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

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

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

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 LastSolved LastVisit
1 Духин А. (Shark) 137 137 20 312 30 2.635 10 Aug 2005 18 Nov 2005
2 Зверев Д.Л. (dimzv) 137 137 20 312 643 2.900 08 Aug 2005 01 Sep 2005
3 Кувалкин К.С. (Cyrilus) 137 137 20 312 224 5.129 06 Jul 2005 18 Nov 2005
4 Голубин Р.С. (Roman S. Golubin) 137 137 20 312 48 6.480 05 Oct 2005 18 Nov 2005
5 Носков Н.В. (niko2) 137 137 20 312 47 7.855 22 Aug 2005 27 Oct 2005
6 Гонтовой В.А. (noname) 137 137 20 312 105 9.808 29 Jun 2005 10 Nov 2005
7 Леденев С.А. (Shurgenz) 137 137 20 312 313 9.900 27 Jun 2005 08 Nov 2005
8 Бураков С.Г. (burakov58) 137 137 20 312 164 12.100 12 Jul 2005 17 Nov 2005
9 Крижевич С.А. (yaff) 137 137 20 312 134 14.340 11 Nov 2005 17 Nov 2005
10 Валуев Д.И. (Fiolent) 137 137 20 312 662 26.627 27 Jun 2005 18 Nov 2005
11 Страшников А.С. (EffEct) 137 137 20 312 164 54.939 26 Oct 2005 03 Nov 2005
12 Галиаскаров Э.Г. (Galogen) 137 137 20 312 221 61.437 01 Jul 2005 31 Oct 2005
13 Мельникова И.А. (Iris_m) 137 137 20 312 478 91.764 02 Sep 2005 10 Oct 2005
14 Gershovich (VIG) 136 136 20 308 895 13.954 23 Aug 2005 18 Nov 2005
15 Колосов А.С. (KAS) 134 137 20 306 25 3.398 11 Mar 2005 30 Oct 2005
16 Тарасов Д.Б. (Gavrila) 135 135 20 305 83 9.389 17 Nov 2005 18 Nov 2005
17 Алалыкин В.М. (BOBAH) 135 135 20 305 101 28.244 01 Sep 2005 16 Nov 2005
18 Сныткин В.Л. (Ded I) 134 136 20 304 252 7.456 12 May 2005 16 Nov 2005
19 Рахманов И.Е. (bloom) 134 136 20 304 148 14.171 11 May 2005 09 Oct 2005
20 Hakobyan H.H. (hamlet) 134 136 20 304 220 37.869 07 May 2005 15 Oct 2005

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

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Пушкин А.С. (Pushkin_AC) 61 66 116 31 147 168 18 Nov 2005
2 >Иванов А.Н. (Goapsy) 41 64 81 32 113 194 18 Nov 2005
3 >Самохвалов В. (ValdemarES) 62 62 110 0 110 420 18 Nov 2005
4 Боронникова Т.А. (Таня и Натаха) 54 54 94 3 97 559 17 Nov 2005
5 >Белаш Д.А. (Димитрий) 41 47 72 3 75 734 18 Nov 2005
6 Обатуров А.В. (Xandr) 30 59 55 16 71 320 18 Nov 2005
7 >Тихонравов С.В. (SergeyTikh) 38 38 68 0 68 915 18 Nov 2005
8 Ananina V. (Tina) 32 50 58 0 58 684 17 Nov 2005
9 >Матвеева Ю. (Julia_M) 20 60 36 20 56 287 18 Nov 2005
10 >Васильева Н. (Нина) 14 78 33 21 54 137 18 Nov 2005
11 >Дрис А.И. (Lexx) 17 53 41 10 51 539 18 Nov 2005
12 Коростылев (Медведик) 27 27 46 5 51 1255 17 Nov 2005
13 Фонарёва О.А. (Фонарёва Ольга) 28 28 49 0 49 1308 17 Nov 2005
14 >Jones (raimille) 28 28 48 0 48 1351 18 Nov 2005
15 Dvo G. (b707) 20 40 45 0 45 867 17 Nov 2005
16 >Ширшов Р.С. (MrZuke) 25 32 42 1 43 1287 18 Nov 2005
17 >Чичиль Н.А. (Lord Nick) 17 109 41 0 41 60 18 Nov 2005
18 Ивашова (Саша) 31 31 41 0 41 1485 16 Nov 2005
19 Комаров С.В. (Noob) 30 30 40 0 40 1520 13 Nov 2005
20 >Бутов Н.Н. (User_Name) 13 78 30 9 39 135 18 Nov 2005
21 >poddebniak S. (Slavius) 25 25 32 1 33 1830 18 Nov 2005
22 Pisarevskaya T. (Tata) 19 24 32 0 32 1634 18 Nov 2005
23 trola (atrola) 22 22 31 0 31 1907 17 Nov 2005

Изучаем SQL

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

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

Определяемые пользователем (User-defined) роли базы данных и назначение разрешений

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

Шесть имен разрешений на объекты и их описание показано в следующей таблице. Вы можете назначать эти разрешения конкретным объектам базы данных. Если Вы хотите раздать разрешения на все объекты, Вам придется назначать разрешение для каждого объекта базы данных. Однако Вам лучше использовать фиксированные роли базы данных в случае, если необходимо дать разрешение на все объекты базы данных. Например, если Вы хотите дать разрешение на SELECT для всех таблиц и представлений (включая те, что еще не созданы), проще включить пользователя в фиксированную роль базы данных db_datareader. Если Ваша цель - ограничить разрешение на SELECT только для одного или двух существующих представлений, тогда создайте определяемую пользователем роль базы данных, дайте разрешение на SELECT для этих представлений, и включите в эту роль тех пользователей, которым нужно дать специальные разрешения.

Название разрешения Описание разрешения
SELECT Просмотр записей в таблице или представлении.
INSERT Добавление новых записей в таблицу или представление.
UPDATE Изменение содержимого записей таблицы или представления.
DELETE Удаление записей из таблиц или представлений.
REFERENCES Позволяет создавать внешние ключи к первичному ключу или уникальному индексу таблицы или определяемой пользователем табличной функции (row-returning user-defined function).
EXECUTE Выполнение хранимой процедуры или определяемой пользователем функции.

Разрешения на конкретные объекты базы данных могут иметь три состояния (статуса): разрешено (granted), запрещено (denied), и отменено (revoked). Если Вы даете доступ к объекту, значение разрешения будет иметь статус granted. Соответственно, если Вы запрещаете доступ, разрешение будет denied. Если вы отменяете разрешение, поменяйте разрешения с granted или denied на revoked. Отмененные разрешения не разрешают и не запрещают доступ к объекту.

Поскольку допускается включать пользователя в несколько фиксированных и определяемых пользователем ролей базы данных, возможен конфликт разрешений между ролями. Вы можете использовать эти конфликты для тонкой настройки Вашей системы безопасности. Например, пользователь включен в фиксированную роль базы данных db_datareader, дающую ему право выполнять запросы SELECT из всех таблиц и представлений базы данных. Однако Вы можете запретить чтение из таблицы продаж пользователю, имеющему разрешение чтения данных из всех таблиц, чтобы скрыть от него конфиденциальную информацию в таблице продаж. Соответственно, члены фиксированной роли базы данных db_denydatareader не могут адресовать запросы SELECT к любой таблицы базы данных, даже если пользователи включены в определяемую пользователем роль базы данных, которая дает разрешение на чтение из некоторых конкретных таблиц. Разрешение denied всегда переопределяет разрешение granted.

SQL Server облегчает управление безопасностью назначением разрешений на группы пользователей через их членство в определяемых пользователем и фиксированных ролях базы данных. Помните, что каждый пользователь обычно соответствует конкретному логину. В свою очередь логины могут соответствовать конкретным пользователям Windows. Однако один логин может также входить в группу пользователей Windows. Поэтому, если у Вас уже есть группа Windows, для которой Вы хотите установить одинаковые настройки безопасности, тогда создайте логин для группы Windows. Затем создайте пользователя для этого логина. Любые разрешения, определяемые для этого пользователя, применяется ко всем членам соответствующей группы Windows.

Программирование безопасности SQL Server

SQL-DMO является контейнерным приложением (Automation application), назначение которого - администрирование SQL Server. Поскольку SQL-DMO является API для SQL Server Enterprise Manager, Вы можете программировать на SQL-DMO все, что могут предоставить Вам графические средства Enterprise Manager, включая управление всеми аспектами безопасности SQL Server. Этот аспект SQL-DMO особенно полезен для проектов, использующих MSDE и MSDE 2000, потому что в их состав не входит Enterprise Manager. Дополнительно, программистам Access 2002 необходимо изучить некоторые программные решения по управлению безопасностью, поскольку Access 2002 не имеет возможности управлять безопасностью с помощью меню (как это было в Access 2000).

В Access Вы можете программировать, используя SQL-DMO так же, как используются любые другие COM объекты. Ваш VBA проект должен при этом использовать библиотеку SQL-DMO. Microsoft SQLDMO Object Library - имя этой объектной библиотеки. Добавьте ссылку на библиотеку с помощью команды References (меню Tools). Файл DLL с библиотекой включен в MSDE и MSDE 2000. Другие версии SQL Server содержат DLL и файл справки, который Вы можете открыть прямо из окна Visual Basic Editor (VBE). Использующие Microsoft Office XP Developer Edition, могут установить версию SQL сервера, которая включает в себя файл справки по SQL-DMO.

На рисунке представлен фрагмент иерархической модели SQL-DMO с объектами для примеров кода, расположенных далее по тексту. Обратите внимание, что объект SQLServer расположен во главе иерархии. Многие приложения могут соединяться с SQL Server посредством объекта SQLServer. Наследники объекта SQLServer являются коллекциями объектов для логинов и баз данных, а также для индивидуальных объектов, таких как, IntegratedSecurity, которые предоставляют возможность управления безопасностью SQL Server. Последующий пример использует свойство SecurityMode объекта IntegratedSecurity для демонстрации того, как установить режим аутентификации SQL Server. Членами коллекции Databases являются индивидуальные базы данных, каждая из которых имеет собственные коллекции и объекты. Одна из этих коллекций - коллекция Users. Другая коллекция используется для фиксированных и определяемых пользователем ролей базы данных (DatabaseRoles). Членство отдельных пользователей в коллекции DatabaseRoles определяет способность пользователей читать и модифицировать объекты коллекций Tables и Views.

Рисунок. Фрагмент объектной модели SQL-DMO, относящийся к безопасности SQL Server

Перед началом рассказа об SQL-DMO важно знать, что DLL для SQL-DMO отличается для SQL Server 7 и SQL Server 2000. Две версии SQL-DMO различаются как минимум в двух аспектах. Во-первых, версия для SQL Server 2000 включает в себя новые объекты, появившиеся в SQL Server 2000, а также улучшенные традиционные. Также версия SQL-DMO для SQL Server 2000 дополнительно содержит традиционные объекты для управления SQL Server 7.0. Имена объектов для 2000 обычно оканчиваются 2 (например, SQLServer2 для новых объектов, вместо SQLServer для традиционных). Во-вторых, программами, использующими SQL-DMO для SQL Server 2000 нельзя управлять SQL Server 7.0 (даже если программы используют традиционные имена объектов SQL-DMO). Однако, используя библиотеку SQL-DMO для SQL Server 7.0 можно управлять SQL Server 2000. Это ограничение является результатом изменения файловых форматов библиотек при переходе к новой версии; синтаксис скрипта SQL-DMO не претерпел изменений.

Различие между версиями SQL-DMO требует внимательного отношения к тому, какую версию библиотеки Вы будете использовать в Вашем проекте. Если необходимо, чтобы приложение SQL-DMO работало с серверами SQL Server 7.0 и SQL Server 2000, необходимо писать программы, используя SQL-DMO для SQL Server 7.0. С другой стороны, если необходимо использовать преимущество SQL Server 2000, тогда Вам необходимо разрабатывать Ваше приложение, используя библиотеку для SQL Server 2000. Поскольку статья демонстрирует технику программирования безопасности, используя SQL-DMO, я использовал версию SQL-DMO для SQL Server 7.0. В любом случае, код выглядит одинаковым для разных версий, кроме случаев, когда Вы используете новые объекты, представленные в SQL Server 2000.

(Продолжение следует...)

Контакты

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

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

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

В избранное