Смекни!
smekni.com

ПРИЛОЖЕНИЕ1


MicroSOFT ВЫПУСКАЕТSQL SERVER 6.5


Рекордныепоказателипо соотношению"цена—производительность"на платформеWindows NT Server; новые возможностипо поддержкеInternet и интрасетей(intranet)

В апреле навыставке DB Expo вСан-Францискокомпания MicrosoftCorp. объявила овыходе Microsoft SQL Server 6.5.Эта СУБД, ориентированнаяна платформуWindows NT Server, представляетсобой значительныйшаг вперед посравнению сMicrosoft SQL Server 6.0.

Microsoft SQL Server 6.5, клиент-сервернаясистема управлениябазами данных,предоставляетбогатый спектрновых возможностей,которые облегчаютпроцесс создания,внедрения иуправленияраспределеннымиклиент-сервернымиприкладнымипрограммами.Основные новыевозможности:встроеннаяподдержкаприложенийInternet, усовершенствованныемеханизмыраспределенныхтранзакций,тиражированиев разнородныхсредах, расширенныераспределенныесредства управленияи новая архитектурадинамическойблокировки(Dynamic Locking).

"Microsoft SQL Server 6.5 представляетсобой значительныйпрорыв в областиклиент-серверныхбаз данных",-сказал ДжимОллчин (Jim Allchin),вице-президентMicrosoft по настольнымсистемам исистемам длябизнеса. "Начинаяс версии 6.0, атеперь и в видеверсии 6.5, системаMicrosoft SQL Server всегдаявлялась однимиз базовыхкомпонентовсемействасерверныхприкладныхпрограмм MicrosoftBackOffice. Microsoft SQL Server обеспечиваетпроизводительность,безопасностьи взаимодействиес другими системами,которые такнеобходимыдля организацииработы предприятия.В то же времяэта системавесьма экономичнаи проста вуправлении,что делает ееидеальнымрешением длякомпаний любогоразмера".

Microsoft SQL Server 6.5 являетсялучшей СУБДдля Windows NT Server и тесноинтегрируетсяс Microsoft BackOffice. В Microsoft SQL Server 6.5полностьюиспользуютсятакие возможностиWindows NT, как механизмыобеспечениязащиты, регистрациясобытий, контрольза производительностью,использованиепотоков и асинхронныйввод-вывод.

СистемаMicrosoft SQL Server 6.5 продемонстрировалабеспрецедентнуюпроизводительностьна платформеWindows NT Server. По результатамстандартноготестированияTPC-С Benchmark, которыебыли объявленыв начале апреля,Microsoft SQL Server 6.5 обошелOracle 7 и Sybase System 11 по пропускнойспособности,продемонстрировавскорость 3,641транзакцийв минуту (tpmC). Такимобразом, системазаняла первоеместо средивсех баз данных,при работе наоснове Windows NT Server ина аналогичнойаппаратнойплатформе. СУБДMicrosoft SQL Server 6.5 такжеустановиларекорд по показателю"цена- производительность",который достиг$147.62 за транзакцию.Таким образом,впервые базаданных преодолелабарьер в $150 затранзакцию.


ПОВЫШЕННАЯПРОИЗВОДИТЕЛЬНОСТЬБЛАГОДАРЯДИНАМИЧЕСКОЙБЛОКИРОВКЕ

Высокуюскорость работыMicrosoft SQL Server 6.5 обеспечивают:усовершенствованныйпроцессор базданных, расширенныевозможностипараллельнойработы на основепотоков Windows NT, атакже новаявозможностьдинамическойблокировки(Dynamic Locking). Dynamic Locking - это новаятехнологияMicrosoft, благодарякоторой Microsoft SQLServer может выбиратьнаиболее оптимальныйуровень блокировкина уровне строки,таблицы илибазы данных,что позволяетмаксимизироватьскорость работы.Только Microsoft SQL Serverобладает возможностьюдинамическоговыбора тоговарианта блокировки,который большевсего подходитдля каждогоконкретногослучая.


ПРИКЛАДНЫЕПРОГРАММЫ ДЛЯINTERNET НА ОСНОВЕБАЗ ДАННЫХ

Microsoft SQL Server 6.5 облегчаетсоздание иуправлениеприкладнымипрограммамидля внутреннихкорпоративныхсетей (так называемые"интрасети")и Internet. Новая утилитаMicrosoft SQL Server Web Assistant используетинтерфейс,типичный дляпрограмм-мастеров,и шаг за шагомпомогаетадминистраторубазы данныхили Web-мастерупомещать данныеиз Microsoft SQL Server в сетиWorld Wide Web. Таким образомможно легкосоздаватьинтерактивныеWeb-узлы, основукоторых составляютбазы данных.При помощиутилиты Web Assistant,Microsoft SQL Server автоматическисоздает страницына основегипертекстовогоязыка описаниядокументов(HTML) или заполняетHTML- шаблоны даннымииз Microsoft SQL Server, причемэто можетосуществлятьсялибо каждыйраз при измененииданных, либов установленныемоменты времени.

В сочетанииMicrosoft SQL Server 6.5 и Microsoft Internet InformationServer позволяютпри помощипрограмм просмотраWeb, включая MicrosoftInternet Explorer и Netscape Navigator, создаватьзапросы поданным, хранящимсяна сервереMicrosoft SQL Server. ИспользуявстроенныевозможностиODBC, Microsoft SQL Server и Microsoft Internet InformationServer обеспечиваютбезупречнуюработу интерактивныхWeb-узлов, основанныхна базах данных.Кроме того,новые возможноститиражированияданных типа"image" или "text" позволяютиспользоватьMicrosoft SQL Server в качествемощной платформыдля управленияинформационнымнаполнениемWeb-узлов.


УПРОЩЕНИЕРАБОТЫ С РАСПРЕДЕЛЕННЫМИПРИЛОЖЕНИЯМИБЛАГОДАРЯУТИЛИТЕ DTC

Microsoft SQL Server 6.5 включаетутилиту DistributedTransaction Coordinator (DTC), котораяпозволяет болеелегко создаватьна несколькихсистемах MicrosoftSQL Server распределенныеприложенияи обеспечиваетих автоматическоеобновление.Таким образомгарантируетсясогласованностьи целостностьпрограмм,распределенныхмежду несколькимисерверами. DTCтакже поддерживаетXA- совместимыемониторы обработкитранзакций,такие как Encinaкомпании Transarc,Top End компании NCRи TUXEDO компанииNovell, что делаетвозможнымвключениеMicrosoft SQL Server 6.5 в распределенные,разнородныетранзакции.


ТИРАЖИРОВАНИЕВ РАЗНОРОДНЫХСРЕДАХ

В Microsoft SQL Server 6.5 за основувзяты возможноститиражирования,представленныев версии 6.0. Информациюиз Microsoft SQL Server можнотеперь тиражироватьв базы данныхOracle, IBM DB2, Sybase и Microsoft Access, а такжев другие ODBC-совместимыебазы данных.Таким образом,Microsoft SQL Server может легкофункционироватьв смешанныхсредах.


ДРУГИЕ НОВЫЕВОЗМОЖНОСТИ

Дополнительныеновые возможностивключаютусовершенствованныесредстваадминистрирования,повышеннуюнадежностьи механизмывосстановления,а также расширеннуюподдержкухранилищ данных.

Microsoft SQL Server 6.5 включаетусовершенствованныйинтерфейсадминистратораSQL Enterprise Manager, которыйиспользуетсядля управленияраспределеннымисистемамиMicrosoft SQL Server. Новая возможностьDBA Assistant автоматизируетрутинные задачипо обслуживаниюсистемы, расширеннаяпанель задачи меню позволяютлегко интегрироватьсредства управлениядругих компаний,а интегрированныемеханизмыпередачи данныхупрощают перемещениеинформации.

Новые возможностипо обеспечениюпомехоустойчивостии восстановлениявключают резервноекопированиеи восстановлениеотдельныхтаблиц, а такжевосстановлениеБД после сбояс указаниеммомента времени,по котороевыполняетсявосстановление.Помимо этого,Microsoft SQL Server 6.5 являетсяпервой базойданных, в которойреализованаподдержкасистемы Compaq OnlineRecovery Server, котораяобеспечиваетавтоматическоепереключениена резервныйкомпьютер вслучае сбоя.

К новым возможностяморганизациихранилищ данныхотносятсяоператорызапросов OLAP,утилиты CUBE иROLLUP, которые облегчаютпоиск и выборкумногомерныхпоказателей.Новая функциональностьпод названием"канал данных"("data pipe") позволяетMicrosoft SQL Server 6.5 программнособирать данныеиз разнородныхисточников,включая Microsoft SQLServer и другие базыданных, и объединятьих в единоехранилище наоснове Microsoft SQL Server.

Microsoft SQL Server 6.5 можнобесплатнозагрузить сFTP- узла Microsoft в России.После загрузкипрограмму можнобудет использоватьв течение 120 дней.Необходимонабратьhttp://www.microsoft.com/backoffice/sql/sqlinfo1.htm илиhttp://microsoft.com, а затемвыбрать соответствующийпродукт - SQL. Послечего пользователяпопросятзарегистрироватьсяи выбрать ближайшийсервер в ВосточнойЕвропе длязагрузки программы.(В России этосервер по адресуftp://ftp.quarta.msk.ru. Он обслуживаетсяфирмой Quarta, котораяимеет статусMicrosoft Solution Provider).


Источник:пресс-релизкомпании Microsoft


ПРИЛОЖЕНИЕ2


ТЕХНОЛОГИЯХРАНЕНИЯ ДОКУМЕНТОВВ MS SQL SERVER

SQL Server позволяетрешить большинствопроблем присозданиираспределенныхсистем обработкидокументовв архитектуреклиент/сервер.Однако реализуемыеструктуры базданных несколькоотличаютсяот классических.


КОНЦЕПЦИЯДОКУМЕНТА ВРЕЛЯЦИОННЫХБД

Любой документв системепредставляетиз себя наборзаписей в однойили несколькихтаблицах. Документыне пересекаютсяи однозначноидентифицируютсяпо коду (номеру)документа. Этоозначает, чтово всех таблицахБД одним изполей первичногоключа являетсякод документа.

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

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

Документотличаетсяот простогонабора записейв таблицах тем,что можетбыть обновлентолько в ходеодной протяженнойтранзакции.Это объясняетсятем, что документимеет своисобственныеправила целостности.Например важнане толькокорректностьссылок таблиц"Покупатели","Заказ" и "Спецификациязаказа", но ито, чтобы количествотоваров вспецификациизаказа былоименно то, котороебыло указанопокупателем.

Поддержаниецелостностидокументапозволяетпроизвестиденормализациюструктуры БДс целью повышенияее производительности.


КЛАССИФИКАЦИЯИ АТРИБУТИКАДОКУМЕНТОВ

Документыразделяютсяна типы. Типопределяет,в каких таблицаххранится телодокумента.Набор типовопределяетсяна стадиипроектированияБД.

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

Как показываетпрактика, наиболееэффективныйспособ поискав большихмассивах информации,структуракоторой известнапользователю- способ поискас уточнениемкритериев, т.е.поиск по иерархическомусправочнику.

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



ПРИЛОЖЕНИЕ3


СОПРОВОЖДЕНИЕ,ОПТИМИЗАЦИЯИ НАСТРОЙКАMicroSOFT SQL SERVER


На основеэтой информациивы сможете самисправлятьсяс большинствомзадач и решатьбольшинствовозможныхпроблем.

1. ЗаранеепланируйтеинсталляциюSQL Server;

2. Уделяйтебольшое вниманиепроектированиюбаз данных,запросов ииндексов;

3. Старайтесьполучить какможно большеинформациио загрузкересурсов сервера;

  1. Планируйтеи автоматизируйтерегламентныеработы;

  2. Управляйтериском - готовьтеськ возможнымсбойным ситуациям.


ИНСТАЛЛЯЦИЯMicroSOFT SQL SERVER

ИнсталляцияMicrosoft SQL Server в общемслучае оченьпроста. Но кней надо подойтиответственно,так как во времяинсталляцииустанавливаютсянесколькопараметров,изменить которыев дальнейшем,при уже работающемсервере и внесеннойв базы данныхинформации,бывает непросто.Так что есливы хотите выполнитьинсталляциютолько одинраз, не спешите.

SQL Server инсталлируетсяпри помощипрограммыsetup, которая такжеиспользуетсядля заменыпредыдущейверсии SQL Server (например,4.21) на новую, атакже для последующейдо-установкинекоторыхкомпонентсервера и изменениянекоторыхпараметров.


Требованияк аппаратуре

Вам необходимдля работы сMicrosoft SQL Server компьютерархитектурыIntel с процессором486 или Pentium (SQL Server такжепоставляетсяв версиях дляRISC-процессоровAlpha и MIPS). Минимальнонеобходимыйобъем памяти- 16 Мб, рекомендуетсяначинать с 32Мб. Если высоберетесьиспользоватьваш SQL Server в качествесервера-распространителяпри тиражированииданных, вампонадобитсяминимум 16 Мбдля собственноSQL Server, а ведь ещенужна памятьсобственнодля Windows NT Server.

Также, естественно,необходимжесткий дискс 75 Мб свободногоместа. Это вслучае, есливы установитеэлектроннуюдокументациюпо SQL Server на жесткийдиск. Вы можетене устанавливатьее на жесткийдиск и читатьее с CD-ROM, что сэкономитвам 15 Мб дисковойпамяти. Я рекомендуюиспользоватьэлектроннуюдокументацию,т.к. очень удобноосуществлятьв ней быстрыйпоиск интересующейвас информации.

Ну и, конечно,необходимаоперационнаясистема Windows NT Serverверсии 3.5 иливыше (рекомендуется3.51).

Перечисленныетребованияявляютсяминимальными.О том, какаяаппаратуранужна, чтобыдобиться оптимальнойпроизводительности,мы поговоримв части, посвященнойоптимизациии настройкеSQL Server.


Кодовая страница

Выбраннаякодовая страницаопределяет,какие символыбудут рассматриватьсясервером какпригодные дляпечати и наименования,например, днейнедели и месяцев.Также кодоваястраница, совместнос выбраннымпорядком сортировки,определяет,как будутсортироватьсяи сравниватьсямежду собойсимвольныестроки. Оченьрекомендуетсяустанавливатьна всех клиентахи сервере однуи ту же кодовуюстраницу. SQL Server6.0 позволяетустановитьстраницу №1251, используемуюдля работы срусским языкомв Windows, так что тутникаких проблемнет. Если вы непредполагаетеработать срусским языком,то можно установитьстраницу № 850(многоязычная)или № 437 (U.S. English).


Порядок сортировки

Порядоксортировкиопределяет:

  1. Как будутсортироватьсязаписи прииспользованиив запросе ORDER BY

2. Как будутсравниватьсямежду собойсимвольныестроки 3.Скоростьвыполненияопераций сортировки.

Существуетдва основныхтипа порядковсортировки:двоичный и пословарю.

При двоичномсимволы сравниваютсяи сортируютсяв соответствиис их двоичнымикодами. Этосамый быстрыйпорядок сортировки,но он имеетодин недостаток.

Большие буквыбудут в отсортированномпорядке идтираньше маленьких,то есть большаябуква "Я" - раньшемаленькой "а".Это может породитьнекоторыепроблемы ввашем конкретномприложении,хотя в некоторыхслучаях двоичныйпорядок оказываетсявполне приемлемым.Но если вы хотите,чтобы символысортировалисьв более удобномдля вас порядке,вам надо использоватьодин из порядковсортировкипо словарю.

Их существуетнесколько,имеет смыслрассмотретьт.н. регистро-независимыйпорядок(Case-Insesitivity), при которомбуквы сортируютсянезависимоот того, большиеони или маленькие.Именно онпредлагаетсяпри инсталляциипо умолчанию.При использованииэтого порядкаоперации сортировкиработают примернона 20% медленнее,чем при двоичном.


Сетевые установки

Microsoft SQL Server 6.0 можетвзаимодействоватьс клиентамипо многим протоколамсеансовогоуровня. Это:

• Named Pipes

• NWLink IPX/SPX

• TCP/IP Sockets

• Banyan VINES

• AppleTalk ADSP

• DECnet

Надо отметить,что работа поодному протоколуне исключаетработы по другомуи сервер можетвзаимодействоватьс клиентамипо несколькимпротоколамодновременно.Для этого загружаютсяодна или несколькосетевых библиотек(Net-Libraries).

Кроме того,протокол Named Pipesработает надтремя протоколамитранспортногоуровня - NetBEUI, IPX/SPX иTCP/IP. Так что онустраивал вбольшинствеслучаев использованияSQL Server 4.2 и устанавливаетсяпо умолчаниюименно он.

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

В версии SQLServer 6.0 появиласьновая сетеваябиблиотека"Multi-Protocol", работающаясразу с тремяпротоколамисеансовогоуровня - Named Pipes,

NWLink IPX/SPX, TCP/IP Sockets. Этасетевая библиотекапозволяеткодироватьинформацию,передаваемуюмежду клиентоми сервером.


Режим секретности

Существуеттри режимасекретностиSQL Server:

  1. Интегрированныйс Windows NT;

  2. Стандартный;

3. Смешанный.

Интегрированныйрежим позволяетпользователю,зарегестрировавшемусяв домене Windows NT,подключатьсяк серверу, неуказывая имении пароля - дляопределенияего прав на SQLServer будет использованоего регистрационноеимя в Windows NT. То естьсуществуетединая регистрация- в домен и наSQL Server. Этот режимвозможен приподсоединениипользователяпо т.н. "доверительнымсоединениям",которые осуществляютсяпри использованиисетевых библиотек"Named Pipes" и "Multi-Protocol". Подругим соединениямклиенты работатьв этом режимене могут.

Стандартныйрежим требуетот пользователяуказывать имяи пароль приподключениик SQL Server, независимоот того, подкаким именемон зарегистрировалсяв Windows NT.

Основноепреимуществоинтегрированногорежима состоитв следующем.СекретностьWindows NT имеет такиемощные средства,как устареваниепароля и ограничениена минимальнуюдлину пароля.Этих средствнет в SQL Server, но онимогут бытьиспользованыдля контролядоступа к SQL Serverпри использованииинтегрированногорежима секретности.

Смешанныйрежим допускаетк SQL Server пользователей,подсоединяющихсяпо доверительнымсоединениями не указавшихимени и пароля.Если пользовательуказал имя,отличное отсвоего именив Windows NT, то он долженуказать соответствующийэтому именипароль. То жеотносится кклиентам,подсоединяющимсяпо обычным, недоверительнымсоединениям.


Имена пользователядля SQLExecutive и SQL Server

Сервис, называемыйSQLExecutive, выполняеточень большуюработу, связаннуюс выполнениемплановых заданий,реакцией напроисходящиесобытия итиражированиемданных. Каждыйсервис в Windows NTфункционируетв т.н. контекстесекретности,определяемомименем, подкоторым онрегистрируетсяв Windows NT. По умолчаниюSQLExecutive регистрируетсяпод именемLocalSystem, т.е. как локальныйсистемныйсервис. Но дляряда процессов,связанных ссоединениемвашего SQL Server с другимисерверами, впервую очередьдля тиражирования,необходиморегистрироватьSQLExecutive под именем,обеспечивающимему доступ кдругим серверам.Это имя должно:

• относитьсяк группе администраторов;

• иметь неустаревающийпароль;

• иметь праворегистрироватьсякак сервис.

Вполне возможно(и даже болееудобно) присвоениесервису SQLExecutive одногои того же именина разных серверах.

Хотя ипрограммаsetup и не требуетзадания имени,под которымбуде регистрироватьсясам SQL Server, лучшепосле установкисменить этоимя с LocalSystem на "нормальное"имя. Это пригодитсяпри созданиирезервных копийна жесткихдисках другихкомпьютеров,а также приработе с MicrosoftExchange.


Удаленнаяи автоматическаяинсталляция

Есть дваспособа облегчитьсебе работупо установкеSQL Server.

Первый— это удаленнаяинсталляция,используякоторую выможете не переходитьот компьютерак компьютеру,и при этом установитьSQL Server на несколькосерверов.

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


ПРОБЛЕМЫ ПРИУСТАНОВКЕ?

Если вы проверилисоответствиевашего компьютератребованиям,о которых мыговорили выше,то проблем,скорее всего,не будет. Нолучше бытьготовыми ковсему и знать,что делать,если они появятся.

Где можнонайти информациюо том, что случилосьво время инсталляции:

1. Журналрегистрациисобытий Windows NT.

  1. Журнал ошибокSQL Server (находитсяв каталоге'\SQL60\LOG\').

3.Выходныефайлы инсталляционныхскриптов. Вдиректории'\SQL60\INSTALL\' вы найдетеоколо 20 файловс расширением'.SQL' (скрипты) исоответствующихим файлов стеми же именамии расширением'.OUT' (выходныефайлы). В процессеинсталляцииSQL Server выполняетскрипты (ониже сценарии)и результатывыполнениязаписываютсяв выходныефайлы. Просматриваявыходные файлы,вы можете обнаружитьсообщения обошибках.


ОПТИМИЗАЦИЯИ НАСТРОЙКАMICROSOFT SQL SERVER

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


Ключи к производительности

• Структурабазы данных;

• Пути доступак данным;

• Аппаратура;

• Физическоераспределениеданных;

• Настройкапараметровсреды и SQL Server


Проектированиебазы данных- фундаментпроизводительности

Грамотноепроектированиебаз данных, помнению многихспециалистови моему собственному,является наиболеекритическиммоментом воптимизациипроизводительностисистемы, построеннойна SQL Server. Если системамедленно работает- скорее всего,дело в плохомпроектированииструктурытаблиц, запросови индексов. Иименно этомуследует уделятьглавное внимание.Следует приниматьпроектныерешения, постояннозадаваясьвопросом - какэто решениескажется напроизводительности?И в первую очередь,здесь важнооптимальноелогическоепроектированиебаз данных.


Логическоепроектированиебазы данных

Оптимальноелогическоепроектированиебаз данныхбазируетсяна применениитрех основныхметодологий:

  1. Моделированиеданных;

  2. Нормализация;

3. Разумнаяденормализация


Моделированиеданных

Для моделированияданных традиционноприменяетсяметодологиядиаграмм"Сущность-Связь",которая позволяетпостроитьзаконченнуюлогическуюмодель данных,то есть представлениев виде связанныхтаблиц. Существуютразличныемодификацииэтой методологии,как правилореализуемыефирмами-производителямиCASE-инструментовв своих продуктах.Базовая методологияпостроениядиаграмм"Сущность-Связь"зафиксированав стандартеIDEF1X. НекоторыеCASE-инструментыоснованы наметодологиях,расширяющихвозможностиэтого стандарта.К таким инструментамотносится, вчастности,S-Designor фирмы Powersoft.

Есть и другиеметодологии,в частностиОбъектно-Ролевоемоделирование,которое позволяетописыватьпредметнуюобласть наболее абстрактномуровне, чеммоделирование"Сущность-Связь",по крайней меребазовый вариантпоследней.Объектно-Ролевоемоделированиереализованов CASE-инструментеInfoModeler фирмы Asymetrix. ПрименениеS-Designor и InfoModeler рассмотренов докладе"Проектированияструктур базданных с использованиемCASE-инструментовS-Designor и InfoModeler".


Нормализация

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

1. Первая нормальнаяформа - отсутствиемногозначныхполей.

  1. Вторая нормальнаяформа - каждоенеключевоеполе в таблицедолжно зависетьот всего первичногоключа, а не откакой-либо егочасти.

3. Третья нормальнаяформа - неключевоеполе не должнозависеть отдругого неключевогополя.

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

CASE-инструменты,как правило,строят логическуюмодель в третьейнормальнойформе.


Денормализация

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

• Если спроектированнаябаза данныхтребует связыванияв одном запросе4-х и более таблиц,стоит ввестиизбыточность,добавляя поляв таблицы илицелые таблицы.

• Заменитедлинные ключина искусственновведенныекороткие ключии текстовыеполя на символьныестроки ограниченнойдлины.

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

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


Противоречиялогическогопроектирования

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

Приложенияпо обработкеданных можноусловно разделитьна два класса:

• Системыоперативнойобработкитранзакций,характеризующиесябольшой интенсивностьювставки и обновлениязаписей.

• Системыподдержкипринятия решений,характеризующиесясложной обработкойбольших объемовданных. Этиприложения,как правило,не обновляютданные, но производятразличныесуммирования,сортировкии связываютданные измногочисленныхтаблиц.

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


Проектированиепутей доступа

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

• структуратаблицы, к которойобращаетсязапрос;

• поля, покоторым происходитпоиск;

• индексы,которые можноиспользоватьдля ускоренияпоиска;

• состав полей,которые обновляютсяв процессевыполнениязапроса.

Цель проектированияоптимальныхпутей доступа- минимизацияколичестваоперацийчтения/записипри выполненииклиентскихзапросов. Основадля этого должнабыть заложенана этапе проектированияструктуры базыданных.


Оптимизацияпутей доступа

Главный вопросв оптимизациипутей доступа- использованиеиндексов. Еслинекий запросвыбирает строкив таблице пополю "field1", то приотсутствиииндекса поэтому полюсервер будетсканироватьвсю таблицу,что может бытьочень "дорого"в терминахопераций чтения.Если по полю"field1" построениндекс, то количествоопераций чтенияможет сократитьсяв несколькотысяч раз. Индексысущественнытакже при операцияхсоединениятаблиц (JOIN) и операцияхсортировки.

Какие ещемоменты необходимоучитывать припроектированиипутей доступа?Это

• обращениеклиента к серверучерез SQL-запросили через вызовхранимой процедуры.Второй вариантработает немногобыстрее, нонеобходимоучитывать одинважный нюанс.План выполненияхранимой процедурысоставляетсяпри ее первом(после создания)вызове и затемхранится вкэше. Этот планоптимизируетсядля наборапараметрови индекснойстатистики,имевших местоименно припервом вызове.При дальнейшихвызовах этотплан можетоказатьсянеоптимальным,то есть можетпотребоватьсяперекомпиляцияпроцедуры,например, путемвызова с опцией"WITH RECOMPILE".

• проведениеопераций обновления"на месте" илипутем удаленияс последующейвставкой - обновление"на месте"проходит гораздобыстрее.

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

Очевидно,что в процессепроектированияпутей доступаможет возникнутьнеобходимостьпересмотретьрешения, принятыепри проектированииструктурыданных.

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


Аппаратураи производительность

Не случайноаппаратурастоит у нас на3-м месте средиключей кпроизводительности.Этим я хотелподчеркнутьважность хорошейструктуры ипутей доступа.На самом деле,конечно, аппаратураважна не меньше.Прошу проститьнесколькобанальнуюаналогию, нограмотныйпроект базыданных, оптимальныепути доступаи быстрый сервертак важны дляпроизводительностисистемы, какопытные водительи штурман имощный автомобильдля победы наавторалли.


Процессор

Процессор,как правило,достаточноинтенсивноиспользуетсяSQL Server'ом.

Чтобы хотябы качественнооценить нагрузкуна процессор,необходимоответить наследующиевопросы:

• Будет ликомпьютервыделен дляSQL Server?

• Сколькоклиентов будутработать ссервером?

• Каковоожидаемое числотранзакцийв единицу времени?

• Велика лидоля агрегативныхопераций?

Количественнооценить загрузкупроцессораможно, проводятестовые испытанияи отслеживаяпараметрыпроизводительностипри помощиWindows NT Performance Monitor.

Лучше, конечно,не скупитьсяна процессореи ограничитьсвой выборснизу хотя бы486/50.


Память

Память используетсяSQL Server'ом оченьинтенсивнои многообразно.Память расходуетсяна кэшированиеданных и процедур,на поддержкуподсоединенийклиентов, открытыхбаз данных,открытых таблиц,блокировоктаблиц и т.д.Из всех этихпунктов подробноостановитьсяимеет смыслна кэшировании.Все остальныерасходы памятипри 50 одновременноработающихклиентах идостаточнобольшом количествеоткрытых объектовне превышают3.5 Мб. Вся остальнаяпамять, доступнаяSQL Server, используетсяпод кэш. Настраиваемыйпараметр "procedurecache" регулируетсоотношениемежду кэшемданных и кэшемпроцедур. Поумолчаниюданные занимают80% кэша. Приведеннаяниже таблицасодержит рекомендациипо распределениюпамяти междуSQL Server и остальнойсистемой навыделенномкомпьютере.SQL Server используетпамять в количестве,отведенномему настраиваемымпараметром"memory".


Machine Memory, (MB) SQL Server Memory, (MB)

16

24

32

48

64

128

256

512

4

6

16

28

40

100

216

464


Не следуетвыделять SQL Serverслишком многопамяти (относительнообщего объемапамяти компьютера),т.к. это можетпривести кинтенсивномувытеснениюстраниц оперативнойпамяти на диск("paging"), что резкопонижаетпроизводительность.


Диски

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


БыстрыйинтеллектуальныйSCSI-2 контроллер

Кэш-памятьна контроллере

Bus Master card - процессорна плате снижаетнагрузку наCPU

Поддержкаасинхронногочтения и записи

32-битные EISA илиMCA

Аппаратнаяподдержка RAID

Быстрые SCSI-2диски

Кэшированиес опережающимчтением


Минимальныйрекомендуемыйвариант дисковойподсистемы- SCSI-контроллери два SCSI-диска- один для базданных и другойдля журналатранзакций.

Абсолютноверных рекомендацийбыть не можети в каждом конкретномслучае необходимоучитывать всетребованияи подбиратьоптимальнуюдисковуюконфигурацию.


Сеть

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

• 32-битныеEISA или MCA •Bus Master card - процессорна плате снижаетнагрузку наCPU;

• Кэш-памятьна адаптере


Физическоераспределениеданных

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

При планированиифизическогораспределенияданных следуетучитыватьследующиерекомендации:

• Распределениебаз данных ижурналов транзакцийна разные физическиеустройстваповышаетпроизводительность.

• Размещениебольшой таблицыи ее некластеризованногоиндекса наразных устройствахможет повыситьпроизводительность.

• Распределениебольшой, активноиспользуемойтаблицы понесколькимустройствамможет повыситьпроизводительность.

• Использованиечередованияданных в видеRAID 0 или RAID 5 повышаетпроизводительность.

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


Параметрысреды и SQL Server

Настройкапараметровсреды и самогоSQL Server - еще один ключк производительности.Однако, ондействительноможет помочьлишь в том случае,если правильноподобраныключи, описанныевыше - структурабазы данных,пути доступа,аппаратураи физическоераспределениеданных. Можноожидать, чтооптимальныйподбор параметровсреды и SQL Server дастприрост производительностина 5-10%.


Операционнаясистема ипроизводительность

Вот несколькосоветов понастройкеWindows NT Server для повышенияпроизводительностиSQL Server:

• Установкарежима "Foreground andBackground Applications Equally Response" (Control Panel -System - Tasking).

• Установкарежима "Maximize Throughputfor Network Applications" (Control Panel - Network - Server -Configure).

• Размещениефайла подкачки"pagefile.sys" на физическомдиске, не занятомданными SQL Server. Ещелучше, если этидиски обслуживаютсяразными контроллерами.

• Файловаясистема можетбыть любой (FATили NTFS). Небольшойвыгоды можноожидать, еслиразместитьслабо обновляемыебазы данныхна NTFS, а журналтранзакций- на FAT.

• Желательноотключить всененужные сервисыWindows NT.


Параметрыинсталляциии настройкиSQL Server

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

Следующиепараметры SQLServer могут повыситьпроизводительность:

• 'priority boost' (можетпонизить скоростьвыполнениядругих процессовна сервере).Чтобы иметьвозможностьзадать этотпараметр, следуетсначала установитьв 1 параметр'show advanced option'

• 'memory' - задаетразмер памяти,доступной SQLServer. Чем больше,тем лучше, нов рекомендованныхпределах (см.выше)

• 'user connections' - следуетизбегатьнеоправданногозавышения этогопараметра ,т.к. это уменьшаетобъем кэша.Увеличениеэтого параметрана 1 "стоит"примерно •24Кбайт памятидля кэша

• 'procedure cache' - проценткэша, отведенныйпо хранимыепроцедуры. Прибольшом числеиспользуемыххранимых процедурможно повысить.

• 'tempdb in RAM' - можетсущественно( иногда в несколькораз) повыситьскорость выполнениявыборок, требующихсортировкиили группированиястрок.

Кроме того,определенноевлияние напроизводительностьмогут иметьсетевые установки- выбор транспортныхи сеансовыхпротоколов.Замечено, например,что работа поNamed Pipes более всегоэффективнанад TCP/IP. Это связанос тем, что TCP/IP болееэффективнонаполняетпередаваемыепо сети кадры,что снижаетобщее числопередаваемыхкадров и, соответственно,повышаетпроизводительность.


Стратегиянастройки

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

1. Мониторингпараметровпроизводительности;

  1. Предположениео причине низкойпроизводительности;

  2. Выбор параметрадля изменения;

  3. Изменениевыбранногопараметра;

5. Переход кшагу 1.

Очень важнособрать максимуминформации,чтобы делатьобоснованныепредположенияо том, что являетсяузким местомв производительностисистемы. Узкимместом можетбыть как аппаратныйресурс, так иструктуразапросов ииндексов. Сделавпредположение,можно вновьвернуться кмониторингу,чтобы собратьуточняющуюинформацию.

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


Мониторинг

Собиратьинформациюо параметрах,характеризующихпроизводительностьSQL Server удобнее всегос помощью Windows NTPerformance Monitor, которыйпозволяетотследить более30 параметровработы SQL Server. Такжеважно наблюдатьнекоторыепараметрыWindows NT. Основнымиявляются следующие:

• Processor: %Processor Time - преобладающеезначение выше80% говорит о том,что процессорявляется узкимместом. Этоможет бытьвызвано, в частности,неоптимальнойструктуройбазы данных.

• Memory: Pages/sec - долженбыть не выше5-10. Этот параметрхарактеризуетинтенсивностьвытеснениястраниц оперативнойпамяти на диск(paging).

• SQLServer: Cache Hit Ratio - (процентнахождениятребуемойстраницы памятив кэше, а не надиске); долженбыть не ниже80%

• SQLServer: I/O - Page Reads/sec - высокоезначение этогопараметраговорит онедостаточномразмере кэша.

• Physical Disk: Disk Queue Length илиLogical Disk: Disk Queue Length - значениевыше 2 говорито том, что узкимместом являетсядиск.

• Собиратьинформациюпо данным параметрамследует какв среднем запродолжительныйпериод времени,так и в моментыпиковой нагрузки.Удобным можетоказатьсязапись отслеживаемыхпараметровв журнальныйфайл (что позволяетсделать PerformanceMonitor) с последующиманализом вспокойнойобстановке.

Кроме этого,могут помочьтакие предложенияязыка Transact-SQL:

• DBCC MEMUSAGE - информацияоб использованиикэша данныхи процедур

• SET SHOWPLAN ON - просмотрплана выполнениязапроса, информацияоб использованиииндексов

• SET STATISTICS TIME ON - показывает,сколько временибыло затраченона выполнениекаждой стадиизапроса

• SET STATISTICS IO ON - показывает,сколько операцийлогическогои физическогочтения былопроизведенонад каждойтаблицей привыполнениизапроса.


Настройка.Память

Если параметрSQL Server: Cache Hit Ratio (процентпопаданий вкэш), доступныйдля наблюдениячерез Windows NT Performance Monitor,по величинеменьше 80%, тоувеличениеразмера кэшадолжно повыситьпроизводительность.Оценить необходимыйразмер кэшадля процедури данных можно,выполняя самыечасто встречающиесязапросы и хранимыепроцедуры ианализируясодержимоекэша при помощипредложенияDBCC MEMUSAGE. Следуетпомнить, чтохранимые процедурыв SQL Server не являютсяреентерабельными,т.е. если несколькоклиентскихпроцессоводновременновызывают однуи ту же хранимуюпроцедуру, тов кэше окажетсянесколько еекопий.

Если же параметрMemory: Pages/sec постоянновыше 5-10, то памятине хватаетсистеме в целоми нужно либоостановитькакие-либоприложенияили сервисы,или добавитьпамяти в компьютер.


Настройка.Запросы и индексы

Предположим,у нас есть запрос,который медленновыполняется.Мы собралиинформациюо нагрузке напроцессор,память, дискии сеть и выяснили,что узким местомявляется процессор,т.к. он используетсяна 100% при выполнениизапроса, а остальныересурсы явнонедогружены.Можно, конечно,заменить процессорили перейтина многопроцессорнуюплатформу, носначала мыпроанализируемпути доступа.

Задав передвыполнениемзапроса опцию"SET SHOWPLAN ON", мы получиминформациюоб использованиииндексов. Впервоначальномварианте запросаиндексы неиспользуются.Построив индекспо полю, являющемусяаргументомпоиска в запросе,мы существенносокращаемколичествоопераций чтенияи, соответственно,время выполнениязапроса.

Следуетучесть, чтооптимизаторзапросов SQL Serverделает выводоб использованиитого или иногоиндекса привыполнениизапроса наоснованиистатистическихданных о распределениизначений ключейиндекса. Этистатистическиеданные не обновляютсяпри обновленииданных в таблице.Для обновлениястатистикиможно или перестроитьиндекс, илииспользоватьпредложение"UPDATE STATISTICS".


СОПРОВОЖДЕНИЕMICROSOFT SQL SERVER

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

1) работы, которыеможно и должнопланироватьзаранее - назовемих регламентнымиработами

2) обработкаразличныхсбойных ситуаций,которые планироватьневозможно,но можно все-такибыть к ним готовым.


Регламентныеработы (Планировщик)

В Microsoft SQL Server 6.0 естьвсе возможностидовести выполнениерегламентныхработ до такойстепени автоматизации,что администраторможет на нихпрактическине тратитьвремя - все будетвыполнятьспециальныйсервис, которыйназываетсяПланировщик(Scheduling Engine). Вы можетедавать емузадания, которыебудут выполнятьсяпо расписанию,периодическиили однократнов назначенноевремя и о выполнениикоторых выможете узнавать,просматриваяисторию заданийили получаяот Планировщикасообщения поэлектроннойпочте.

Планировщикиспользуется,в частности,для поддержкитиражированияданных. Он можетвыполнятьнесколько типовзаданий, изкоторых насинтересуютдва - выполнениепоследовательностикоманд на языкеTransact-SQL и выполнениекоманд операционнойсистемы Windows NT Server.Мы рассмотримиспользованиепланировщикана примеретипичных инаиболее частыхзадач - резервногокопированияи обновлениястатистики.


Резервноекопирование

Базы данныхнеобходимопериодическикопировать- это объяснятьне нужно. Копироватьнужно какпользовательскиебазы данных,так и системные- в SQL Server 6.0 к ним относятся,помимо базы"master", еще и появившиесяв SQL Server 6.0, "msdb" и, длясерверов-распространителейв процессетиражирования,- "distribution".

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

Поэтому имеетсмысл поручитьэто занятиеПланировщику.Работа с Планировщикомосуществляетсяпри помощисредства SQLEnterprise Manager. Планированиерезервногокопированияможно задатьи не в обычноминтерфейсеПланировщика,а в специальнойформе, для этогопредназначенной.В SQL Server 4.21 тоже можнобыло сконфигурироватьавтоматическоерезервноекопирование,но это былоединственноеавтоматическоедействие.


Обновлениестатистики

Обновлениеиндекснойстатистики,как мы уже говорили,может существенноповлиять напроизводительностьсервера. Поэтомуего тоже имеетсмысл делатьрегулярно ипоручитьПланировщику.Что мы сейчаси сделаем. Создадимзадание типа'TSQL' (выполнениепредложенияязыка Transact-SQL), выполняющеев базе данных'pubs' вызов хранимойпроцедуры'update_all_stats', котораяобновляетстатистикупо всем таблицам.Пусть статистикаобновляетсяеженедельно,по воскресеньямв 3:00. Сообщенияо неудачномзавершениизадания будутзаписыватьсяв системныйжурнал, а такжеотправлятьсяпо электроннойпочте оператору.


Предвидениесбойных ситуаций

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

Так, например,если вы используетеSQL Server в приложении,"жизненноважном" длядеятельностивашей фирмы,то вам, скореевсего, необходимобудет делатьрезервноекопированиебаз данныхминимум разв день. Копироватьданные можнона стриммерили на жесткийдиск. Крометого, следует,очевидно, иметьрезервныйкомпьютер сустановленнымна нем SQL Server и конфигурациейбаз данных,полностьюсоответствующейосновномусерверу. Тогдав случае выходаиз строя основногосервера можнобудет с минимальнымипотерями времениперевестисистему наобслуживаниерезервнымсервером. Можноделать резервноекопированиебаз данныхосновногосервера нажесткий дискрезервногосервера. Дляэтого нужно,чтобы сервисSQL Server регистрировалсяв Windows NT под именемпользователя,который имеетправа на записьна этот диск.


Менеджерсобытий

Еще одинкомпонентсистемы управленияSQL Server - менеджерсобытий (Alert Manager),позволяетзапланироватьреакцию серверана все возможныесбойные ситуации.События фиксируютсяв системномжурнале, менеджерсобытий постоянночитает этотжурнал и, приобнаружениизаданного кодасообщения,выполняетзапланированноеадминистраторомдействие. Этодействие оформляетсяв виде заданияпланировщику,аналогичногорассмотренномузаданию наобновлениестатистики,только выполняетсяоно не по расписанию,а "по требованию".Конфигурируяреакцию насобытия, администраторуказывает,какое заданиевыполнить вслучае наступленияэтого события.Например, припереполнениижурнала транзакцийможно вызватьзадание, котороеосуществитрезервноекопированиежурнала и темсамым очиститего.

Событие можнонастроить наконкретноесообщение обошибке, а можнона группу ошибок,относящихсяк одному т.н."уровню серьезности".

Реакция насобытие такжепредусматриваетуведомлениеуказанногосписка операторовсредствамиэлектроннойпочты илипэйджинговойсвязи. Для того,чтобы SQL Server моготправлятьи приниматьпочту, работаяс Microsoft Exchange, необходимопри конфигурированииSQL Mail указать вкачестве именипользователяимя профиля("profile"), а в качествепароля - сетевойпароль владельцапрофиля. Приэтом необходимо,чтобы SQL Server регистрировалсяв Windows NT не под именем"Local System", а под именемвладельцавышеупомянутогопрофиля.


Анализ сбойнойситуации

Что делать,если серверили клиентскоеприложениевыдает сообщениеоб ошибке? Преждевсего, необходимособрать максимумточной информации- номер сообщения,поясняющийтекст, какоедействиепроизводилосьв момент, когдапроизошлаошибка. Просмотритежурнал ошибокSQL Server и системныйжурнал Windows NT Server. Затемнужно выяснить,какой компонентвашего клиент-серверногоприложениявызывает этуошибку. Компонентынужно рассмотретьследующие:

• Клиентскоеприложение;

• Сеть;

• SQL Server

Если вы выяснили,какой запроспривел к сбойнойситуации, тоизолироватьклиентскоеприложениеможно, пославэтот же запроск SQL Server через интерактивнуюутилиту ISQL/W. Еслиошибка повторяется,значит клиентскоеприложениени при чем. Пославэтот же запрос,но не с рабочейстанции, анепосредственнос компьютера,на которомработает SQL Server,можно выяснить,виновата лисеть.


Анализ проблемс блокировками

Если выпредполагаете,что есть проблемыс блокировками,то удобно выяснить,так ли это, используяSQL Enterprise Manager и, конкретно,режим просмотратекущей активности("current activity"). В этомрежиме нагляднопредставленаинформацияо том, какойпроцесс блокируетдругие процессыи из-за блокированиякаких таблицпроисходитконфликт. Выимеете возможностьперестроитьзапросы так,чтобы они неприводили кконфликтами, в крайнемслучае, "убить"нежелательныйпроцесс.



СОДЕРЖАНИЕ:

Введение2

АрхитектураMS SQL Server 6.54

Производительность5

Распределеннаясреда управления6

SQL-DMO (DistributedManagement Objects)9

Интеграцияс электроннойпочтой10

Характеристикиязыка Transact-SQL11

MS DistributedTransaction Coordinator (DTC) и распределенныетранзакции13

Блокировки16

Надежностьхраненияинформации19

Тиражирование22

Вопросыбезопасностидоступа25

Некоторыевопросы использованияMS SQL Server в Internet/intranet-приложениях26

Заключение29

Списоклитературы:30

Введение

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

Нелинейныйрост во временисовокупнойбазы знанийцивилизациивызвал к жизнипрогрессирующуюэволюцию средствхранения, обработкии представленияинформациикак инструментовумножения ееинтеллектуальноймощи. В этомряду применениепоследнихдостиженийв областикомпьютерныхтехнологийсравнимо постепени важностис изобретениемпечатногостанка или дажеего превосходит.Наблюдаетсяи обратнаязависимость:чем более изощренныесредства используютсядля обработкиинформации,чем быстреерастут ее объемы,тем большеезначение онаприобретаетпрактическиво всех аспектахчеловеческойдеятельности,в частностив экономике.Роль информации,как товара илипредмета труда,носит совершенноособый характер.Информациясравнительнолегко копируетсябез ущерба длясвоих потребительскихсвойств. В отличие,например, оттонны нефти,одна и та жеинформацияможет бытьпотребленанеоднократно,в том числеодновременноразличнымиучастникамитоварных отношений.Все мы еще суроков обществоведенияусвоили, чтотруд являетсяосновным источникомсоздания материальныхблаг. Однакодаже у авторовучения о прибавочнойстоимости можновстретить мысльо том, что помере развитиянауки главнаядоля приростаобщественногоблагосостояниябудет обуславливатьсяускореннымитемпами обновленияосновногокапитала в силуроста техническогопрогресса.Многие современныезападные экономистысклонны считать,что человечествовступило впостиндустриальныйпериод своегоразвития, основнымсредствомпроизводствав котором будетвыступатьинформацияи по отношениямсобственностина которую вобществе уженачал определятьсяновый правящийкласс - когнитариат.Можно приниматьили оспариватьэти выводы,очевидно одно- в деятельностисовременногопредприятияинформациястановитсяодним из важнейшихпроизводственныхресурсов, выделяясьв самостоятельныйфактор успешногобизнеса изтрадиционныхсоставляющих,таких как кадры,клиенты, каналысбыта, технологии.Наконец, информацияне может потреблятьсянепосредственно:например, чтобыусвоить текст,нужно, как минимум,уметь читать.Отсюда с ростомзначения информациивозрастаетроль средствее обработки.Если зачастуюстоимостьинформационнойбазы корпорацииоказываетсявыше производимойею продукциии услуг, еслиинформация- это всегдаденьги (и в общем-тонемалые), тонеудивительно,что рынок СУБДна сегодняоцениваетсяв десятки миллиардовдолларов.

Хотя предкинынешних СУБДсуществовалина мэйнфреймахеще до появленияв 1969 г. знаменитойстатьи Э. Кодда,положившейначало теорииреляционныхбаз данных, ихпоистине массовоераспространениеи беспрецедентныйрост популярностиобеспечили"настольные"варианты одновременнос мировой экспансиейперсональныхкомпьютеров.Однако требованиякорпоративногодоступа к ресурсами появлениелокальныхвычислительныхсетей на базеПК привели ксозданию наиболеемногочисленныхна сегоднярешений на базетехнологии"клиент-сервер".В последнеевремя необходимостьподдержкимультимедийныхпроектов(изображений,видео, звука)и работы с другимивидами неструктурированнойбизнес-информации(временныеряды, географическиекарты) вызвалак жизни внедрениеобъектнойидеологии встарые добрыереляционныебазы независимоот того, достигалосьли это полнымпереписываниемядра или интеграциейготовых реляционныхи объектныхбаз данных.Классическуюже в терминахреляционнойтеории СУБД,как известно,в первом приближенииможно описатькак комплексиз инструментариядля поддержкитаблиц и отношениймежду связаннымитаблицами,пользовательскогоинтерфейсадля ввода, поискаданных и ихпредставленияи высокоуровневыхсредств разработкиприложений.Выделение вэтой средесвоеобразногоисполнительногоинформационногоцентра, принимающегокороткие запросыот клиентов,отыскивающегооптимальныйпуть их выполненияи передающегов ответ результирующиемножества,приводит кразделениюфункций СУБД,часть из которыхзакрепляетсяза сервером,а часть - заклиентом. Традиционнона сервер возлагаютсяобязанностипо оперативномуисполнениютранзакций,поддержкецелостностиданных, обеспечениюбезопасностихранения идоступа, обеспечениюпользовательскихсоединенийи соблюдениючасти логикиприложения,большей илименьшей в зависимостиот самого конкретногоприложения.Естественно,самая минимальнаячасть сервернойлогики должнаобеспечиватьпроектированиеструктурнойсхемы базывместе с соответствующимиограничениями.На сторонеклиента у нас,таким образом,остаются другая(как правило,все-таки меньшая)часть бизнес-логикиприложенияи пользовательскийинтерфейс.Исходя из всегосказанноговыше о значениии цене информациив современноммире не будетбольшим преувеличениемсказать, чтов серверах базданных (во всякомслучае, для"большой шестерки")воплотилисьлучшие достиженияв областиинформационныхтехнологий.Microsoft SQL Server 6.5 являетсяодним из наиболеестремительноразвивающихсясерверов базданных на рынкекорпоративныхСУБД. Разумеется,в рамках даннойстатьи невозможноподробно остановитьсяна характеристикахэтого продуктав той мере, вкакой это хотелосьбы сделать икакой он, безусловно,заслуживает.Поэтому мыограничим нашузадачу рассмотрениемхотя бы некоторыхбазовых возможностейMicrosoft SQL Server 6.5 применительнок перечисленнымвыше функциямсервера базданных.


АрхитектураMS SQL Server 6.5

СимметричнаямультипроцессорнаяархитектураMS SQL Server предусматриваетиспользование"родных" сервисовоперационнойсистемы Windows NT дляуправленияпотоками (threads),памятью, операциямидисковогочтения/записи,сетевыми службами,функциямибезопасности,а также дляподдержкипараллельноговыполненияпотоков нанесколькихCPU. Использованиепотоков Windows NTпозволяет MSSQL Server автоматическимасштабироватьсяпри работе намногопроцессорныхплатформах,что исключаетнеобходимостьдополнительнойконфигурацииили программнойнастройки.Например, наComdex была продемонстрированаработа MS SQL Server наплатформеAlphaServer 8400 производстваDigital, оснащенным12 процессорами,28 Гбайт памятии 39-ти терабайтнымхранилищем.В отличие отбольшинствараспространенныхСУБД, вынужденныхиметь в своемсоставе механизмыдублированияядра операционнойсистемы дляобеспечениякросс-платформеннойпереносимости,MS SQL Server обладаетдостаточнолегковеснойпрозрачнойархитектурой,не перетяжеленнойнесвойственнымией функциями.В результате,например, присмене типапроцессоране требуетсязаново приобретатьMS SQL Server для новойаппаратнойплатформы. Онставится, поопределению,на все, на чемработает Windows NT(на сегодня этоIntel, Alpha, MIPS и PowerPC). По меретого как Windows NTзавоевываетвсе большеепризнание ивсе ведущиепроизводителиСУБД уже выпустиливерсии своихпродуктов подэтой операционнойсистемой илиуже заявилио своей готовностиэто сделатьв ближайшеевремя, изначальнаяориентированностьMS SQL Server 6.5 на теснуюинтеграциюс Windows NT выступаетв качествеодного из серьезныхпреимуществ.

На каждоепользовательскоесоединениев MS SQL Server назначаетсяотдельныйрабочий поток(порядка 55К) врамках единогосерверногопроцесса. Таккак каждый изэтих потоковв действительностиявляется потокомWin32, на них распространяютсясоответствующиефункции контроляоперационнойсистемы, включаязащиту памяти,правила доступак оборудованиюи планированиевыполненияпотоков вовремени (threadscheduling). Это предоставляетулучшенныеспособностик масштабированиюпри росте числаодновременноработающихпользователей,динамическуюбалансировкупри загрузкепроцессорови повышеннуюнадежность,так как пользовательскиезапросы, исполняющиесяна разных потоках,защищены другот друга. Несмотряна то что пулсоединенийограничен 1024потоками,динамическоеуправлениепользовательскимисоединениямии свободнымипотоками позволяетувеличить этувеличину до32 767. Кроме этого,другие пулыпотоков могутиспользоватьсядля параллельноговыполненияопераций сканированияданных, удаленияи обновления,резервногокопирования,проверки целостностибазы, индексирования,асинхронногоопережающегочтения данныхв кэш на основеалгоритмовпредсказания,создания иуправлениякурсорами ит. д.

Сетевые службыWindows NT обеспечиваютMS SQL Server поддержкупротоколовTCP/IP, NWLink IPX/SPX, Named Pipes (NetBEUI), Banyan Vines,AppleTalk (ADSP) и DECNet. В версии6.5 к ним добавиласьдополнительнаясетевая библиотека- multiprotocol network library, которая"умеет слушать"порты TCP/IP, сокетыSPX или поименованныеканалы (named pipes), которыеобычно выбираютсядинамически.Несомненнымдостоинствомmultiprotocol являетсяналичие сетевогосервиса, обеспечивающеговзаимодействиемежду процессамипри помощивызовов удаленныхпроцедур, чтопозволяет,например,использоватьшифрованиепри передачеданных.


Производительность

Многопоточноеядро и интеграциясо службамипланированияпотоков Windows NTобеспечиваетвысокую производительностьMS SQL Server при обработкеOLTP- и DSS-запросов,что особеннозаметно приодновременнойработе несколькихсотен пользователей.В опубликованныхрезультатахпо тестированиюMS SQL Server 6.5 на максимальноечисло одновременноработающихпользователейприводитсяцифра 3500, хотяизвестны реальноработающиеприложения,где нагрузкадоходила до5000 одновременныхпользовательскихсоединений.За период соктября 1995 г. подекабрь 1996 г.производительностьMS SQL Server, измереннаяпо тестам TPC-C (см.http://www.tpc.org), вырослас 2454 до 7521 транзакциив минуту, т. е.более чем в 3раза. Для сравнениязаметим, чтоежедневныйобъем транзакцийв расчетнойсистеме VISA составляетот 10 до 40 млн. Темп7,5 тыс. транзакцийв минуту означает,что один MS SQL Serverспособен прирежиме работы24х7 обслужитьнемногим менее11 млн. транзакцийв сутки. Существуетеще один параметр,тесно связанныйс производительностью,который, неявляясь в строгомсмысле словатехническим,очень популяренна Западе приоценке возможностейтого или иногосервера базданных, так какот него существеннозависит стоимостьвладения продуктом(cost of ownership). Речь идетоб удельнойцене за транзакциюв минуту, инымисловами, сколькопридется заплатитьза достижениетакой скоростиобработкизапроса. За тотже самый период,в течение которогомы рассматривалирост производительности,показатель"цена/производительность"снизился с 242до 65 долл. затранзакциюв минуту, чтоговорит о разумнойстоимостисистем на базеMS SQL Server при высокихтребованияхк скоростиобработки.


Распределеннаясреда управления

В состав MSSQL Server 6.5 входит свыше20 графическихсредств управленияи утилит команднойстроки, которыекратко охарактеризованыв табл.1.


Название Краткоеописание

Интерфейс


Исполняемыйфайл

SQL Enerprise Manager


Мощныйцентрализованныйинструментполного управлениясерверами вмасштабахпредприятия,включая базыданных, ихобъекты, предупреждения(alerts), спланированныево временизадачи, тиражированиеи запросы. Графический

sqlew.exe


SQL Executive

Локальныйадминистративныйагент дляпланированиязадач, управленияпредупреждениямии мониторингаактивностиMS SQL Server. Может бытьвызван из SQLEnterprise Manager.


Команднаястрока sqlexec.exe

Sqlmaint

Определяетплан необходимыхрутинных действийпо поддержкебазы данных:регулярнаяпроверкацелостности,резервноекопирование,перестройкаиндексов ит. Д., которыйвпоследствиибудет выполнятьсяавтоматически.Аналогичныймастер включенв SQL Enterprise Manager.


Команднаястрока


sqlmaint.exe
SQLService Manager Sqlservr

Используетсядля запуска,останова,приостановкии возобновлениядеятельностисервера и агентаSQL Executive. Сам MS SQL Server можетбыть запущениз команднойстроки, аргументыкоторой определяютего текущуюнастройку.


Графический,Команднаястрока


sqlmgr.exe sqlservr.exe


ISQL/w

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

Графический


isqlw.exe


Isql

Средствоинтерактивноговвода операторовTransact-SQL, вызова системныхпроцедур, запускаскриптов.

Команднаястрока


isql.exe

SQLSecurity Manager

Управлениеинтегрированнымрежимом безопасности.

Графический


sqsecmgr.exe


SQL Trace

Средствомониторингапользовательскойактивности.ПозволяетотлавливатьоператорыTransact-SQL, вызовы процедур,инициируемыекаждым клиентом,в реальномвремени илизаписыватьв журнал. Обладаетвозм-стямифильтрации.

Графический


sqltrace.exe


SQL Performance Monitor

Используетдля мониторингасобытий и сборастатистикипо MS SQL Server стандартныйperfmon.ехе Windows NT на основепредоставляемогоим списка объектови счетчиков. Графический sqlalrtr.exe

SQL Alerter

Интеграциямеханизмапредупрежденийс соответствующимислужбами WindowsNT Performance Monitor.

Команднаястрока



SQLTransfer Manager

Управлениепереносомданных и объектовс различныхплатформ SQLServer. Графический sqlxfr.exe

BCP(bulk copy)

Переносданных междуMS SQL Server и файламиоперационнойсистемы (например,текстовыми). Команднаястрока bcp.exe

SQLSetup

Применяетсядля начальнойустановки,удаления, upgrade,инсталляциидополнительныхкомпонентови изменениянастроек вконфигурации:поддержкисетевых протоколов,измененияязыка, выборакодовой страницыи порядкасортировки,модели безопасности,а также дляперестройкибазы данныхmaster. Графический setup.exe

Languageinstallation

Установкаподдержкидополнительнойязыковойинформации(например,локализованныхсообщений).Используетсяв setup.exe. Команднаястрока langinst.exe

Sortorder installation

Установкакодовой страницысимволов,чувствительностик регистру иотношенияпорядка надсимволами.Используетсяв setup.exe. Команднаястрока charset.exe

Checkupgrade

ИспользуетсяMS SQL Server во времяupgrade для проверкисовместимостисуществующихпользовательскихбаз. Команднаястрока сhkupg65.exe
SQLClient Configuration Utility Настройкаклиента DB-Library,различныхсетевых библиотеки/или пользовательскихпоименованныхканалов. Графический windbver.exe

Makepipe,readpipe

Пытаютсяоткрыть ииспользоватьпоименованныйканал междусервером иклиентом. Команднаястрока makepipe.exereadpipe.exe

Odbcping

ПроверкаправильностиустановкиODBC-соединенияс MS SQL Server. Команднаястрока odbcping.exe

Console

Используетсявместе с операторомDUMP для резервногокопирования,если устройствомявляется дискета. Команднаястрока console.exe

Printdmp

Форматированныйдамп стекадля нужд отладки. Команднаястрока printdmp.exe

Таблица 1.

Кроме этого,MS SQL Server 6.5 включаетWeb-assistant - программу-мастердля подготовкипубликациина Web-cтраницахданных из базы,SQL Mail - утилиту,обеспечивающуюинтеграциюс электроннойпочтой MS Mail илиMS Exchange, MS Distributed Transaction Coor-dinator (MS DTC) дляпроведенияраспределенныхтранзакцийи некоторыедругие средства.SQL Server, MS DTC и SQL Executive функционируюткак сервисыоперационнойсистемы. Согласованнаяработа этихкомпонентовдостигаетсяблагодарятрехуровневойархитектуреSQL-DMF (Dist-ributed Management Frame-work).

Легко масштабируемаяраспределеннаясреда управленияпозволяетзначительноупроститьпроцессыцентрализованногоконтроля надмногими серверами,которые могутобъединятьсяв группы посоображениямбезопасностиили с административнымицелями, и ихобъектами, ккоторым относятся:


• устройства(devices), на которыхфизическирасполагаютсябазы данных;

• резервныеустройства,содержащиестраховочныекопии баз данныхи объектоввнутри нее;

• базы данных:

• пользователии группы пользователей;

• таблицы;

• представления;

• хранимыепроцедуры;

• правила(rules);

• ограничениятипа default;

• типы данных,определенныепользователем;

• logins для соединенияс сервером.


SQL Enterprise Manager интегрируетв себе все функцииуправления,включая созданиебаз данных иобъектов внутриних, назначениеправ доступа,резервноекопирование,тиражированиеи т. д. При желанииимеется возможностьавтоматизироватьпроцесс составленияплана поддержкибазы при помощиспециальнойпрограммы-помощника(Data-base Main-tenance Wizard). Различныеподходы к системномуадминистрированиюзачастую могутсодержать рядмалоприятныхмоментов, напримернеобходимостьвыполнятьрезервноекопированиебазы в субботувечером. По темже причинамруководительбывает вынужденкомандироватьсотрудниковв какой-нибудьудаленныйфилиал, гдеотсутствуетдолжным образомподготовленныйIT-персонал. MS SQLServer 6.5 позволяетрешить этипроблемы, во-первых,за счет централизованногоуправленияудаленнымисерверами,во-вторых, засчет наличиямощного средствадиспетчеризациизадач во времени,предоставляемогоSQL Executive. Для каждойадминистративнойфункции можетбыть назначенвременнойграфик ее выполнения.Практическивсе СУБД содержатразвитые средствапо ликвидациитех или иныхнеблагоприятныхпоследствий.Microsoft SQL Server, помимоэтого, предоставляетобширныйинструментарийдиагностики,позволяющийсвоевременнопредотвратитьпричины сбоев.Утилиты SQL PerformanceMonitor и Alert Manager могутиспользоватьсядля программированияреакции серверана различныеклассы событий,возникающихв системе, втом числе и набизнес-события.Если, например,уровень заполненияжурнала транзакцийпревзошелнекотороепороговоезначение илипо корреспондентскомусчету возникло"красное" сальдо,MS SQL Server может послатьвам (или указаннымвами лицам) поэлектроннойпочте или напейджер соответствующеепредупреждениеи/или выполнитьпредусмотренныйвами скрипт,cmd- или exe-файл дляустраненияошибки, а такжезафиксироватьпоявление этогособытия в системномжурнале. В целомможно сказать,что распределеннаясреда управленияпозволяетсущественноупростить жизньадминистраторабазы данных.


SQL-DMO(Distributed Management Objects)

В качествепромежуточногослоя в архитектурераспределеннойсреды управлениявыступаютраспределенныеобъекты управления(DMO), которые играютисключительноважную рольв концепциипостроенияMS SQL Server и потомузаслуживаютболее тщательногорассмотрения.По мере тогокак приложенияприобреталивсе менеецентрализованныйхарактер, поддержкараспределенныхбаз данныхстановиласьодним из самыхактуальныхвопросов построениясовременныхСУБД. Мы ужеимели возможностьубедиться, чтоSQL Enterprise Manager позволяетосуществлятьудобное администрированиераспределенныхсерверов изединого центра,однако нарядус этим хотелосьбы иметь возможностьпрограммногообращения кадминистративнымфункциям извысокоуровневыхязыков. Обычноиспользовавшимсядля этих целейв других СУБДсценарнымязыкам типаREXX или PERL недоставалофункциональныхвозможностей,библиотекклассов, отладчикаи т. д.

Поэтому вслучае с Microsoft SQLServer был избранболее открытыйподход: сервербыл разработанкак cовместнос набором объектовуправления,которые моглибыть вызваныиз любого языкапрограммирования,поддерживающеготехнологиюСОМ (Component Object Model). MS SQL Server 6.5предоставляетинтерфейс OLEAutomation с более, чем70 объектами,обладающими1500 свойствами.

Это означает,что фактическилюбая из перечисленныхнами в предыдущемпункте административныхзадач, включаяоперации надбазами данных,ограничениями(constraints), триггерами,таблицами,представлениями,полями, индексами,пользователями,группами,публикациямии пр., может бытьоформлена каквызов соответствующегометода соответствующегообъекта и выполнена(при наличииправ доступа)из Visual Basic, Visual C++, Visual J++, Visual FoxPro ит. д. Как и длявсякого OLE AutomationServer, при распространенииприложения,использующеговызовы SQL-DMO, наклиенте с помощьюregsrv32.exe должна бытьзарегистрированабиблиотекаподдержкиобъектовsqlole65.dll. Вот, например,как можноорганизоватьпросмотр содержимоготаблицы MS SQL Server изMS Visual FoxPro 5.0:


FoxPro 5.0:

oSQLServer=CreateObject("SQLOLE.SQLServer")

oSQLServer.Connect("ntalexeysh","sa")

oQueryResults=oSQLServer.Databases("mydb").ExecuteWithResults("select* from anytable")

?

foreach oColumn in oSQLServer.Databases("mydb").Tables("anytable").Columns

??padc(oColumn.Name,oColumn. Length)+' '

next

fori=1 to oQueryResults.Rows

?

for j=1 tooQueryResults.Columns

??oQueryResults.GetColumnString(i,j)+' '

next

next

oSQLServer.Close


Объектнаямодель оказаласьнастолькомощной, полнойи гибкой, чтодаже SQL Enterprise Manager (однаиз основныхутилит в составеMS SQL Server) был написанс использованиемDMO.


Интеграцияс электроннойпочтой

Рассматриваяфункции администрированияMS SQL Server 6.5, мы упоминалио возможностиавтоматическойотправки сообщенийпо электроннойпочте в случаевозникновенияпредупреждения,превышенияпороговогозначения одногоиз показателейв SQL Performance Monitor или периодическина основезапланированногографика. В составсервера входитутилита SQLMail, котораяпозволяеторганизоватьвзаимодействиес Microsoft Exchange Server для отправкии приема сообщенийчерез расширенныехранимые процедуры,использующиевызовы функцийMAPI. К этим процедурамотносятсяxp_startmail и xp_stopmail для запускаи остановкиSQLMail, xp_sendmail для отправкисообщения,xp_findnextmsg для поискаследующегосообщения впочтовом ящике,xp_readmail для чтениясообщений ивложенных вних файлов,xp_deletemail для удаления.Все они находятсяв библиотекеsqlmap60.dll и могутиспользоватьсяв скриптах наTransact-SQL, хранимыхпроцедурах,триггерах ит. д. Например,в триггере наupdate можно предусмотретьнепосредственнуюотправку сообщения(без вызоваraiserror, как это былопри работе сAlert Manager), если происходитпопытка изменитькакие-либоважные значенияв базе данных.Приведеннаяниже хранимаяпроцедураосуществляетсканированиеящика входящихсообщений изапись параметров,поступившихсообщений втаблицу.


createprocedure scaninbox as

declare@msg_id varchar(64), @originator varchar(255), @recipientsvarchar(255)

declare@cc_list varchar(255), @subject varchar(255), @date_receivedvarchar(255)

declare@msg_body varchar(255)


truncatetable mysqldb..inbox

while(1=1) begin

execmaster..xp_findnextmsg @msg_id=@msg_id output

if@msg_id is null break

execmaster..xp_readmail

@msg_id=@msg_id,

@originator=@originatoroutput,

@recipients= @recipients output,

@cc_list=@cc_listoutput,

@subject=@subjectoutput,

@date_received =@date_received output,

@message=@msg_bodyoutput,

@suppress_attach='true',

@peek='false'

insert intomysqldb..inbox (msg_id, originator, recipients,

cc_list,subject, date_received, msg_body) values

(@msg_id,@originator, @recipients, @cc_list, @subject, @date_received,@msg_body)

end


SQLMail может бытьсконфигурировандля автоматическогозапуска одновременносо стартомсервиса SQLExecutive.Сервис MS SQL Server долженбыть стартованпод учетнойзаписью пользователяWindows NT (user account), котораяобладает локальнымиадминистративнымиправами и имеетсоответствующиеправа в домене.Имя данногопользователя,под которымтот входил вWindows NT, должно совпадатьс названиемпочтового ящика(mailbox name) MS Exchange.


Характеристикиязыка Transact-SQL

В основепрактическивсех вышеперечисленныхутилит лежиткод языкаTransact-SQL. MS SQL Server 6.5 был первойСУБД, прошедшейсертификационныеиспытанияПравительстваСША на соответствиевходному уровню(entry level) федеральныхстандартовобработкиинформации(FIPS) 127.2. Эти тестыосновываютсяна известныхстандартахANSI SQL92 и включаютдополнительныетребования,в частностипо поддержкетрехуровневыхархитектур.MS SQL Server 6.5 содержитбольшое количествочерт и функций,относящихсяк более высокимуровням стандартаANSI SQL92 (intermediate и full), напримерскроллируемыев обоих направленияхкурсоры с абсолютными относительнымпозиционированием.Насколько мнеизвестно, ниодна из СУБДна сегодня недостигла полногосоответствияуровню ANSI SQL92, болеевысокому, чемвходной.

Transact-SQL включаетоператоры дляизменениянастроек сервера,пользовательскойсессии, просмотраи редактированияданных, созданияи модификациибаз и их объектов.Способы обеспеченияцелостностиданных представленыв табл. 2. В настоящеевремя в MS SQL Serverподдерживаетсятолько строгий(restrict) тип ссылочнойцелостности.


Тип целостности Пояснения Механизмыконтроля

Entity

Определяетзапись какуникальнуюдля таблицысущность

Primary key,

Unique key,

Identity

Domain

Определяетобласть допустимыхзначений дляполя

Default, Check,

Foreign key

Referential

Поддержкассылочнойцелостностисвязей

Check, Foreign key,

Trigger

User-defined

Все прочиебизнес-правилана уровне столбцаи таблицы

Trigger, Rule,

Storedprocedure


Таблица 2.


Вся информацияоб ограничениях,наложенныхна таблицу,может бытьпросмотренапри помощихранимой процедурыsp_helpconstraint. Ограничениявсегда вызываютсяперед триггерами.Последовательностьобработкивыглядит следующимобразом: rules, references,check, referenced by и затемtriggers. Подробнаяхарактеристикачерт Transact-SQL самапо себе моглабы составитьотдельнуюстатью или даженесколькостатей, поэтомумы ограничимсяконстатациейлишь некоторыхего новшествпо сравнениюс предыдущейверсией MS SQL Server:


• операторыCUBE и ROLLUP для созданияаналитическихзапросов припостроениисистем поддержкипринятия решений;

• операторCREATE SCHEMA (созданиеконцептуальногоконтейнерногообъекта);

• возможностьвременнойотмены ограниченийпри тиражировании;

• дополнительныехранимые процедурыдля настройкипроцессатиражирования;

• возможностьтиражированияданных типаtext и image;

• возможностьрезервногокопированияи загрузкиотдельнойтаблицы;

• возможностьиспользованияоператоровDDL внутри транзакции;

• новые опцииDBREINDEX, PROCCACHE, ROWLOCK, UPDATEUSAGE дляDBCC;

• операторINSERT-EXEC позволяетосуществитьнепосредственнуювставку результатоввыполненияпроцедуры;

• поддержкараспределенныхтранзакций.


Помимо обычныххранимых процедурMS SQL Server предоставляетвозможностьдинамическойзагрузки ивыполненияфункций, которыеназываютсярасширеннымихранимымипроцедурамии выполненыв виде dll-библиотек.Пример такойбиблиотеки,содержащийрасширенныепроцедуры дляработы с электроннойпочтой, мы видели,когда рассматривалиинтеграциюMS SQL Server с MS Exchange. Расширенныепроцедурыобъединеныв dll-библиотекив целях повышенияпроизводительностипо сравнениюс оформлениемв виде отдельныхпроцессов.Кроме расширенныхпроцедур, входящихв Transact-SQL, MS SQL Server позволяетсоздаватьпользовательскиерасширенныепроцедуры cиспользованиемкода на C припомощи MS Open Data Service (ODS)API. MS ODS являетсямощным средствомразработкии применяетсятакже для созданияшлюзов к неподдерживаемымштатно пользовательскимресурсам,программированиязадач аудита,извещения особытиях и пр.Добавлениеновых расширенныхпроцедуросуществляетсякомандойsp_addextendedproc 'xp_proc', 'xp.dll', где xp_proc- новая процедура,содержащаясяв библиотекеxp.dll. Удалениененужных процедурпроизводиткомандаsp_dropextendedproc. Так какрасширеннаяпроцедураисполняетсяв адресномпространствеMS SQL Server, право на еедобавлениеимеет толькосистемныйадминистратор.Дополнительныйуровень защитыобеспечиваетсяобработчикомисключенийMS SQL Server, которыйпредотвращаетсервер от сбояв случае нарушенийзащиты памятив расширеннойпроцедуре.

В версии 6.5 вTransact-SQL вошли хранимыепроцедуры дляработы с объектамиOLE Automation. Таким образом,фактическипоявиласьвозможностьписать расширенныехранимые процедурына любом языкепрограммирования,поддерживающемсоздание cерверовOLE Automation: Visual Basic версии4 и выше, Visual FoxPro 5.х ит. д. Экземплярсоответствующегообъекта создаетсянепосредственнов коде Transact-SQL припомощи хранимойпроцедурыsp_OACreate. Доступ ксвойствамосуществляетсячерез sp_OAGet-Property,sp_OASetProperty. Вызов методаорганизуетпроцедураsp_OAMethod. sp_ OAGetErrorInfo сообщаетинформациюо последнейпроизошедшейошибке, наконец,sp_OADestroy высвобождаетобъект послеего использования.

Механизмвызовов удаленныххранимых процедур(RPC) позволяеторганизоватьмежсерверноевзаимодействиеи являетсямощным средствомпостроенияраспределенныхбаз. RPC означаетвызов с одногосервера процедуры,принадлежащейдругому серверубаз данных.Клиентскоеприложениеможет вызыватьпроцедуру насвоем основномсервере, котораянеявно дляклиента можетпорождатькаскад вызововудаленныххранимых процедурна других серверах.RPC представляетсобой достаточноудобный способработы с распределеннымиданными безнеобходимостивнесения измененийв клиентскуючасть приложения.


MSDistributed Transaction Coordinator (DTC) и распределенныетранзакции

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

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


HRESULT hr;ITransactionDispenser *pTxDispenser;

тогдаhr = DtcGetTransactionManager(

NULL,

//имя хоста DTC, NULL

//означает данныйхост

NULL,

//имя менеджератранзакций

IID_ITransactionDispenser,

//требуемыйинтерфейс

0,

//зарезервировано

0,

//зарезервировано

(void*)NULL,

//зарезервировано

(void**)&pTxDispenser);


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


ITransaction*pTx;

hr =pTxDispenser->BeginTransaction (

NULL,

//управляющийинтерфейс

ISOLATIONLEVEL_BROWSE,

//уровень изоляции

0,

//флаги изоляции

NULL,

//зарезервировано

&pTx);

//Ptr на объект"транзакция"


Как видноиз примера,приложениеначинаетраспределеннуютранзакцию,вызывая методBeginTransaction объекта"первичныйменеджер транзакции".После этогооно может работатьс менеджерамиресурсов. Первоеобращение кменеджеруресурсов изприложенияоднозначноидентифицируеттекущую транзакцию.Менеджерыресурсов, участвующиев данной транзакции,должны прописатьсяв объекте"транзакция"при помощименеджеровтранзакций.


RETCODE rc; HDBChSrv1, hSrv2;•

rc =SQLSetConnectOption( hSrv1, SQL_COPT_SS_ENLIST_IN_DTC, pTx);

rc =SQLSetConnectOption( hSrv2, SQL_COPT_SS_ENLIST_IN_DTC, pTx);


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


DbExecSQL(hSrv1,"INSERTINTO...");

DbExecSQL(hSrv2,"INSERTINTO..."); ...

hr=pTx->Commit(0,0,0);•hr=pTx->Release()

Инициацияраспределенныхтранзакцийсервером имеетряд дополнительныхпреимуществпо сравнениюс только чторассмотреннойинициациейна сторонеклиента. К нимотносятсяменьшие сетевыезатраты приуправлениитранзакциями,а также то, чтоошибка на клиентене "подвешивает"транзакциив состоянииin-doubt. Кроме того,вызовы Transact-SQL достаточнопросты в использовании.При явном определениивсе вызовыудаленныхпроцедур наследуютконтекстраспределеннойтранзакции.


BEGINDISTRIBUTED TRANSACTION

INSERTINTO ACCOUNTS VALUES (100,20)

EXECRMTBRANCH.ACCOUNTS.DBO.DEPOSIT

100,20

COMMITTRANSACTION


При неявномопределениипри помощиустановокsp_configure "remote proc trans", 1 (уровеньсервера) илиset remote_ procedure_transactions on (уровеньсессии) MS SQL Server поумолчаниюрассматриваетлокальныетранзакции,начатые begin transaction,как распределенныес подключениемDTC, если в нихсодержатсявызовы удаленныххранимых процедур.

Корректноезавершениетранзакциивыполняетсяпри помощипротоколадвухфазнойфиксации. Когдаприложениевызывает методcommit, менеджертранзакцийоповещаетзарегистрировавшиесяменеджерыресурсовподготовитьсяк фиксацииданной транзакции,и, после тогокак все ониизвестили освоей готовности,менеджер транзакцийрассылаетшироковещательноесообщениезафиксироватьтранзакцию.Если хотя быодин менеджерресурсов несообщил о готовностификсироватьтранзакцию,она повсеместнооткатывается.После сообщенияо готовностименеджер ресурсовпребывает всостояниисомнения (in-doubt)относительнообщего исхода.Так как менеджерыресурсоврегистрируютсяв транзакции,то менеджерытранзакцийимеют возможностьотслеживатьвсе их операциии хранят журналыо решенияхфиксироватьили откатитьтранзакцию.В свою очередьменеджер ресурсовтакже ведету себя такойжурнал. Следовательно,если имел местосбой в сети, топосле его ликвидациименеджер транзакцийсвязываетсяс вышестоящимменеджеромтранзакцийи запрашиваетего об исходах.После этогоменеджер ресурсовидет на свойменеджер транзакцийи получает унего информациюо том, что делатьс зависшимитранзакциями.Кроме этого,если исходтранзакцииизвестен, DTCпредоставляетвозможность"ручного"разрешениятранзакций,чтобы слишкомдолго не держатьданные блокированными.

MS DTC содержиткомпонентыклиентскойи сервернойнастройки.Установкаклиентскогокомпонентатребуетсятолько в томслучае, еслиданный клиентбудет саминициироватьраспределенныетранзакции,а не использоватьтранзакции,начатые насервернойстороне какbegin distributed transaction. MS DTC достаточнолегок и удобенв настройкеи управлении.Он имеет окна:


• в разныхисточникахон может такженазыватьсяглобальным(global) или корневым(root);

• конфигурации,позволяющеезадать темпобновленияинформации,транзакциикакой давностидолжны показываться,место и емкостьжурнала, статусDTC;

• трассировки,отображающиесообщения отDTC;

• транзакций,отображающиестатус текущихтранзакций:

• статистикипо текущим исуммарнымтранзакциям.


В рассмотренномпримере инициациираспределеннойтранзакциина сторонеклиента мыпроиллюстрировалииспользованиеинтерфейсов,соответствующихстандарту OLETransaction. OLE Transaction выгодноотличаетсяот некоторыхдругих распространенныхстандартовтем, что построенна основе объектноймодели и поддерживаетприложения,работающиеодновременносо многимипотоками. OLETransaction обладаетулучшеннымихарактеристикамипо сравнениюс ранее разработаннымистандартами,лишенными,например, возможностивосстановления(recovery), инициированногоменеджеромресурсов. Темне менее припомощи процессаXA Mapper MS DTC, выполняющегороль переводчикамежду XA и OLE Transaction,обеспечиваетсяопределенноевзаимодействиес продуктами,совместимымисо стандартомX/Open DTP XA. MS DTC может участвоватьв транзакциях,координируемыхмониторамитранзакцийEncina, TopEnd и Tuxedo, для которыхон выглядиткак некоторыйменеджер ресурсов.Стандарт OLETransaction содержитвозможностирасширениядля работы сшироким спектромтранзакционнозащищенныхресурсов, ккоторым могутбыть отнесеныдокументы,образы, очередисообщений идругие видыплохо структурированнойинформации.

Блокировки

MS SQL Server используетследующие типыблокировок:


shared - дляопераций, неизменяющихсодержимоеданных, напримерselect;


update - когдасервер намереваетсяизменить данные,во время непосредственнойзаписи обновленийэтот тип блокировкиизменяетсяна exclusive (для таблицсм.intent);


exclusive - примодификацииданных (insert, update, delete).


Совместимостьблокировокразличных типовприводитсяв табл. 3. Основнымитипами являютсяshared и exclusive. Блокировкутипа update можнорассматриватькак некий механизмдля сочетанияпервых двухтипов блокировокв одной операциив целях предотвращениявзаимногоблокированиятранзакций(deadlock). Как правило,большинствопроцессов,модифицирующихданные, состоятиз двух частей:поиск (чтение)необходимойинформациии внесениеизменений.Заметим, чтопри наличиикластеризованногоиндекса натаблицу операциявставки тожеотносится кподобным процессам- сервер долженсначала отыскатьправильноеместоположениеновых записей.Разумно воизбежаниеизлишней конкуренцииразрешитьдругим транзакциямчитать данныево время первойфазы такогопроцесса. Тогдавозникаетвопрос: зачемвообще вводитьдополнительныйтип блокировкии почему нельзяобойтись первымидвумя? Ответочевиден, еслирассмотретьодновременнонесколько такихпроцессов. Онибудут прекрасноуживаться настадии поиска,но ни один изних не сможетмонопольнозапереть данныедля записи, таккак другие вэто время ихчитают. Дляисключениявзаимной блокировкив MS SQL Server при выполнениипервой фазывводится типблокировкиupdate, который (см.табл. 3) не допускаетаналогичныеблокировкина протяжениипериода своегодействия поотношению кблокированнымим данным.


Тип блокировки

shared

update

exclusive

shared

OK OK X

update

OK X X

exclusive

X X X

Таблица 3.


Уровеньблокировкиможет распространятьсяна:


• запись (дляопераций insert);

• cтраницу- 2-килобайтныйфрагмент данныхили индексов;

• расширение(extent) - 8 последовательныхстраниц, используетсяпри размещенииили высвобождениистраниц (например,в командахcreate/drop или когдаоперация вставкиinsert требует выделенияновых страницпамяти);

• таблицу,включая всевходящие в нееданные и индексы2.


В следующейверсии блокировкауровня записибудет возможнадля всех типовтранзакций.Блокировкауровня записина операциивставки позволяетв первую очередьрешить задачууменьшениявероятностиконкуренциив OLTP-системахс массированнымодновременнымвводом информации(типичный пример- операционныйдень банка),где таблицысодержат тольконекластерныеиндексы иликластерныйиндекс построенпо монотонновозрастающемуключу. По умолчаниюэта опция выключена.В текущей базеданных ее можнозадействоватькомандойsp_tableoption ,'insert row lock', 'true'.

Существуетдиалектическоепротиворечие,с которым навернякасталкивалсякаждый администраторбазы данныхили разработчик.С одной стороны,хочется уменьшитьдо минимумавероятностьстолкновенияинтересовпользователейпри доступек одним и темже ресурсами потому блокироватьвсе на как можноболее детальномуровне. С другой- очень не хочетсяперегружатьменеджер блокировок,который фиксируетинформациюо том, кто наложилблокировку,какого типа,кто ждет, покаона освободитсяи т. д. Например,в MS SQL Server 6.5 каждаяблокировкаобходится в32 байта. Дляразрешенияэтого противоречиясервер умеетавтоматическиповышать уровеньблокировкив случае, еслиблокировокпредыдущегоуровня детализациистановитсяслишком много(lock escalation). "Слишкоммного" - это LEThreshold Maximum в настройкахконфигурациисервера, т. е.максимальнаяпороговаявеличина числастраничныхблокировок,при достижениикоторой происходитэскалация доуровня таблицы.По умолчаниюона равна 200. Дляэтих же целейиспользуетсянастройка LEThreshold Percentage - в относительномвыражении кразмеру таблицы(но не меньше,чем LE Threshold Minimum, чтополезно длянебольшихтаблиц). В перспективевозможна обратнаястратегиядинамическойдеэскалацииуровня блокировки,когда блокируетсязаведомо большийфрагмент данных,чем требуется,но, как толькопоявляетсятранзакция,конкурирующаяза данные внутриданного фрагмента,уровень первойтранзакциибудет автоматическиуменьшен.

Управлениеуровнем изоляциитранзакцийна протяжениивсего соединения(пользовательскойсессии) осуществляетсяпри помощиустановки settransaction isolation level , гдеуровень изоляцииможет приниматьзначения:


read uncommittedсоответствуетуровню изоляции0 стандартаANSI, т. е. простозапрещаетразличнымтранзакциямизменять однии те же данныев одно и то жевремя, но допускаетгрязное инеповторяющеесячтение и фантомы3;

read committed(устанавливаетсяпо умолчанию)соответствуетуровню изоляции1 стандартаANSI, т. е. предотвращаетгрязное чтение;

repeatable read илиserializableсоответствуетуровню 3 по стандартуANSI - предотвращаетгрязное чтение,а также гарантирует,что два оператораselect в разных местаходной транзакциибудут возвращатьодинаковыйрезультат, т.е. исключаетнеповторяющеесячтение и фантомы.

Последний,самый надежныйуровень защитытранзакцийявляется самымнеоптимальнымс точки зрениябыстродействия,так как за всеприходитсяплатить. Дляболее гибкогоуправленияуровнем изоляциидля каждогооператораselect может явнозадаватьсяопция настройки;

nolock то же,что read uncommitted,- дает возможностьчтения грязных(еще не зафиксированных)данных, котораяперекрываетаналогичныепараметрыконфигурациипользовательскойсессии. В оператореselect можно такжеоговоритьпродолжительностьблокировкиданных;

holdlock инструктируетсервер держатьблокировкидо завершениятранзакции(по умолчаниюблокировкиснимаются сразуже по прочтениитребуемыхданных;


Тип и уровеньблокировки:

updlock заставляетприменитьблокировкуupdate вместо обычнойshared, используется,когда следомидет операторupdate, основанныйна прочитанныхзначениях,чтобы запретитьupdate из другихтранзакций;

paglock заставляетсервер прилюбых условияхиспользоватьблокировкиуровня страницы;

tablock принудительноблокируеттаблицу (shared);

tablockx принудительноблокируеттаблицу (exclusive).


Просмотртекущих блокировоквыполняетсяпри помощихранимой процедурыsp_lock или черезвключение флагатрассировки1200 на клиента:dbcc traceon (3604,1200). Такжеполезным являютсяфлаги 1204 и 1205, которыевыдают информациюо cитуацияхвзаимной блокировки(deadlocks). MS SQL Server обладаетвозможностьюавтоматическогообнаруженияdeadlocks как цикловв цепочке блокировок.Он находитпервый процесс,который могбы разорватьцикл, убиваетего и откатываетвсе транзакцииэтого процесса,находившиесяв стадии выполнения.Как правило,им оказываетсятот самый процесс,который запросилблокировку,послужившуюпричинойзацикливания.После этогосервер генерируетсообщение обошибке 1205. Есликлиентскоеприложениеимеет обработчикошибок, отлавливающийошибку 1205, то ономожет предпринятьсоответствующиедействия поисправлениюситуации, иконечныйпользователь,скорее всего,даже не узнает,что имела местовзаимная блокировка.


Надежностьхранения информации

В критическихдля бизнесаприложениях,когда серверСУБД долженбыть постояннодоступен дляклиентов, большинствопрофилактическихработ по поддержкебазы данныхприходитсявыполнятьфактическив режиме on-line. MS SQLServer обладаетвозможностямидинамическогорезервногокопированияданных, т. е. дажекогда эти данныеиспользуютсяи изменяютсяклиентами. Вслучае сбояоборудования,отключенияпитания и т. д.механизмавтоматическоговосстановленияMS SQL Server восстанавливаетвсе базы данныхдо их последнегоцелостногосостояния безвмешательстваадминистратора.Все завершенные,но не отраженныев базе транзакциииз журналатранзакцийприменяютсяк базе данных(это фактическито, что происходитпри событииchekpoint), а незавершенныетранзакции,т. е. те, которыебыли активнымина момент сбоя, вычищаютсяиз журнала.

Как мы ужеотмечали, говоряо симметричнойархитектуре,операции резервногокопированияи восстановлениямогут распараллеливатьсяна несколькопотоков и выполнятьсяодновременно,используяпреимуществаасинхронноговвода/вывода.На каждое резервноеустройствоотводится свойпоток. Параллельноерезервноекопированиеподдерживаетдо 32 одновременныхрезервныхустройств(backup devices), что позволяетбыстро создаватьстраховочныекопии баз данныхдаже оченьбольшой емкости.Возможностьрезервногокопированияи восстановленияотдельныхтаблиц, о чеммы упоминали,рассматриваяTransact-SQL, позволяетэкономить местои время, не выполняякопированиевсей базы радитолько некоторыхее объектов.Однако резервноекопированиеотдельнойтаблицы требуетналожения нанее блокировкиexclusive в отличиеот резервногокопированиявсей базы илижурнала транзакций,которые могутвыполнятьсянезависимоот степениактивностипользователей.Резервнымкопиям можетбыть назначенпредельныйсрок храненияили дата утратыактуальности,до наступлениякоторой место,занятое наустройствеэтими копиями,не может использоватьсядля размещениядругих резервныхкопий приинициализацииустройства.В качестверезервныхустройств могуттакже применятьсявременныеустройства,не входящиев состав базыи не имеющиезаписей в системнойтаблице sysdevices:


DECLARE@tomorrow char(8)

SELECT @tomorrow= CONVERT(char(8), DATEADD(dd, 1, GETDATE()) , 1)

DUMP DATABASEpubs

TO DISK ='\ntalexeysh\disk_d\sql_experiments\pubs.dmp'

WITHINIT, EXPIREDATE=@tomorrow, STATS


Для небольшойбазы данныхее журнал транзакцийобычно хранитсяна том же устройстве,что и сама база,и архивируетсявместе с ней.Журналированиетранзакцийведется попринципу write-ahead,что означает,что любое изменениесначала отражаетсяв журнале транзакцийи лишь потомпопадает собственнов базу. В случаенахожденияжурнала транзакцийна отдельномустройствесуществуетвозможностьотдельногорезервногокопированияжурнала транзакций.Как правило,резервноекопированиебазы данныхорганизуетсяс меньшей частотой,чем журналатранзакций.Например, сохранениежурнала транзакцийвыполняетсяежедневно, астраховая копиявсей базы можетделаться разв неделю, таккак архивированиежурнала транзакцийпроисходитзначительнобыстрее повремени и занимаетменьше места,чем дамп целойбазы. В отличиеот резервированиябазы данныхдамп журналатранзакцийочищает егонеактивнуючасть, т. е. всезавершившиеся(зафиксированныеили абортированные)с момента последнегодампа транзакции,если тольконе использованаопция NO_TRUNCATE. КомандаDUMP TRANSACTION TRUNCATE_ONLY, очищающаяжурнал транзакций,полезна в случаеего переполнения,которое можноконтролировать,например, операторомDBCC SQLPERF (LOGSPACE). Если степеньпереполненияжурнала оченьвысока, можнопри его очисткеотказатьсяот журналированияфакта самогоэтого события:DUMP TRANSACTION NO_LOG. Если резервноекопированиетранзакцийне представляетинтереса, можновключить опциюочистки последнихзавершенныхтранзакцийв базе по наступлениюсобытия checkpoint. Cмыслмеханизмаcheckpoint состоит впериодическойзаписи данныхиз кэша на диск,чтобы не допускатьгрязных данных.Такого родасобытия постоянногенерируютсяMS SQL Server или возникаютпо инициативепользователя.Включеннаяопция truncate log on checkpointгарантируетвыполнениес определеннойчастотой обработчикомсобытия действий,приблизительноэквивалентныхкоманде DUMP TRANSACTIONTRUNCATE_ONLY.

При восстановлениижурнала транзакцийсоответствующиетранзакцииприменяютсяк базе данных.Это означает,что если в началенедели быласделана резервнаякопия всейбазы, а потомежедневноархивировалисьтранзакцииза каждый день,то при необходимостивосстановленияподнимаетсясостояние базына начало неделии на него последовательнонакатываютсядампы журналатранзакцийза все дни,предшествующиемоменту восстановления.MS SQL Server 6.5 имеет возможностьвосстановленияданных из журналатранзакцийна произвольныймомент времени(разумеется,отраженныйв журнале) припомощи командыLOAD TRANSACTION STOPAT или в окнеdatabase backup and restore выборомопции until time. Всесодержащиесяв этом дампетранзакции,отмеченныезавершившимисяпосле этогомомента, будутоткачены.

Возможностьпланированиязадач резервногокопированияво времени иотсылки сообщенийпо e-mail в случаеуспешного/неуспешногозавершениярассматриваласьнами при обсужденииSQL Executive.

MS SQL Server 6.5 предусматриваетвозможностьзеркалированияустройств,переключенияна зеркальныеустройствав качествеосновных, выключениязеркалированияи уничтожениязеркальногоустройстватакже "на лету",т. е. без остановкиштатной работысервера пообслуживаниюпользовательскихзапросов.Зеркалированиеи дуплексированиеустройств дляработы с MS SQL Serverможет бытьтакже выполненосредствамиWindows NT, а также нааппаратномуровне (поддержкаразличныхRAID-систем и т. д.).По-видимому,следует предполагать,что реализацияпервого этапакластернойтехнологииWolfPack будет поддерживатьMS SQL Server 6.5 в отказоустойчивыхкластерах издвух узлов.Появлениеследующейверсии MS SQL Server должнообеспечитьработу серверовв кластере какединого виртуальногосервера.

Transfer Manager используетсядля экспорта/импортаобъектов иданных БД наMS SQL Server между разнымиаппаратнымиплатформами,например междупроцессорамиIntel и Alpha, а такжемежду разнымиверсиями MS SQLServer, в частностииз более раннихв более поздниеили междуравноценными(имеются в виду4.х и 6.х). Оченьчасто проектированиеобъектов базыведется с помощьюразличныхграфическихсредств, нопроектнаядокументацияможет требоватьструктуруобъектов сточностью дооператоровDDL. Для полученияскриптов, описывающихсоздание отдельногообъекта базыданных, можноиспользоватькоманду transfer изконтекстногоменю объектаили выбратьсоответствующийкласс и имяобъекта в TransferManager. Кроме этого,содержимоеданных можетбыть выгружено/загруженопри помощиутилиты bcp (см.табл. 1).


Тиражирование

Наличиеразвитогомеханизматиражированияв любой серьезнойсистеме управлениябазами данныхобуславливаетсянеобходимостьюприближенияданных к местамих непосредственногопотребления,что являетсяособенно важнымфактором припостроениивитрин данныхв системахпринятия решений,разгрузкиприложенийот избыточныхфункций чтения/поискапри созданииотчетов и т. д.Созданиераспределенныхприложенийс использованиемсредств тиражированияположительносказываетсяна относительнойавтономиисайтов, повышениимасштабируемостии производительности.Традиционнов построениираспределенныхсистем данныхсуществуютдва основныхподхода. Одиниз них основанна плотнойцелостностиданных (loose consistency) ирассматривалсянами в пункте,посвященномMS Distributed Transaction Coordinator. Протоколдвухфазнойфиксации гарантируетидентичностьданных в любоймомент временина всех узлахсети, однаконеобходимоиметь в виду,что этот подходтребует наличиявысокоскоростныхканалов передачиданных и постояннойдоступностикаждого узла.Другой подход,основанныйна слабой целостности(loose consistency), допускает,вообще говоря,некоторыйвременнойинтервал междувнесениемизменений воригинал и ихотражениемв образе. Приложения,основанныена принципеслабой целостности,являются значительноменее чувствительнымик доступностиузлов, а такжепропускнойспособностии надежностиканалов передачиданных. Тиражированиев MS SQL Server построенона использованииименно второгоподхода.

Основнымидействующимилицами в процессетиражированияслужат издатель(publisher), дистрибьютор(distributor) и подписчик(subscriber). Посколькутиражированиеявляется неотъемлемойсоставнойчастью MS SQL Server, последнийможет выступатьв роли каждогоиз них. Конфигурированиеи управлениекаждой рольюосуществляетсяиз SQL Enterprise Manager черезуже знакомыенам SQL-DMO или с помощьюоператорови хранимыхпроцедур языкаTransact-SQL. Репликационнойединицей вплане распространенияи подпискиявляется публикация(publication). Публикациясостоит изодной или несколькихстатей (articles). Статьейпубликацииназываетсяотдельнаятаблица илиее вертикальныйи/или горизонтальныйфрагмент.Вертикальноефрагментированиеосуществляетсявыбором соответствующихполей таблицы,горизонтальное- при помощиусловия where илиспециальнойпроцедурыгоризонтальнойфильтрации(CREATE PROCEDURE - FOR REPLICATION). Таблицаобязана иметьпервичный ключ.Как только наиздателе созданыстатьи, всетиражируемыеобъекты отмечаютсяспециальнымпризнаком водном из полейсистемнойтаблицы sysobjects. Кромеэтого, в тиражируемойбазе ведетсяеще три справочныетаблицы. Syspublications вотдельнойстроке хранитинформациюо каждой новойпубликации.Она связанаотношениемодин-ко-многимс таблицейsysarticles, содержащейинформациюо статьях и ихпринадлежностьюпубликациям.Наконец, последняя,в свою очередь,связана отношениемодин-ко-многимс таблицейsyssubscriptions, где содержитсяинформацияо том, какимподписчикамадресованакаждая статья.

Тиражированиев MS SQL Server основанона журналетранзакций(log-based). На каждуютиражируемуюбазу данныхна дистрибьюторезапускаетсяпроцесс подназванием logreader, который читаетжурнал транзакцийна издателе,выбирает оттудавсе завершенныетранзакции,помеченныек тиражированиюи передает ихдистрибьютору,на который стого моментавозлагаетсявся дальнейшаяответственностьпо доведениюэтих транзакцийдо подписчика.Издатель, такимобразом, высвобождаетсяот всякой заботыпо распространениютранзакцийи не расходуетна это своиресурсы. Каждыйподписчикобслуживаетсяотдельнымпотоком дистрибьютора.Клиент, первымзапустившийsp_replcmds на публикуемойбазе данных,рассматриваетсяею как log reader, всеостальныепопытки этосделать вызовутсообщение обошибке. Процедураsp_repltrans позволяетполучить списокзавершенныхтранзакцийбазы данных,еще не переданныхдистрибьютору(идентификаторряда, страницаи отметка временипоступления).sp_replcmds содержитеще информациюо самих командах,связанных сэтой транзакцией,и к какой статьепубликацииона относится.Log reader читает этиоперации, определяетсоответствующиеим sql-командыи пишет их вбазу данныхраспространения(distribution database) на дистрибьюторе.База данныхраспространенияимеет таблицыMSjobs, содержащуюинформациюо транзакцияхдля тиражирования,связанную какодин-ко-многимс таблицейMSjob_commands, котораяразбиваеткаждую транзакциюна отдельныекоманды. Каждаякоманда должнабыть переданаопределенномуподписчику,что определяетсяв таблицеMSsubscriber_jobs. На издателепрочитанныетранзакцииотмечаютсякак переданныена распространение,и только послеэтого они могутбыть оттудауничтоженыпри резервномкопированиижурнала транзакций(см. выше). Например,процедураsp_repldone, определяятранзакциюв журнале базыиздателя поряду и странице,помечает еекак распространенную.Процесс синхронизации(sync task), один на публикацию,всякий раз припоявлениинового подписчикасоздает мгновенныйснимок (snapshot) данныхна издателе,подлежащихтиражированиюэтому подписчику.При этом создаютсяфайлы схемданных и, собственно,содержания(bcp-типа), которыебудут переданыподписчикупри распространениидля обеспеченияпервоначальнойидентичностиданных.

На дистрибьюторесуществуютеще два видапроцесса:распространениеи очистка. Задачараспространениясоздается длякаждой пары"тиражируемаябаза/подписавшаясябаза", а задачаочистки - дляпары "издатель/подписчик".Распространение(distribution task) применяетпрочитанныеиз базы данныхраспространенияsql-команды к базеданных подписчика.Процесс очистки(cleanup task) уничтожаетвсе выполненныеработы (т. е.транзакции)из базы данныхраспространениячерез некоторыйнастраиваемыйинтервал (retentionperiod) после того,как они былидоведены доподписчика.Задача очисткиможет бытьсоздана вручнуюпри помощиsp_addsubscriber, a задачараспространения- как sp_addsubscription (sp_subscribe). Несмотряна то что организациявсего процессатиражированияможет бытьзаписана вкодах при помощивызовов специальныххранимых процедур,эта чертаиспользуетсяна практикекрайне редкои главным образомв целях отладки.В обычных ситуацияхнастройка иуправлениетиражированиемосуществляютсяиз графическойсреды SQL Enterprise Manager ипланировщиказадач SQL Executive.

Все задачирепликациина дистрибьютореработают подуправлениемSQL Executive (msdb...systasks) и под егоконтекстомбезопасности.Процесс выполнениялюбой из нихможно контролироватьв окне task history. Дополнительнымсредствомконтроля служитSQL Performance Monitor, куда передаетсянеобходимаястатистическаяинформацияо тиражировании(sp_replcounters). Соединениедистрибьюторас издателемпроисходитна основе DB-Library,а с подписчиком- через ODBC. Такимобразом, в качествеподписчиковMS SQL Server может выступатьширокий спектрODBC-достижимыхресурсов, ккоторым, например,относятсядругой Access, Sybase, Oracle,DB2 и т. д. Тиражированиев MS SQL Server основанона интегрированномрежиме безопасности(см. Безопасность),следовательно,между дистрибьютороми подписчикомдолжны бытьустановленыдоверительныесоединения(trusted connections) с использованиемпоименованныхканалов (named pipes) илимультипротокола.Если серверынаходятся вразных доменах,между доменамидолжны бытьустановленыдвусторонниедоверительныеотношения. Вслучае небольшихобъемов тиражируемыхданных издательчасто совмещаетс дистрибьюторомна одном MS SQL Server.Отметим также,что серверы,участвующиев тиражировании,должны использоватьодни и те жекодовые страницы.

MS SQL Server обладаетобширнымивозможностяминастройкипроцессатиражирования.Мы уже упоминалио горизонтально-вертикальныхфрагментахтаблиц в качествестатей публикаций.Отметим, чтодля каждойстатьи имеетсявозможностьназначить ктиражированиютолько необходимыетипы транзакций.Например, можнозапретитьпередачу подписчикамтранзакциитипа "delete" в рамкахданной статьи.Более того, накаждый типтранзакцийможно настроитьвид пользовательскихдействий настороне подписчика.Например, припоступленииподписчикутранзакцийвставки и удаленияони будутотрабатываться,как обычно, апо приходетранзакциитипа "update" наподписчикебудет вызыватьсянекотораяхранимая процедура.Некоторыеограниченияв тиражируемыхданных бываетнецелесообразнопередаватьподписчику.В этом случаеони помечаютсякак not for replication. Процесссинхронизациикак самый дорогойв смысле трафикапредусматриваетвозможностьручного выполнениясинхронизацииили полногоотказа отсинхронизацииданных и передачуисключительнотранзакций.Существуети обратнаявозможность:подписчикус определеннойпериодичностьюбудут поступатьтолько мгновенныеснимки данных,а не их изменения.

В зависимостиот административногоакцента MS SQL Serverпозволяеторганизоватьподписку настороне издателялибо на сторонеподписчика.Первый видподписки (pushsubscription) используетсяпри централизованномраспространении,когда подпискисоздаются"выталкиванием"статей на теили иныесерверы-подписчики,которые могутне иметь своихадминистраторов.Второй вид(pull subscription) предполагаетизвестнуюавтономиюсервера-подписчика,администраторкоторого определяет,какие публикацииему принимать.По умолчаниювсе публикациисоздаются состатусом безопасности"неограничено",они видны и наних могут подписатьсялюбые зарегистрированныесерверы подписки.Ограниченнаяпубликацияможет бытьвыписана толькотеми серверами,которые имеютна это соответствующиеправа.


Вопросыбезопасностидоступа

Как мы ужеотмечали, говоряо преимуществахинтеграциис операционнойсистемой, MS SQLServer используетв своей работесервисы безопасностиWindows NT. Напомним,что Windows NT на сегоднясертифицированапо классамбезопасностиС2/Е3. MS SQL Server можетбыть настроенна работу водном из трехрежимах безопасности.Интегрированныйрежим предусматриваетиспользованиемеханизмоваутентификацииWindows NT для обеспечениябезопасностивсех пользовательскихсоединений.В этом случаек серверу разрешаютсятолько трастовые,или аутентифицирующие,соединения(named pipes и multiprotocol). Администраторимеет возможностьотобразитьгруппы пользователейWindows NT на соответствующиезначения login id MSSQL Server при помощиутилиты SQL SecurityManager. В этом случаепри входе наMS SQL Server login name и пароль,переданныечерез DB-Library илиODBC, игнорируются.Стандартныйрежим безопасностипредполагает,что на MS SQL Server будутзаводитьсясамостоятельныеlogin id и соответствующиеим пароли. Смешанныйрежим используетинтегрированнуюмодель приустановлениисоединенийпо поименованнымканалам илимультипротоколуи стандартнуюмодель во всехостальныхслучаях.

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 SQLServer достаточноподробно освещалисьв литературекак по отношениюк средствамразработки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 DatabaseConnector (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. WebAssistant имеет интерфейсмастера (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 HomePage', @whentype=9,


а на соответствующуютаблицу "вешаем"триггер


if exists(select * from sysobjects where id = object_id('dbo.tr') and sysstat& 0xf = 8)

droptrigger dbo.tr

go

create triggertr on dbo.rates for insert,update,delete

as execsp_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.Например, публикациярезультатазапроса можетбыть выполнена,как:


c.Open"rates","sa",""

setRS=c.Execute("select * from rates")%>

quot;-//IETF//DTD HTML//EN">

content="text/html;charset=windows-1251">

Курсывалют

Курсывалют