ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    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-сторінка даних з бази, 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 був обраний більш відкритий підхід: сервер був розроблений як Спільна з набором об'єктів управління, які могли бути викликані з будь-якої мови програмування, що підтримує технологію СОМ (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 ...");< br> 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 вигідно відрізняється від деяких інших поширених стандартів тим, що побудований на основі об'єктної моделі та підтримує програми, що працюють однов
         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status