Чтение RSS
Рефераты:
 
Рефераты бесплатно
 

 

 

 

 

 

     
 
MS SQL Server 6.5
СОДЕРЖАНИЕ:
Введение
Архитектура MS SQL Server 6.5
Производительность
Распределенная среда управления
SQL-DMO (Distributed Management Objects)
Интеграция с электронной почтой
Характеристики языка Transact-SQL
MS Distributed Transaction Coordinator (DTC) и распределенные транзакции
Блокировки
Надежность хранения информации
Тиражирование
Вопросы безопасности доступа
Некоторые вопросы использования MS SQL Server в Internet/intranet-приложениях
Заключение
Список литературы:


Введение
Коль скоро этот обзор посвящен серверу баз данных, невозможно не упомянуть о том, что создание машин для хранения и управления данными является, пожалуй, одним из самых значимых достижений человечества со времени изобретения письменности. Как известно, в начале было слово. Слово, ознаменовавшее переход от рефлексии в восприятии окружающего мира к абстрактному мышлению. Возможно, именно этот переворот в сознании нарушил первозданную гармонию и противопоставил человека природе. Как бы то ни было, при всей ограниченности и имманентной неполноте вербального общения именно слово служит основным способом передачи информации по сравнению, например, с музыкой, танцем, живописью, архитектурой и т. д. В рамках той парадигмы, в которой сегодня работает наш мозг, представляется иррациональной возможность просветления, озарения, т. е. мгновенного получения необходимых знаний. Остается процесс постепенного познания действительности, и для этого человек вынужден был научиться сохранять информацию, полученную на предыдущих этапах. Ключевым моментом стало возникновение знакового письма, которое, несмотря на большие или меньшие потери, смогло обеспечить должное хранение формализованных знаний. Как утверждают антропологи, за последние несколько десятков тысяч лет физиологические параметры homo sapiens практически не изменились - образно говоря, мы не стали лучше думать или глубже чувствовать. Единственное, что отличает современного человека от его предшественников - это объем накопленной информации и усовершенствованные способы ее обработки. Именно владение информацией обеспечило прогресс человеческого общества, позволив каждому последующему поколению опереться на объем знаний и опыта, собранный предшественниками, и в общем случае не изобретать заново велосипед.
Нелинейный рост во времени совокупной базы знаний цивилизации вызвал к жизни прогрессирующую эволюцию средств хранения, обработки и представления информации как инструментов умножения ее интеллектуальной мощи. В этом ряду применение последних достижений в области компьютерных технологий сравнимо по степени важности с изобретением печатного станка или даже его превосходит. Наблюдается и обратная зависимость: чем более изощренные средства используются для обработки информации, чем быстрее растут ее объемы, тем большее значение она приобретает практически во всех аспектах человеческой деятельности, в частности в экономике. Роль информации, как товара или предмета труда, носит совершенно особый характер. Информация сравнительно легко копируется без ущерба для своих потребительских свойств. В отличие, например, от тонны нефти, одна и та же информация может быть потреблена неоднократно, в том числе одновременно различными участниками товарных отношений. Все мы еще с уроков обществоведения усвоили, что труд является основным источником создания материальных благ. Однако даже у авторов учения о прибавочной стоимости можно встретить мысль о том, что по мере развития науки главная доля прироста общественного благосостояния будет обуславливаться ускоренными темпами обновления основного капитала в силу роста технического прогресса. Многие современные западные экономисты склонны считать, что человечество вступило в постиндустриальный период своего развития, основным средством производства в котором будет выступать информация и по отношениям собственности на которую в обществе уже начал определяться новый правящий класс - когнитариат. Можно принимать или оспаривать эти выводы, очевидно одно - в деятельности современного предприятия информация становится одним из важнейших производственных ресурсов, выделяясь в самостоятельный фактор успешного бизнеса из традиционных составляющих, таких как кадры, клиенты, каналы сбыта, технологии. Наконец, информация не может потребляться непосредственно: например, чтобы усвоить текст, нужно, как минимум, уметь читать. Отсюда с ростом значения информации возрастает роль средств ее обработки. Если зачастую стоимость информационной базы корпорации оказывается выше производимой ею продукции и услуг, если информация - это всегда деньги (и в общем-то немалые), то неудивительно, что рынок СУБД на сегодня оценивается в десятки миллиардов долларов.
Хотя предки нынешних СУБД существовали на мэйнфреймах еще до появления в 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 позволяет MS SQL 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, на них распространяются соответствующие функции контроля операционной системы, включая защиту памяти, правила доступа к оборудованию и планирование выполнения потоков во времени (thread scheduling). Это предоставляет улучшенные способности к масштабированию при росте числа одновременно работающих пользователей, динамическую балансировку при загрузке процессоров и повышенную надежность, так как пользовательские запросы, исполняющиеся на разных потоках, защищены друг от друга. Несмотря на то что пул соединений ограничен 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 при высоких требованиях к скорости обработки.

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

Название Краткое описание Интерфейс Исполняемый файл SQL Enerprise Manager Мощный централизованный инструмент полного управления серверами в масштабах предприятия, включая базы данных, их объекты, предупреждения (alerts), спланированные во времени задачи, тиражирование и запросы. Графический sqlew.exe SQL Executive Локальный административный агент для планирования задач, управления предупреждениями и мониторинга активности MS SQL Server. Может быть вызван из SQL Enterprise Manager. Командная строка sqlexec.exe Sqlmaint Определяет план необходимых рутинных действий по поддержке базы данных: регулярная проверка целостности, резервное копирование, перестройка индексов и т. Д., который впоследствии будет выполняться автоматически. Аналогичный мастер включен в SQL Enterprise Manager. Командная строка sqlmaint.exe SQL Service Manager Sqlservr Используется для запуска, останова, приостановки и возобновления деятельности сервера и агента SQL Executive. Сам MS SQL Server может быть запущен из командной строки, аргументы которой определяют его текущую настройку. Графический, Командная строка sqlmgr.exe sqlservr.exe ISQL/w Средство построения запросов, анализа плана выполнения, просмотра статистической информации и одновременного управления многими запросами в различных окнах. Графический isqlw.exe Isql Средство интерактивного ввода операторов Transact-SQL, вызова системных процедур, запуска скриптов. Командная строка isql.exe SQL Security Manager Управление интегрированным режимом безопасности. Графический sqsecmgr.exe SQL Trace Средство мониторинга пользовательской активности. Позволяет отлавливать операторы Transact-SQL, вызовы процедур, инициируемые каждым клиентом, в реальном времени или записывать в журнал. Обладает возм-стями фильтрации. Графический sqltrace.exe SQL Performance Monitor Использует для мониторинга событий и сбора статистики по MS SQL Server стандартный perfmon.ехе Windows NT на основе предоставляемого им списка объектов и счетчиков. Графический sqlalrtr.exe SQL Alerter Интеграция механизма предупреждений с соответствующими службами Windows NT Performance Monitor. Командная строка   SQL Transfer Manager Управление переносом данных и объектов с различных платформ SQL Server. Графический sqlxfr.exe BCP (bulk copy) Перенос данных между MS SQL Server и файлами операционной системы (например, текстовыми). Командная строка bcp.exe SQL Setup Применяется для начальной установки, удаления, upgrade, инсталляции дополнительных компонентов и изменения настроек в конфигурации: поддержки сетевых протоколов, изменения языка, выбора кодовой страницы и порядка сортировки, модели безопасности, а также для перестройки базы данных master. Графический setup.exe Language installation Установка поддержки дополнительной языковой информации (например, локализованных сообщений). Используется в setup.exe. Командная строка langinst.exe Sort order installation Установка кодовой страницы символов, чувствительности к регистру и отношения порядка над символами. Используется в setup.exe. Командная строка charset.exe Check upgrade Используется MS SQL Server во время upgrade для проверки совместимости существующих пользовательских баз. Командная строка сhkupg65.exe SQL Client 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 для соединения с сервером.

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

SQL-DMO (Distributed Management Objects)
В качестве промежуточного слоя в архитектуре распределенной среды управления выступают распределенные объекты управления (DMO), которые играют исключительно важную роль в концепции построения MS SQL Server и потому заслуживают более тщательного рассмотрения. По мере того как приложения приобретали все менее централизованный характер, поддержка распределенных баз данных становилась одним из самых актуальных вопросов построения современных СУБД. Мы уже имели возможность убедиться, что SQL Enterprise Manager позволяет осуществлять удобное администрирование распределенных серверов из единого центра, однако наряду с этим хотелось бы иметь возможность программного обращения к административным функциям из высокоуровневых языков. Обычно использовавшимся для этих целей в других СУБД сценарным языкам типа REXX или PERL недоставало функциональных возможностей, библиотек классов, отладчика и т. д.
Поэтому в случае с Microsoft SQL Server был избран более открытый подход: сервер был разработан как cовместно с набором объектов управления, которые могли быть вызваны из любого языка программирования, поддерживающего технологию СОМ (Component Object Model). MS SQL Server 6.5 предоставляет интерфейс OLE Automation с более, чем 70 объектами, обладающими 1500 свойствами.
Это означает, что фактически любая из перечисленных нами в предыдущем пункте административных задач, включая операции над базами данных, ограничениями (constraints), триггерами, таблицами, представлениями, полями, индексами, пользователями, группами, публикациями и пр., может быть оформлена как вызов соответствующего метода соответствующего объекта и выполнена (при наличии прав доступа) из Visual Basic, Visual C++, Visual J++, Visual FoxPro и т. д. Как и для всякого OLE Automation Server, при распространении приложения, использующего вызовы 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")
?
for each oColumn in oSQLServer. Databases("mydb").Tables("anytable").Columns
?? padc(oColumn.Name,oColumn. Length)+' '
next
for i=1 to oQueryResults.Rows
?
for j=1 to oQueryResults.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), если происходит попытка изменить какие-либо важные значения в базе данных. Приведенная ниже хранимая процедура осуществляет сканирование ящика входящих сообщений и запись параметров, поступивших сообщений в таблицу.

create procedure scaninbox as
declare @msg_id varchar(64), @originator varchar(255), @recipients varchar(255)
declare @cc_list varchar(255), @subject varchar(255), @date_received varchar(255)
declare @msg_body varchar(255)

truncate table mysqldb..inbox
while (1=1) begin
exec master..xp_findnextmsg @msg_id=@msg_id output
if @msg_id is null break
exec master..xp_readmail
@msg_id=@msg_id,
@originator=@originator output,
@recipients = @recipients output,
@cc_list=@cc_list output,
@subject=@subject output,
@date_received = @date_received output,
@message=@msg_body output,
@suppress_attach='true',
@peek='false'
insert into mysqldb..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, Stored procedure
Таблица 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 представляет собой достаточно удобный способ работы с распределенными данными без необходимости внесения изменений в клиентскую часть приложения.

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

HRESULT hr; ITransactionDispenser *pTxDispenser;
hr = DtcGetTransactionManager(
NULL,
// имя хоста DTC, NULL
// означает данный хост
NULL,
// имя менеджера транзакций
IID_ITransactionDispenser,
// требуемый интерфейс
0,
// зарезервировано
0,
// зарезервировано
(void *)NULL,
// зарезервировано
(void **)&pTxDispenser);

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

ITransaction *pTx;
= pTxDispenser->BeginTransaction (
NULL,
// управляющий интерфейс
ISOLATIONLEVEL_BROWSE,
// уровень изоляции
0,
// флаги изоляции
NULL,
// зарезервировано
&pTx);
// Ptr на объект "транзакция"
видно из примера, приложение начинает распределенную транзакцию, вызывая метод BeginTransaction объекта "первичный менеджер транзакции". После этого оно может работать с менеджерами ресурсов. Первое обращение к менеджеру ресурсов из приложения однозначно идентифицирует текущую транзакцию. Менеджеры ресурсов, участвующие в данной транзакции, должны прописаться в объекте "транзакция" при помощи менеджеров транзакций.

RETCODE rc; HDBC hSrv1, hSrv2;•
= SQLSetConnectOption( hSrv1, SQL_COPT_SS_ENLIST_IN_DTC, pTx);
= SQLSetConnectOption( hSrv2, SQL_COPT_SS_ENLIST_IN_DTC, pTx);

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

DbExecSQL(hSrv1,"INSERT INTO...");
DbExecSQL(hSrv2,"INSERT INTO..."); ...
hr=pTx->Commit(0,0,0);•hr=pTx->Release()
Инициация распределенных транзакций сервером имеет ряд дополнительных преимуществ по сравнению с только что рассмотренной инициацией на стороне клиента. К ним относятся меньшие сетевые затраты при управлении транзакциями, а также то, что ошибка на клиенте не "подвешивает" транзакции в состоянии in-doubt. Кроме того, вызовы Transact-SQL достаточно просты в использовании. При явном определении все вызовы удаленных процедур наследуют контекст распределенной транзакции.

DISTRIBUTED TRANSACTION
INSERT INTO ACCOUNTS VALUES (100,20)
EXEC RMTBRANCH.ACCOUNTS.DBO.DEPOSIT
100,20
COMMIT TRANSACTION
неявном определении при помощи установок sp_configure "remote proc trans", 1 (уровень сервера) или set remote_ procedure_transactions on (уровень сессии) MS SQL Server по умолчанию рассматривает локальные транзакции, начатые begin transaction, как распределенные с подключением DTC, если в них содержатся вызовы удаленных хранимых процедур.
Корректное завершение транзакции выполняется при помощи протокола двухфазной фиксации. Когда приложение вызывает метод commit, менеджер транзакций оповещает зарегистрировавшиеся менеджеры ресурсов подготовиться к фиксации данной транзакции, и, после того как все они известили о своей готовности, менеджер транзакций рассылает широковещательное сообщение зафиксировать транзакцию. Если хотя бы один менеджер ресурсов не сообщил о готовности фиксировать транзакцию, она повсеместно откатывается. После сообщения о готовности менеджер ресурсов пребывает в состоянии сомнения (in-doubt) относительно общего исхода. Так как менеджеры ресурсов регистрируются в транзакции, то менеджеры транзакций имеют возможность отслеживать все их операции и хранят журналы о решениях фиксировать или откатить транзакцию. В свою очередь менеджер ресурсов также ведет у себя такой журнал. Следовательно, если имел место сбой в сети, то после его ликвидации менеджер транзакций связывается с вышестоящим менеджером транзакций и запрашивает его об исходах. После этого менеджер ресурсов идет на свой менеджер транзакций и получает у него информацию о том, что делать с зависшими транзакциями. Кроме этого, если исход транзакции известен, DTC предоставляет возможность "ручного" разрешения транзакций, чтобы слишком долго не держать данные блокированными.
DTC содержит компоненты клиентской и серверной настройки. Установка клиентского компонента требуется только в том случае, если данный клиент будет сам инициировать распределенные транзакции, а не использовать транзакции, начатые на серверной стороне как begin distributed transaction. MS DTC достаточно легок и удобен в настройке и управлении. Он имеет окна:
в разных источниках он может также называться глобальным (global) или корневым (root);
конфигурации, позволяющее задать темп обновления информации, транзакции какой давности должны показываться, место и емкость журнала, статус DTC;
трассировки, отображающие сообщения от DTC;
транзакций, отображающие статус текущих транзакций:
статистики по текущим и суммарным транзакциям.
рассмотренном примере инициации распределенной транзакции на стороне клиента мы проиллюстрировали использование интерфейсов, соответствующих стандарту OLE Transaction. OLE Transaction выгодно отличается от некоторых других распространенных стандартов тем, что построен на основе объектной модели и поддерживает приложения, работающие однов
 
     
Бесплатные рефераты
 
Банк рефератов
 
Бесплатные рефераты скачать
| Интенсификация изучения иностранного языка с использованием компьютерных технологий | Лыжный спорт | САИД Ахмад | экономическая дипломатия | Влияние экономической войны на глобальную экономику | экономическая война | экономическая война и дипломатия | Экономический шпионаж | АК Моор рефераты | АК Моор реферат | ноосфера ба забони точики | чесменское сражение | Закон всемирного тяготения | рефераты темы | иохан себастиян бах маълумот | Тарых | шерхо дар борат биология | скачать еротик китоб | Семетей | Караш | Influence of English in mass culture дипломная | Количественные отношения в английском языках | 6466 | чистонхои химия | Гунны | Чистон | Кус | кмс купить диплом о language:RU | купить диплом ргсу цена language:RU | куплю копии дипломов для сро language:RU
 
Рефераты Онлайн
 
Скачать реферат
 
 
 
 
  Все права защищены. Бесплатные рефераты и сочинения. Коллекция бесплатных рефератов! Коллекция рефератов!