SQL_SERV (663294), страница 5
Текст из файла (страница 5)
MS SQL Server обеспечивает многоуровневую проверку привилегий при загрузке на сервер. Сначала идентифицируются права пользователя на установление соединения с выбранным сервером (login name и пароль) и выполнение административных функций: создание устройств и баз данных, назначение прав другим пользователям, изменение параметров настройки сервера и т.д. Максимальными правами обладает системный администратор. На уровне базы данных каждый пользователь, загрузившийся на сервер, может иметь имя пользователя (username) базы и права на доступ к объектам внутри нее. Имеется возможность отобразить нескольких login id на одного пользователя базы данных, а также объединять пользователей в группы для удобства администрирования и назначения сходных привилегий. По отношению к объектам базы данных пользователю могут быть назначены права на выполнение различных операций над ними: чтение, добавление, удаление, изменение, декларативная ссылочная целостность (DRI), выполнение хранимых процедур, а также права на доступ к отдельным полям. Если этого недостаточно, можно прибегнуть к представлениям (views), для которых сказанное остается справедливым. Наконец, можно вообще запретить пользователю непосредственный доступ к данным, оставив за ним лишь права на выполнение хранимых процедур, в которых будет прописан весь сценарий его доступа к базе. Хранимые процедуры могут создаваться с опцией WITH ENCRYPTION, которая шифрует непосредственный текст процедуры, хранящийся обычно в syscomments. Права на выполнение некоторых команд (создание баз, таблиц, умолчаний, правил, представлений, процедур, резервное копирование баз и журналов транзакций) не являются объектно-специфичными, поэтому они назначаются системным администратором сервера или владельцем (создателем) базы данных при редактировании базы данных. Администрирование пользовательских привилегий обычно ведется в SQL Enterprise Manager, тем не менее в Transact-SQL имеются хранимые процедуры (sp_addlogin, sp_password, sp_revokelogin, sp_addalias, sp_adduser) и операторы (GRANT, REVOKE), которые позволяют осуществлять действия по созданию пользователей, назначению и отмене прав при выполнении скриптов. Дополнительную возможность администрирования привилегий предоставляют рассмотренные нами выше SQL-DMO.
Некоторые вопросы использования MS SQL Server в Internet/intranet-приложениях
Как мы уже отмечали, SQL-DMO являются одним из наиболее мощных инструментов доступа к информации, хранящейся на MS SQL Server, и решения административных задач из клиентских приложений. Традиционные вопросы клиентского доступа к MS SQL Server достаточно подробно освещались в литературе как по отношению к средствам разработки Microsoft Visual Tools (по крайней мере применительно к Visual C++, Visual Basic, Visual FoxPro), так и к программным продуктам фирм Borland, Powersoft и т. д. Программные модели, основанные на Microsoft Jet Database Engine (Data Access Objects), Remote Data Objects, DB-Library, ODBC API хорошо известны и широко используются. Поэтому мы акцентируем наше внимание на способах работы c MS SQL Server 6.5 через Internet.
Времена статических страниц объявлений и рекламы миновали - бурное развитие бизнеса в Internet предполагает непосредственное участие клиента в совершении сделок. Говоря об использовании MS SQL Server при построении активных Internet/intranet-приложений, мы снова должны обратиться к преимуществам его тесной интеграции со всеми продуктами семейства Microsoft BackOffice. На этот раз речь пойдет об Internet Information Server (IIS).
Помимо исполнения CGI-скриптов MS IIS предоставляет разработчикам возможность создания с помощью соответствующего прикладного программного интерфейса (ISAPI) приложений в виде динамических библиотек, запуск которых происходит в ответ на команду или выбор линка на Web-странице. В отличие от CGI, где каждый скрипт исполняется как иной, нежели Web-сервер, процесс, что быстро "съедает" ресурсы даже достаточно мощной машины при большом количестве заходов на сервер, ISAPI-приложение выполняется в адресном пространстве Web-сервера, что, естественно, повышает скорость работы и существенно экономит машинные ресурсы. В зависимости от сложности сайта и приложений, dll могут быть предзагружены одновременно с запуском сервера, либо подгружаться/выгружаться из памяти по мере необходимости. К наиболее известным средствам разработки приложений на основе ISAPI относятся входящий в состав MS IIS Internet Database Connector (IDC), а также свободно распространяемый dbWeb.
Microsoft dbWeb представляет собой шлюз между 32-битными ODBC-ресурсами и MS IIS. dbWeb предусматривает создавание схемы, содержащей описание данных и связанных с ними Web-страниц. Он поддерживает исполнение запросов в реальном режиме времени на основе "pull"-модели публикации, позволяя тем самым создавать активные Web-страницы. Microsoft dbWeb структурно состоит из двух основных компонентов: dbWeb Service и dbWeb Administrator. dbWeb Service является типичным ISAPI-приложением, которое обрабатывает пользовательские запросы, направляемые посетителем страницы через броузер, и управляет соединениями между броузером, ODBC-ресурсом и IIS. К функциям dbWeb Administrator относится создание HTML-страниц, содержащих результаты выполнения запросов на основе уже упоминавшихся схем, с помощью которых осуществляется управление публикуемыми данными. Схемы определяют сам запрос и структуру страниц. При этом не требуется знания HTML или ISAPI, так как в состав dbWeb Administrator входит интерактивный мастер-построитель схем (Schema Wizard), который в традиционной для любой программы-мастера манере позволяет задать поля поиска по методу Query-by-Example (QBE), выбрать поля для отображения в таблице страницы результатов и определить переходы из списка записей в отдельные страницы, содержащие развернутую информацию по текущей записи. Настройкой соответствующих свойств можно разрешать или запрещать операции вставки, удаления и редактирования. Для проверки прав пользователя используется система безопасности той СУБД, к которой происходит доступ.
IDC входит в состав MS IIS. С помощью вызовов функций ODBC API он обеспечивает прямую связь между полями HTML-формы и соответствующим ODBC-достижимым источником данных. Для доступа к данным и публикации на Web IDC использует файлы двух типов - .idc и .htx. Файл с расширением idc (см. пример) содержит всю необходимую информацию о соединении с источником данных, текст запроса, а также ссылку на соответствующий htx-файл. Файл с расширением htx (см. пример) служит шаблоном страницы, на которой будут опубликованы данные из базы, а также элементы оформления в виде статического текста, графики, видео и т. п. MS IIS распознает расширение .idc как вызов httpodbc.dll, которая считывает http-заголовки из управляющего блока ISAPI для определения параметров запроса. Httpodbc.dll читает и разбирает idc-файл, указанный в URL. Имя источника, имя пользователя, пароль и пр. используются для подключения к соответствующему ресурсу ODBC, после чего httpodbc передает на выполнение SQL-запрос и получает результаты. Результаты используются для наполнения заготовки в виде htx-файла, затем полученный HTML-документ MS IIS передает броузеру.
SQL Web Assistant, входящий в состав MS SQL Server 6.5, в отличие от двух только что рассмотренных инструментов, не является ISAPI-приложением и работает только с MS SQL Server. Web Assistant имеет интерфейс мастера (wizard), т. е. состоит из ряда последовательных форм с вопросами, отвечая на которые, администратор может сэкономить время по выполнению рутинного HTML-кодирования и получить готовую (в HTML-кодах) страницу, содержащую результаты опубликования произвольного запроса к базе. Полученная страница не является активной в строгом смысле этого слова, так как публикуется при помощи push-метода, т. е. обновление происходит по инициативе сервера и не допускает обновления со стороны клиента. Однако сервер может производить обновление (перегенерацию) страницы на триггерной основе или на основе расписаний задач под управлением SQL Executive. Мастер работает только с базами данных MS SQL Server и использует три хранимые процедуры sp_makewebtask, sp_runwebtask и sp_dropwebtask. При необходимости они могут использоваться самостоятельно в кодах Transact-SQL. Предположим, мы имеем каталог товаров или справочник курсов валют и хотим, чтобы все изменения в нем автоматически отражались на Web. Для этого мы определяем задачу публикации:
sp_makewebtask @outputfile = 'c:\rates.htm', @query = 'select kod, kurs from rates',
@procname=web_rates, @resultstitle = 'Курсы валют',
@URL = "http://www.microsoft.com", @reftext = 'Microsoft Home Page', @whentype=9,
а на соответствующую таблицу "вешаем" триггер
if exists (select * from sysobjects where id = object_id('dbo.tr') and sysstat & 0xf = 8)
drop trigger dbo.tr
go
create trigger tr on dbo.rates for insert,update,delete
as exec sp_runwebtask @procname=web_rates
go,
который будет вызывать перегенерацию страницы всякий раз, как только в таблицу будут вноситься какие-либо изменения.
Active Data Objects (ADO) в достаточно грубом приближении служат VB-интерфейсом к OLE DB. Их роль видится особенно важной в развитии компонентного подхода и технологий универсального доступа к данным. В данном случае мы рассмотрим их использование в Microsoft Active Server Pages (ASP). Активные серверные страницы представляют собой инструмент для эффективной разработки серверных Web-приложений, интегрирующих в своем составе HTML-код, VBScript и компоненты ActiveX. С их помощью в уже существующие наработки легко могут быть встроены фрагменты кода на VBScript или JavaScript, а также вызовы соответствующих объектов ActiveX. Помимо базовых объектов (Application, Request, Response, Server, Session) ASP поддерживают многочисленные компоненты ActiveX, которые упрощают создание и значительно повышают функциональность активных Web-страниц. Среди них нас в первую очередь будут интересовать компоненты, позволяющие организовать доступ к базам данных, т. е. ADO. Например, публикация результата запроса может быть выполнена, как:
<% set c=Server.CreateObject ("ADODB.Connection")
c.Open "rates","sa",""
set RS=c.Execute("select * from rates")%>
content="text/html; charset=windows-1251">
Курсы валют
Курсы валют
<% RS.MoveNext
loop %>
Интерфейс ADO из данного примера практически без изменений может быть использован при работе с MS SQL Server из VB, Visual FoxPro и т. д. Таким образом, с помощью ADO могут быть построены пользовательские компоненты для обращения к серверу баз данных как со стороны "толстого" (Win32), так и со стороны тонкого (броузер) клиента.
Заключение
MS SQL Server 6.5 представляет собой мощный полнофункциональный сервер баз данных, отличающийся высокой производительностью, быстротой освоения и удобным интерфейсом администрирования. Под его управлением могут работать базы данных в широком диапазоне от уровня среднего звена предприятия до распределенных баз масштаба корпорации. Доступ к MS SQL Server возможен из большого числа средств разработки клиентских front-end, настольных баз данных и офисных продуктов. MS SQL Server изначально ориентирован на интеграцию с другими серверами MS BackOffice, что позволяет непосредственно охватить решение комплексных задач автоматизации хранения и обработки информации, электронной почты и документооборота, построения Internet/intranet приложений и т. д. MS SQL Server работает в как в традиционных клиент-серверных платформах, так и в многоуровневых средах. Одним из основных инструментов при создании распределенных многокомпонентных приложений является Microsoft Transaction Server.
Список литературы:
1. Системы Управления Базами Данных #1/97 стр. 30-50. А.В. Шуленин.
2. Microsoft SQL Server 6.5. Комплект документации.
3. MS SQL Server 6.5 Unleashed, by David Solomon, Ray Rankins, et al, ISBN 0-672-30956-4.
4. Microsoft SQL Server 6.5 DBA Survival Guide, by Mark Spenik & Orryn Sledge, ISBN 0-672-30797-9.
5. Hitchhiker's Guide to Visual Basic & SQL Server, by William.R.Vaughn, ISBN 1-55615-906-4.
6. Clustering Support for Microsoft SQL Server. White Paper.
7. Кастер Х. "Основы Windows NT и NTFS", Microsoft Press. "Русская Редакция", 1996.
8. Transaction Processing,by Jim Gray & Andreas Reuter,ISBN 1-55860-190-2
9. Круглински Д. "Основы Visual C++", части IV-V, Microsoft Press. "Русская Редакция", 1997.
10. Inside COM, by Dale Rogerson, Microsoft Press, ISBN 1-57231-349-8.
11. Шуленин А. "Microsoft SQL Server и активный Internet". Материалы Форума "Информационные Технологии'97".
1 В разных источниках он может также называться глобальным (global) или корневым (root).
2 Иногда выделяют еще блокировку intent. Однако intent не является блокировкой в строгом смысле слова, это метка в цепочке табличных блокировок, предупреждающая другие транзакции о том, что текущий процесс намерен произвести эскалацию масштаба блокирования до уровня таблицы.
3 Напомним, что под грязным чтением (dirty read) понимается ситуация, когда транзакция Т1 модифицирует запись, транзакция Т2 ее читает, Т1 тем временем откатывает изменения и Т2 работает с записью, которая реально никогда не существовала. Неповторяющееся чтение (unrepeatable read) возникает в случае, если Т1 читает запись, Т2 ее изменяет и Т1 снова прочитывает ту же запись. Т1, дважды прочитав одну и ту же запись, фактически видела два разных значения. Фантомы: Т1 читает записи, удовлетворяющие определенному условию, после этого Т2 добавляет или удаляет записи. Если Т1 опять произведет выборку по тому же условию, она может получить множество записей, не совпадающее с предыдущим.
25