Москва · СанктПетербург · Нижний Новгород · Воронеж РостовнаДону · Екатеринбург · Самара · Новосибирск Киев · Харьков · Минск
2006
Александр Владимирович Волоха
Microsoft SQL Server 2005. Новые возможности
Заведующий редакцией Руководитель проекта Литературный редактор Художник Корректор Верстка
А. Кривцов В. Шрага Е. Бочкарева Л. Адуевская Н. Солнцева Р. Гришанов
ББК 32.973.233-018 УДК 004.65 Волоха А. В. В68
Microsoft SQL Server 2005. Новые возможности. — СПб.: Питер, 2006. — 304 с.: ил.
ISBN 5-469-01197-6 Книга «Microsoft SQL Server 2005. Новые возможности» посвящена новой версии известного программного продукта для управления базами данных от компании Microsoft. В ней детально освещаются вопросы выбора редакции программного обеспечения, установки, администрирования, использования сервера баз данных и сервисов, поставляемых в различных редакциях. Описаны сервисы нотификации, отчетов, аналитики, интеграции, а также брокер сервисов — новый компонент SQL Server. В книге уделено значительное внимание средствам разработки и программированию для SQL Server. Детально рассмотрены средства для интеграции со средой разработки Visual Studio 2005. Описание возможностей программного продукта подкреплено значительным количеством примеров и их детальным анализом.
© ЗАО Издательский дом «Питер», 2006 Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги.
ISBN 5-469-01197-6
ООО «Питер Принт», 194044, Санкт-Петербург, Б. Сампсониевский пр., 29а. Лицензия ИД № 05784 от 07.09.01. Налоговая льгота — общероссийский классификатор продукции ОК 005-93, том 2; 95 3005 — литература учебная. Подписано к печати 20.12.05. Формат 70×100/16. Усл. п. л. 24,51. Тираж 3000. Заказ Отпечатано с готовых диапозитивов в ФГУП «Печатный двор» им. А. М. Горького Федерального агентства по печати и массовым коммуникациям. 197110, Санкт-Петербург, Чкаловский пр., 15.
Êðàòêîå ñîäåðæàíèå
Ââåäåíèå . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Ãëàâà 1. Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005 . . 19 Ãëàâà 2. Àäìèíèñòðèðîâàíèå SQL Server 2005 . . . . . . . . . . . . . . 45 Ãëàâà 3. Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ . . . . . . 67 Ãëàâà 4. Áðîêåð çàïðîñîâ SQL Server . . . . . . . . . . . . . . . . . . 94 Ãëàâà 5. Ñåðâèñû àíàëèòèêè . . . . . . . . . . . . . . . . . . . . . . 110 Ãëàâà 6. Ñåðâèñû èíòåãðàöèè . . . . . . . . . . . . . . . . . . . . . 133 Ãëàâà 7. Ñåðâèñû íîòèôèêàöèè . . . . . . . . . . . . . . . . . . . . 160 Ãëàâà 8. Ñåðâèñû îò÷åòîâ . . . . . . . . . . . . . . . . . . . . . . . 180 Ãëàâà 9. Ñðåäñòâà âîññòàíîâëåíèÿ äàííûõ
. . . . . . . . . . . . . . 203
Ãëàâà 10. Ïðîãðàììèðîâàíèå äëÿ SQL Server . . . . . . . . . . . . . . 220 Ãëàâà 11. ßçûê XML è SQL Server . . . . . . . . . . . . . . . . . . . . 250 Ãëàâà 12. Áåçîïàñíîñòü . . . . . . . . . . . . . . . . . . . . . . . . . 267 Ñëîâàðü òåðìèíîâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Ñîäåðæàíèå
Ââåäåíèå . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Óëó÷øåííîå ÿäðî áàçû äàííûõ . . . Áðîêåð ñåðâèñîâ . . . . . . . . . . MDAC è SQLClient . . . . . . . . . Ñåðâèñû ïðåîáðàçîâàíèÿ äàííûõ . . Ñåðâèñû îò÷åòîâ . . . . . . . . . . Ñåðâèñû íîòèôèêàöèè . . . . . . . Ñåðâèñû àíàëèòèêè . . . . . . . . Íîâûé èíñòðóìåíòàðèé è óòèëèòû . Ðåïëèêàöèÿ äàííûõ . . . . . . . . Íîâûé òèï äàííûõ XML . . . . . . . Ðàñøèðåííàÿ ïîääåðæêà ÿçûêîâ . . Èíòåãðàöèÿ ñ .NET . . . . . . . . . SQL Server äëÿ ìîáèëüíûõ óñòðîéñòâ Çåðêàëèðîâàíèå áàç äàííûõ . . . . Ñíèìîê áàçû äàííûõ . . . . . . . . Âîññòàíîâëåíèå âî âðåìÿ ðàáîòû . . Îò èçäàòåëüñòâà . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
11 11 12 12 12 12 13 13 13 14 14 14 15 16 17 17 18
Ãëàâà 1. Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005 . . . 19 1.1. Îáùèå õàðàêòåðèñòèêè SQL Server 2005 . . . . . . . . . 1.1.1. Êîìïîíåíòû SQL Server . . . . . . . . . . . . . 1.1.2. Ñåðâèñû . . . . . . . . . . . . . . . . . . . . . 1.1.3. Ó÷åòíûå çàïèñè . . . . . . . . . . . . . . . . . 1.1.4. IIS è SQL Server 2005 . . . . . . . . . . . . . . 1.1.5. 32- è 64-ðàçðÿäíûå âåðñèè SQL Server 2005 . . . 1.2. Óñòàíîâêà MS SQL Server 2005 . . . . . . . . . . . . . . 1.2.1. Êîìïîíåíòû ÿäðà SQL Server . . . . . . . . . . 1.2.2. Âûïîëíåíèå óñëîâèé ïåðåä óñòàíîâêîé SQL Server 1.2.3. Óäàëåííàÿ óñòàíîâêà . . . . . . . . . . . . . . 1.2.4. Ïîâòîðíàÿ óñòàíîâêà ñåðâåðà . . . . . . . . . . 1.2.5. Èìåíîâàííûé ýêçåìïëÿð è ýêçåìïëÿð ïî óìîë÷àíèþ 1.2.6. Óñòàíîâêà èìåíîâàííîãî ýêçåìïëÿðà . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 2005 . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
20 23 25 26 27 28 29 29 30 30 32 33 34
5
Ñîäåðæàíèå 1.2.7. Îãðàíè÷åíèÿ íà èìÿ ýêçåìïëÿðà . . . . . . . . . . . 1.2.8. Ðàñïîëîæåíèå ôàéëîâ ýêçåìïëÿðîâ . . . . . . . . . 1.2.9. Îáùèå ôàéëû ðàçëè÷íûõ ýêçåìïëÿðîâ . . . . . . . . 1.2.10. Óñòàíîâêà íåñêîëüêèõ ýêçåìïëÿðîâ . . . . . . . . . 1.3. Îáíîâëåíèå MS SQL Server 2005 . . . . . . . . . . . . . . . 1.3.1. Îáíîâëåíèå SQL Server 6.5 . . . . . . . . . . . . . 1.3.2. Îáíîâëåíèå âåðñèé SQL Server 2000 . . . . . . . . . 1.3.3. Ïåðåíîñ áàç äàííûõ ñ SQL Server 7 èëè 2000 íà 2005 1.3.4. Îáíîâëåíèå ðåïëèöèðóåìûõ áàç äàííûõ . . . . . . . 1.3.5. Áåçîïàñíîñòü è ðåïëèêàöèÿ . . . . . . . . . . . . . 1.3.6. Îáíîâëåíèå êëàñòåðà äî âåðñèè SQL Server 2005 . . .
Ãëàâà 2. Àäìèíèñòðèðîâàíèå SQL Server 2005
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
36 37 37 39 39 40 40 40 42 43 44
. . . . . . . . . . . . . . 45
2.1. ßäðî SQL Server 2005 . . . . . . . . . . . . . . . . . . . . 2.1.1. Îãðàíè÷åíèå íà êîëè÷åñòâî ýêçåìïëÿðîâ . . . . . . 2.1.2. Óëó÷øåíèÿ ìåõàíèçìà èíäåêñàöèè . . . . . . . . . . 2.1.3. Íîâûå òèïû äàííûõ . . . . . . . . . . . . . . . . . 2.1.4. Íîâûå êîìàíäû ïîëíîòåêñòîâîãî ïîèñêà . . . . . . . 2.1.5. Ìîìåíòàëüíûé ñíèìîê áàçû äàííûõ è çåðêàëèðîâàíèå 2.1.6. XML-ôàéë è çàãðóçêà äàííûõ . . . . . . . . . . . . 2.1.7. Îáðàáîòêà HTTP-çàïðîñîâ . . . . . . . . . . . . . . 2.1.8. Ñîáûòèÿ ñåðâåðà è òðèããåðû DDL . . . . . . . . . . 2.1.9. Âðåìåííàÿ áàçà äàííûõ . . . . . . . . . . . . . . . 2.1.10. Äåêîìïîçèöèÿ äàííûõ . . . . . . . . . . . . . . . . 2.1.11. Ñèñòåìíûé êàòàëîã è ìåòàäàííûå . . . . . . . . . . 2.1.12. Òåõíîëîãèÿ MARS . . . . . . . . . . . . . . . . . . 2.1.13. Ïðîöåññîð çàïðîñîâ T-SQL . . . . . . . . . . . . . . 2.1.14. Èíòåãðàöèÿ ñ .NET Framework . . . . . . . . . . . . 2.2. SQL Server è íîâîå àïïàðàòíîå îáåñïå÷åíèå . . . . . . . . . 2.2.1. Ëîãè÷åñêèå ïðîöåññîðû . . . . . . . . . . . . . . . 2.2.2. Ïîääåðæêà NUMA . . . . . . . . . . . . . . . . . . 2.2.3. Ïîääåðæêà 64-ðàçðÿäíûõ ïðèëîæåíèé . . . . . . . . 2.3. Áåçîïàñíîñòü . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1. Äîñòóï ê îáúåêòàì SQL Server 2005 . . . . . . . . . 2.3.2. Ïîëèòèêè áåçîïàñíîñòè â îòíîøåíèè ïàðîëåé . . . . 2.3.3. Óðîâåíü äîñòóïà VIEW DEFINITION . . . . . . . . . 2.3.4. Êîíòåêñòíîå âûïîëíåíèå õðàíèìûõ ïðîöåäóð . . . . 2.3.5. Áåçîïàñíîñòü ïîëüçîâàòåëüñêèõ ñõåì . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
46 46 46 47 48 48 49 50 50 51 51 54 54 55 55 55 56 57 58 58 59 60 61 61 63
Ãëàâà 3. Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ . . . . . . . 67 3.1. Óïðàâëåíèå áàçàìè äàííûõ è ñðåäñòâà ðàçðàáîòêè . . . 3.1.1. Óòèëèòà SQL Server Configuration Manager . . . 3.1.2. SQL Server Management Studio (SQL SMS) . . . 3.1.3. Îêíî Solution Explorer SQL SMS . . . . . . . . 3.1.4. Îêíî Properties SQL SMS . . . . . . . . . . . . 3.1.5. Îêíî Registered Servers SQL SMS . . . . . . . . 3.1.6. Îêíî Object Explorer SQL SMS . . . . . . . . . 3.1.7. Óòèëèòà Business Intelligence Development Studio 3.1.8. Íàáîð èíñòðóìåíòîâ BIDS . . . . . . . . . . . 3.1.9. Îêíî Solution Explorer . . . . . . . . . . . . . 3.1.10. Îêíî Properties . . . . . . . . . . . . . . . . 3.1.11. Îêíî Dynamic Help . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . (BIDS) . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
67 67 69 72 73 74 75 76 77 77 79 79
6
Ñîäåðæàíèå 3.1.12. Êîíòðîëü íàä âåðñèÿìè ðåøåíèé â BIDS . . . . . . . . . . 3.1.13. Óòèëèòà Query Editor . . . . . . . . . . . . . . . . . . . . 3.1.14. Îêíî Results Window óòèëèòû Query Editor . . . . . . . . . 3.1.15. Îêíî Dynamic Help . . . . . . . . . . . . . . . . . . . . . 3.1.16. Êîíòðîëü íàä âåðñèÿìè ïðîãðàììíîãî êîäà . . . . . . . . 3.1.17. Ïðîñìîòð ýòàïîâ âûïîëíåíèÿ çàïðîñà . . . . . . . . . . . 3.1.18. Ñðàâíåíèå SQL SMS è BIDS . . . . . . . . . . . . . . . . 3.1.19. Óòèëèòà Sqlcmd . . . . . . . . . . . . . . . . . . . . . . 3.1.20. Èñïîëüçîâàíèå ôàéëîâ ñöåíàðèåâ â Sqlcmd . . . . . . . . 3.2. Íîâûå ñðåäñòâà óïðàâëåíèÿ . . . . . . . . . . . . . . . . . . . . 3.2.1. SQL Server Management Objects (SMO) . . . . . . . . . . . 3.2.2. Èñïîëüçîâàíèå Windows Management Instrumentation (WMI) 3.2.3. Ïðîâàéäåð WMI . . . . . . . . . . . . . . . . . . . . . . 3.2.4. Ñîáûòèÿ WMI . . . . . . . . . . . . . . . . . . . . . . . 3.2.5. Íàáîð îáúåêòîâ Analysis Management Objects (AMO) . . . . . 3.2.6. Áèáëèîòåêà Replication Management Objects (RMO) . . . . . 3.3. Ñðåäñòâà óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè . . . . . . . . . . . . . 3.3.1. Óòèëèòà Profiler . . . . . . . . . . . . . . . . . . . . . . 3.3.2. Ïðîôèëè ñåðâèñîâ àíàëèòèêè . . . . . . . . . . . . . . . 3.3.3. Àãðåãèðîâàííûå ïðåäñòàâëåíèÿ . . . . . . . . . . . . . . 3.3.4. Íàáîð ðàçðåøåíèé äëÿ òðàññèðîâêè . . . . . . . . . . . . 3.3.5. Èçâëå÷åíèå äàííûõ ñîãëàñíî èõ òèïó . . . . . . . . . . . 3.3.6. Óòèëèòà Create Trace Wizard . . . . . . . . . . . . . . . . 3.3.7. Ðåäàêòîð çàïðîñîâ SQL SMS . . . . . . . . . . . . . . . . 3.3.8. Óòèëèòà Database Tuning Advisor . . . . . . . . . . . . . . 3.3.9. Óïðàâëåíèå ðàçäåëàìè â Database Tuning Advisor . . . . . 3.3.10. Ïðèîñòàíîâêà ðàáîòû â Database Tuning Advisor . . . . . . 3.3.11. Íàñòðîéêà ïî ðàñïèñàíèþ . . . . . . . . . . . . . . . . . 3.3.12. Ïîääåðæêà ìåòîäèêè WHATIF . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79 80 81 81 81 82 82 83 83 85 86 86 87 87 87 88 88 88 89 89 89 89 90 90 91 92 92 93 93
Ãëàâà 4. Áðîêåð çàïðîñîâ SQL Server . . . . . . . . . . . . . . . . . . . 94 4.1. Îáçîð áðîêåðà çàïðîñîâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.1.1. Î÷åðåäè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.1.2. Äèàëîãè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 4.1.3. Àêòèâàöèÿ áðîêåðà çàïðîñîâ SQL Server . . . . . . . . . . . . . . . . . 98 4.1.4. Ãðóïïû âçàèìîäåéñòâèÿ . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.1.5. Ïîääåðæèâàåìûå ïðîòîêîëû . . . . . . . . . . . . . . . . . . . . . . 100 4.2. Íàñòðîéêà è àäìèíèñòðèðîâàíèå áðîêåðà çàïðîñîâ . . . . . . . . . . . . . . . 101 4.2.1. Íàñòðîéêà ïàðàìåòðîâ áðîêåðà çàïðîñîâ . . . . . . . . . . . . . . . . 101 4.2.2. Áåçîïàñíîñòü áðîêåðà çàïðîñîâ . . . . . . . . . . . . . . . . . . . . 102 4.2.3. Ñèñòåìíûå ïðåäñòàâëåíèÿ . . . . . . . . . . . . . . . . . . . . . . . 103 4.3. Ðàçðàáîòêà ïðèëîæåíèé è áðîêåð çàïðîñîâ . . . . . . . . . . . . . . . . . . . 103 4.3.1. Èñïîëüçîâàíèå ìåòàäàííûõ . . . . . . . . . . . . . . . . . . . . . . 103 4.3.2. Íîâûé íàáîð êîìàíä T-SQL . . . . . . . . . . . . . . . . . . . . . . . 104 4.3.3. Ïðèìåð ïðèëîæåíèÿ íà îñíîâå áðîêåðà çàïðîñîâ . . . . . . . . . . . . 105
Ãëàâà 5. Ñåðâèñû àíàëèòèêè
. . . . . . . . . . . . . . . . . . . . . . 110
5.1. Îáçîð è ïðåèìóùåñòâà . . . . . . . . . . . . . . . . 5.1.1. Òèïû õðàíèëèù OLAP . . . . . . . . . . . . . 5.1.2. Ïðåèìóùåñòâà ñåðâèñîâ àíàëèòèêè . . . . . . 5.1.3. Ïîääåðæêà íåñêîëüêèõ ýêçåìïëÿðîâ SQL Server 5.1.4. Òðèããåðû . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
111 113 114 114 114
Ñîäåðæàíèå 5.1.5. Òðàññèðîâêà . . . . . . . . . . . . . . . 5.1.6. Óíèôèöèðîâàííàÿ ìîäåëü èçìåðåíèé . . . 5.1.7. Êýøèðîâàíèå . . . . . . . . . . . . . . . 5.1.8. Óïðàâëåíèå çàâèñøèìè ñòðîêàìè . . . . . 5.1.9. Ïîääåðæêà êëàñòåðèçàöèè . . . . . . . . 5.1.10. Ñîçäàíèå îáúåêòîâ ñ ïîìîùüþ ñöåíàðèåâ 5.1.11. Èíôîðìàöèîííàÿ ïðîõîäêà . . . . . . . . 5.1.12. Ëîêàëèçàöèÿ . . . . . . . . . . . . . . . 5.1.13. Èíòåãðàöèÿ ñî ñðåäñòâàìè ðàçðàáîòêè .NET 5.2. Óïðàâëåíèå ñåðâèñàìè àíàëèòèêè . . . . . . . . . 5.2.1. SQL Server Management Studio . . . . . . 5.2.2. SQL Server Configuration Manager . . . . . 5.2.3. Ïðèâèëåãèè . . . . . . . . . . . . . . . 5.2.4. Ðåçåðâèðîâàíèå è âîññòàíîâëåíèå äàííûõ 5.2.5. Øèôðîâàíèå . . . . . . . . . . . . . . . 5.2.6. Áåçîïàñíîñòü . . . . . . . . . . . . . . . 5.2.7. Áåçîïàñíîñòü ïî óìîë÷àíèþ . . . . . . . 5.3. Ñðåäñòâà ðàçðàáîòêè . . . . . . . . . . . . . . . 5.3.1. BI Development Studio . . . . . . . . . . 5.3.2. Îíëàéíîâûé è îôëàéíîâûé ðåæèìû . . . 5.3.3. Èñòî÷íèêè äàííûõ ïðåäñòàâëåíèÿ . . . . 5.3.4. Óòèëèòà Cube Wizard . . . . . . . . . . . 5.3.5. Óòèëèòà Cube Editor . . . . . . . . . . . 5.3.6. Óòèëèòà Cube Browser . . . . . . . . . . 5.3.7. Óòèëèòà Profiler . . . . . . . . . . . . . . 5.3.8. Îáúåêòû ñåðâèñîâ àíàëèòèêè (AMO) . . . 5.3.9. XML äëÿ àíàëèòèêè (XMLA) . . . . . . . . 5.3.10. ßçûê ODL . . . . . . . . . . . . . . . . . 5.3.11. ßçûê çàïðîñîâ MDX . . . . . . . . . . . . 5.3.12. Ïðîâàéäåð äàííûõ ADOMD.NET . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 114 115 115 116 116 117 117 118 118 118 118 119 120 120 121 121 122 122 122 123 123 125 126 128 128 129 129 130 131 132
Ãëàâà 6. Ñåðâèñû èíòåãðàöèè . . . . . . . . . . . . . . . . . . . . . . 133 6.1. Àðõèòåêòóðà è êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè 6.1.1. Ìîäóëü DTP . . . . . . . . . . . . . . 6.1.2. Ìîäóëü DTR . . . . . . . . . . . . . . 6.1.3. Êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè . . . 6.1.4. Ïðåèìóùåñòâà ñåðâèñîâ èíòåãðàöèè . . 6.1.5. Íàñòðîéêà ñâîéñòâ ïàêåòîâ . . . . . . . 6.1.6. Ïðîòîêîëèðîâàíèå . . . . . . . . . . . 6.1.7. Êîíòðîëüíûå òî÷êè . . . . . . . . . . . 6.1.8. Ïåðåìåííûå . . . . . . . . . . . . . . 6.1.9. Çàäà÷è . . . . . . . . . . . . . . . . . 6.1.10. Óïðàâëåíèå ïðîöåññàìè . . . . . . . . 6.1.11. Ðåæèìû ðàáîòû . . . . . . . . . . . . 6.1.12. Öèôðîâàÿ ïîäïèñü . . . . . . . . . . . 6.1.13. Êîíòåéíåðû . . . . . . . . . . . . . . 6.1.14. Àäàïòåðû äàííûõ . . . . . . . . . . . 6.1.15. Ïðîâàéäåðû ïðîòîêîëèðîâàíèÿ . . . . . 6.1.16. Ïðåîáðàçîâàíèå äàííûõ . . . . . . . . 6.1.17. Îáðàáîò÷èêè ñîáûòèé . . . . . . . . . 6.2. Èíñòðóìåíòû ñåðâèñîâ èíòåãðàöèè . . . . . . . 6.2.1. Óòèëèòà Import/Export Wizard . . . . . . 6.2.2. Äèçàéíåð ñåðâèñîâ èíòåãðàöèè . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
134 135 136 138 138 139 139 139 140 142 142 143 144 144 145 146 146 147 148 149 151
8
Ñîäåðæàíèå 6.3. Èíñòðóìåíòû ðàáîòû ñ ïàêåòàìè . . . . . . . . . . . . . . 6.3.1. Ïåðåíîñ ïàêåòîâ . . . . . . . . . . . . . . . . . . 6.3.2. Óòèëèòà óïðàâëåíèÿ ïàêåòàìè ñåðâèñîâ èíòåãðàöèè 6.3.3. Óòèëèòà èñïîëíåíèÿ ïàêåòîâ ñåðâèñîâ èíòåãðàöèè .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
157 158 158 158
Ãëàâà 7. Ñåðâèñû íîòèôèêàöèè . . . . . . . . . . . . . . . . . . . . . 160 7.1. Îáçîð è àðõèòåêòóðà ñåðâèñîâ íîòèôèêàöèè . . . . . . . . . . 7.1.1. ßäðî ñåðâèñà íîòèôèêàöèè . . . . . . . . . . . . . . 7.1.2. Ñîáûòèÿ . . . . . . . . . . . . . . . . . . . . . . . 7.1.3. Ïîäïèñêà . . . . . . . . . . . . . . . . . . . . . . . 7.1.4. Íîòèôèêàöèÿ . . . . . . . . . . . . . . . . . . . . . 7.1.5. Àðõèòåêòóðà ñåðâèñîâ íîòèôèêàöèè . . . . . . . . . 7.2. Ðàçðàáîòêà ñåðâèñîâ íîòèôèêàöèè . . . . . . . . . . . . . . 7.2.1. Ýòàïû ðàçðàáîòêè ñåðâèñîâ íîòèôèêàöèè . . . . . . 7.2.2. Ñõåìû è ïðàâèëà . . . . . . . . . . . . . . . . . . . 7.2.3. Êîìïèëèðîâàíèå ïðèëîæåíèÿ . . . . . . . . . . . . 7.2.4. Íàñòðîéêà ïðèëîæåíèÿ . . . . . . . . . . . . . . . . 7.2.5. Ïîëüçîâàòåëüñêèå êîìïîíåíòû . . . . . . . . . . . . 7.2.6. Ïðèìåðû ñåðâèñîâ íîòèôèêàöèè . . . . . . . . . . . 7.2.7. Ñîçäàíèå è èñïîëüçîâàíèå êîíôèãóðàöèîííûõ ôàéëîâ 7.2.8. Îïðåäåëåíèå ïðîâàéäåðà ADF . . . . . . . . . . . . 7.2.9. Íàñòðîéêà ñõåìû ïîäïèñêè . . . . . . . . . . . . . . 7.2.10. Ñõåìà íîòèôèêàöèè ADF-ôàéëà . . . . . . . . . . . . 7.2.11. Ôîðìàò âûâîäà íîòèôèêàöèé . . . . . . . . . . . . . 7.2.12. Ñîçäàíèå ïðèëîæåíèÿ ñåðâèñà íîòèôèêàöèè . . . . . 7.2.13. Äîáàâëåíèå ïîäïèñ÷èêîâ . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
160 161 162 162 162 162 165 165 165 165 166 166 166 167 170 171 173 175 176 178
Ãëàâà 8. Ñåðâèñû îò÷åòîâ . . . . . . . . . . . . . . . . . . . . . . . . 180 8.1. Àðõèòåêòóðà è êîìïîíåíòû ñåðâèñîâ îò÷åòîâ . . . . . . . . . 8.1.1. Àðõèòåêòóðà ñåðâèñîâ îò÷åòîâ . . . . . . . . . . . . 8.1.2. Ñåðâåð îò÷åòîâ . . . . . . . . . . . . . . . . . . . . 8.1.3. Äèçàéíåð îò÷åòîâ . . . . . . . . . . . . . . . . . . 8.1.4. Ïàíåëü èíñòðóìåíòîâ . . . . . . . . . . . . . . . . . 8.1.5. Îáëàñòü ìîäåëèðîâàíèÿ . . . . . . . . . . . . . . . 8.1.6. Îêíî Fields . . . . . . . . . . . . . . . . . . . . . . 8.1.7. Îêíî Solution Explorer . . . . . . . . . . . . . . . . 8.1.8. Îêíî Properties . . . . . . . . . . . . . . . . . . . . 8.1.9. Îêíî Output . . . . . . . . . . . . . . . . . . . . . 8.1.10. Äèçàéíåð OLAP-îò÷åòîâ . . . . . . . . . . . . . . . 8.1.11. Ïàíåëü Dimensions Pane . . . . . . . . . . . . . . . 8.1.12. Ïàíåëü Measures Pane . . . . . . . . . . . . . . . . 8.1.13. Îêíî Metadata . . . . . . . . . . . . . . . . . . . . 8.1.14. Óòèëèòà Report Builder . . . . . . . . . . . . . . . . 8.1.15. Ìåíåäæåð îò÷åòîâ (Report Manager) . . . . . . . . . 8.1.16. Äîñòàâêà îò÷åòà . . . . . . . . . . . . . . . . . . . 8.2. Àâòîðèçàöèÿ îò÷åòîâ . . . . . . . . . . . . . . . . . . . . . 8.2.1. Ýòàïû ðàçðàáîòêè . . . . . . . . . . . . . . . . . . 8.2.2. Ñîçäàíèå ïðèëîæåíèÿ ñåðâèñîâ îò÷åòîâ . . . . . . . 8.2.3. Óñòàíîâêà è âíåäðåíèå ïðèëîæåíèÿ ñåðâèñîâ îò÷åòîâ 8.2.4. Ïðîñìîòð îò÷åòà ïîëüçîâàòåëåì . . . . . . . . . . . 8.2.5. Ñîçäàíèå ïðèëîæåíèÿ ñåðâèñîâ îò÷åòîâ . . . . . . . 8.2.6. Ðàçâåðòûâàíèå è âíåäðåíèå ñåðâèñà îò÷åòîâ . . . . . 8.2.7. Çàïóñê ñåðâèñà îò÷åòîâ . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
181 182 184 186 186 187 188 188 188 189 189 189 189 190 190 190 191 192 192 192 192 193 193 200 201
Ñîäåðæàíèå
Ãëàâà 9. Ñðåäñòâà âîññòàíîâëåíèÿ äàííûõ
. . . . . . . . . . . . . . . 203
9.1. Ñïîñîáû ñîõðàíåíèÿ äàííûõ . . . . . . . . . . . . . . . 9.1.1. Çåðêàëèðîâàíèå . . . . . . . . . . . . . . . . . 9.1.2. Çåðêàëèðîâàíèå ìåäèàäàííûõ . . . . . . . . . . 9.1.3. Êëàñòåðèçàöèÿ . . . . . . . . . . . . . . . . . . 9.1.4. Îòëè÷èå ñõåì çåðêàëèðîâàíèÿ è êëàñòåðèçàöèè . 9.1.5. Ïðîçðà÷íàÿ ïåðåàäðåñàöèÿ ïîëüçîâàòåëåé . . . . 9.1.6. Ñíèìîê áàçû äàííûõ . . . . . . . . . . . . . . . 9.2. Ñðåäñòâà ïîääåðæêè áàç äàííûõ . . . . . . . . . . . . . 9.2.1. Âîññòàíîâëåíèå äàííûõ . . . . . . . . . . . . . 9.2.2. Âîññòàíîâëåíèå äàííûõ â ðåàëüíîì âðåìåíè . . . 9.2.3. Òðàíçàêöèè SQL Server . . . . . . . . . . . . . . 9.3. Ïðåâåíòèâíûå äåéñòâèÿ . . . . . . . . . . . . . . . . . 9.3.1. Èíäåêñèðîâàíèå â ðåàëüíîì âðåìåíè . . . . . . . 9.3.2. Îòñëåæèâàíèå ïîâðåæäåííûõ ñòðàíèö . . . . . . 9.3.3. Âûäåëåííûé äîñòóï àäìèíèñòðàòîðà . . . . . . . 9.3.4. Ãîðÿ÷åå ïîäêëþ÷åíèå ïàìÿòè . . . . . . . . . . 9.3.5. Äèíàìè÷åñêîå êîíôèãóðèðîâàíèå . . . . . . . . 9.4. Ðåçåðâíîå êîïèðîâàíèå è âîññòàíîâëåíèå äàííûõ . . . . . 9.4.1. ×àñòè÷íîå âîññòàíîâëåíèå . . . . . . . . . . . . 9.4.2. Íàäåæíîñòü õðàíåíèÿ äàííûõ . . . . . . . . . . 9.4.3. Ïðîâåðêà öåëîñòíîñòè äàííûõ . . . . . . . . . . 9.4.4. Èãíîðèðîâàíèå îøèáîê . . . . . . . . . . . . . . 9.4.5. Êîíêóðåíòíîå ñîçäàíèå ðåçåðâíîé êîïèè . . . . . 9.4.6. Ðåçåðâíàÿ êîïèÿ êàòàëîãà ïîëíîòåêñòîâîãî ïîèñêà 9.4.7. Êîíòðîëüíûå ñóììû ñòðàíèö . . . . . . . . . . .
Ãëàâà 10. Ïðîãðàììèðîâàíèå äëÿ SQL Server
9
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
204 204 207 207 209 210 210 212 212 214 214 215 215 216 216 216 217 217 217 218 218 218 218 219 219
. . . . . . . . . . . . . . 220
10.1. Èíòåãðàöèÿ CLR . . . . . . . . . . . . . . . . . . . . 10.1.1. Ñáîðêà . . . . . . . . . . . . . . . . . . . . 10.1.2. .NET-ïðîâàéäåðû äàííûõ . . . . . . . . . . . 10.1.3. Õðàíèìûå ïðîöåäóðû .NET . . . . . . . . . . 10.1.4. Ïîëüçîâàòåëüñêèå ôóíêöèè .NET . . . . . . . 10.1.5. Òðèããåðû .NET . . . . . . . . . . . . . . . . 10.1.6. Ïîëüçîâàòåëüñêèå òèïû CLR . . . . . . . . . . 10.1.7. Ïîëüçîâàòåëüñêèå ìíîæåñòâà . . . . . . . . . 10.1.8. Áåçîïàñíîñòü íà óðîâíå îáúåêòîâ áàçû äàííûõ 10.2. Íîâîââåäåíèÿ . . . . . . . . . . . . . . . . . . . . . 10.2.1. Ñ÷èòûâàíèå ñòðîê . . . . . . . . . . . . . . . 10.2.2. Òàáëè÷íûå ðàñøèðåíèÿ . . . . . . . . . . . . 10.2.3. PIVOT è UNPIVOT . . . . . . . . . . . . . . . 10.2.4. Òðèããåðû DDL . . . . . . . . . . . . . . . . . 10.2.5. Ïåðåíàïðàâëåíèå âûâîäà . . . . . . . . . . . 10.2.6. Êîìàíäà WAITFOR . . . . . . . . . . . . . . 10.2.7. Íîâûé òèï äàííûõ varchar . . . . . . . . . . . 10.2.8. Ïðåðûâàíèå òðàíçàêöèé . . . . . . . . . . . . 10.3. Èíòåãðàöèÿ ñ ADO.NET . . . . . . . . . . . . . . . . . 10.3.1. Èñïîëüçîâàíèå êóðñîðà . . . . . . . . . . . . 10.3.2. Ïîääåðæêà àñèíõðîííîñòè . . . . . . . . . . 10.3.3. Ïîääåðæêà MARS . . . . . . . . . . . . . . . 10.3.4. Ðàçáèâêà íà ñòðàíèöû . . . . . . . . . . . . . 10.3.5. Îáìåí îáúåêòàìè . . . . . . . . . . . . . . . 10.3.6. Îáùàÿ ìîäåëü ñîåäèíåíèÿ . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
220 221 222 224 226 227 229 233 236 237 237 237 238 240 240 241 241 242 242 242 244 245 247 248 249
10
Ñîäåðæàíèå
Ãëàâà 11. ßçûê XML è SQL Server . . . . . . . . . . . . . . . . . . . . 250 11.1. Òèï äàííûõ XML . . . . . . . . . . . . 11.1.1. Ñòàíäàðòíûé XML . . . . . . . 11.1.2. Ìåòîäû XML . . . . . . . . . . 11.2. Èíäåêñû XML . . . . . . . . . . . . . 11.2.1. Ïåðâè÷íûå èíäåêñû XML . . . 11.2.2. Âòîðè÷íûå èíäåêñû XML . . . 11.3. Íîâûå âîçìîæíîñòè XML . . . . . . . . 11.3.1. Êîìàíäà FOR XML . . . . . . . 11.3.2. Òèïèçèðîâàííûå äèðåêòèâû . . 11.3.3. XSD-ñõåìû è êîìàíäà FOR XML 11.3.4. Âëîæåííûå çàïðîñû FOR XML . 11.3.5. Çàãðóçêà XML . . . . . . . . . 11.3.6. Ïîääåðæêà XQuery . . . . . . 11.3.7. Êîìàíäà OPENXML . . . . . . 11.3.8. XML for Analysis Services . . . . 11.3.9. Äîñòóï XML SOAP . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
251 252 255 257 257 258 258 259 259 260 261 262 263 263 265 265
Ãëàâà 12. Áåçîïàñíîñòü . . . . . . . . . . . . . . . . . . . . . . . . . 267 12.1. Èçìåíåíèÿ è ïðåèìóùåñòâà SQL Server 2005 . . . . . . . . 12.1.1. Ïðåèìóùåñòâà . . . . . . . . . . . . . . . . . . 12.1.2. Äîñòóï ê ìåòàäàííûì . . . . . . . . . . . . . . . 12.2. Îáçîð ñðåäñòâ áåçîïàñíîñòè SQL Server 2005 . . . . . . . . 12.2.1. Àóòåíòèôèêàöèÿ è àâòîðèçàöèÿ . . . . . . . . . . 12.2.2. Èñïîëíåíèå â çàâèñèìîñòè îò îêðóæåíèÿ è öåïî÷êè 12.3. Õðàíåíèå ïàðîëåé . . . . . . . . . . . . . . . . . . . . . 12.3.1. Ìàíäàò . . . . . . . . . . . . . . . . . . . . . . 12.3.2. Ðàçäåëåíèå ïîëüçîâàòåëåé è ñõåì . . . . . . . . . 12.3.3. Ñèíîíèìû èìåí . . . . . . . . . . . . . . . . . . 12.4. Íàáîðû ïðàâ äîñòóïà è íîâûå îáúåêòû . . . . . . . . . . . 12.4.1. Ñáîðêè . . . . . . . . . . . . . . . . . . . . . . 12.4.2. Íàáîðû ïðàâ äîñòóïà è ñáîðêè . . . . . . . . . . 12.4.3. Îáùèå ñáîðêè è áåçîïàñíîñòü . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . âëàäåëüöåâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
267 269 270 271 271 276 279 281 281 283 284 285 286 287
Ñëîâàðü òåðìèíîâ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Ââåäåíèå
Microsoft SQL Server 2005 ÿâëÿåòñÿ ïðîäîëæåíèåì ëèíåéêè ïðîäóêòîâ ñåðâåðîâ ðåëÿöèîííûõ áàç äàííûõ, çàðåêîìåíäîâàâøåé ñåáÿ ñ íàèëó÷øåé ñòîðîíû â îòíîøåíèè íàäåæíîñòè, ðàñøèðÿåìîñòè, ìàñøòàáèðóåìîñòè è ñîîòíîøåíèè öåíû è ïðîèçâîäèòåëüíîñòè. Ýòîò ïðîãðàììíûé ïðîäóêò èìååò ðÿä ïðåèìóùåñòâ, êîòîðûå âûãîäíî îòëè÷àþò åãî îò äðóãèõ ïðîãðàììíûõ ïðîäóêòîâ äëÿ óïðàâëåíèÿ áàçàìè äàííûõ. Âî ìíîãîì ýòè ïðåèìóùåñòâà ïîçâîëÿþò ïðîäâèíóòüñÿ íà ðûíîê ðåøåíèé, ðàíåå ìîíîïîëüíî çàíèìàåìûé Oracle. Àðõèòåêòóðà ïðîãðàììíîãî ðåøåíèÿ îò Microsoft çíà÷èòåëüíî óëó÷øåíà. Ýòî ïîçâîëèëî åìó óêðåïèòüñÿ íà ðûíêå ðåøåíèé äëÿ îáðàáîòêè îíëàéí-òðàíçàêöèé (OLTP), íàäåæíîãî õðàíåíèÿ äàííûõ, ñîçäàíèÿ è èñïîëüçîâàíèÿ âñåâîçìîæíûõ ñåðâèñîâ, ìîùíûõ ñðåäñòâ äëÿ OLAP-àíàëèçà, à òàêæå ïðèëîæåíèé ýëåêòðîííîé êîììåðöèè.
Óëó÷øåííîå ÿäðî áàçû äàííûõ Îñíîâíûì óëó÷øåíèåì áàçû äàííûõ íîâîé âåðñèè ïðîãðàììíîãî ïðîäóêòà ÿâëÿåòñÿ èíòåãðàöèÿ ñ Microsoft .NET Framework. Òàêæå ñòîèò âûäåëèòü ïîÿâëåíèå íîâûõ òèïîâ äàííûõ, óëó÷øåíèå ðàáîòû ñ XML, à òàêæå âîçìîæíîñòü èñïîëüçîâàíèÿ íåêîòîðûõ ðàñøèðåíèé Transact-SQL. Ñäåëàí çíà÷èòåëüíûé ðûâîê íà ðûíîê áèçíåñ-ïðèëîæåíèé çà ñ÷åò ðàñøèðåííûõ ìåõàíèçìîâ ðåïëèêàöèè, à òàêæå ìàñøòàáèðóåìîñòè ñèñòåì íà îñíîâå Microsoft SQL Server 2005. Íà ïîðÿäîê óâåëè÷åíà áåçîïàñíîñòü è ðàçãðàíè÷åíèå ïðàâ äîñòóïà íà óðîâíå áàçû äàííûõ.
Áðîêåð ñåðâèñîâ Áðîêåð ñåðâèñîâ — ýòî íîâûé óðîâåíü â ïðèëîæåíèÿõ íà îñíîâå SQL Server, êîòîðûé ïîçâîëÿåò èçáàâèòüñÿ îò çàâèñèìîñòè ìåæäó ïîëüçîâàòåëüñêèìè ïðèëîæåíèÿìè è áàçàìè äàííûõ. Áëàãîäàðÿ ýòîìó ðàçðàáîò÷èêè ìîãóò ñîçäàâàòü
12
Ââåäåíèå
ïðèëîæåíèÿ íà îñíîâå ñåðâèñîâ, êîòîðûå îáìåíèâàþòñÿ ñîîáùåíèÿìè ñ áàçîé äàííûõ ÷åðåç î÷åðåäü ñîîáùåíèé. Äàííîé î÷åðåäüþ óïðàâëÿåò áðîêåð ñåðâèñîâ. Ïîäîáíûå áðîêåðû çàïðîñîâ äàâíî èñïîëüçóþòñÿ ìíîãèìè ïðîèçâîäèòåëÿìè ñåðâåðíûõ ïðîãðàììíûõ ðåøåíèé, â êîòîðûõ ÷àñòî îáðàáàòûâàþòñÿ áàçû äàííûõ íà îñíîâå ïðîãðàììíûõ ïðîäóêòîâ ðàçëè÷íûõ ïîñòàâùèêîâ. Ïðèìåðîì òîìó ìîæåò ñëóæèòü Documentum Content Server — ïðèëîæåíèå, èñïîëüçóþùåå áðîêåð çàïðîñîâ äëÿ ðåàëèçàöèè ñòðàòåãèè íåçàâèñèìîñòè îò òèïîâ áàç äàííûõ. Òåïåðü Microsoft ïåðåíåñëà äàííóþ ôóíêöèîíàëüíîñòü ìíîãèõ ñåðâåðíûõ ïðîãðàììíûõ ïðîäóêòîâ íà ñåðâåð áàç äàííûõ.
MDAC è SQLClient  íîâîé âåðñèè SQL Server çíà÷èòåëüíî óëó÷øåíû ñðåäñòâà äîñòóïà ê äàííûì. Äëÿ ýòîãî ïåðåðàáîòàíà è óëó÷øåíà ðàáîòà àäàïòåðîâ .NET Frameworks SQLClient è MDAC (Microsoft Data Access). Òàêîå óñîâåðøåíñòâîâàíèå ïîçâîëÿåò ðàçðàáîò÷èêàì áîëåå ãèáêî êîíòðîëèðîâàòü äîñòóï ê äàííûì, íå ïðåíåáðåãàÿ ïðè ýòîì áåçîïàñíîñòüþ è öåëîñòíîñòüþ ñèñòåìû.
Ñåðâèñû ïðåîáðàçîâàíèÿ äàííûõ Çíà÷èòåëüíî óëó÷øåíà àðõèòåêòóðà íîâûõ ñåðâèñîâ ïðåîáðàçîâàíèÿ äàííûõ. Òàêæå èçìåíåíèÿì ïîäâåðãñÿ DTS Designer. Òåïåðü îí èìååò ñðåäñòâà äëÿ ðàçäåëåíèÿ çàäà÷ è äàííûõ, à òàêæå èõ îòäåëüíîãî âûïîëíåíèÿ. Ýòî ïîçâîëÿåò çíà÷èòåëüíî óñêîðèòü ðàáîòó äàííîãî ñåðâèñà è ðåàëèçîâàòü öåëûé íàáîð ìåõàíèçìîâ äëÿ óïðàâëåíèÿ ïîòîêàìè äàííûõ è çàäà÷. Ïîìèìî ýòîãî DTS Designer èìååò ñðåäñòâà äëÿ óïðàâëåíèÿ ïàêåòàìè äàííûõ è ïàêåòàìè çàäà÷, ÷òî òàêæå ïîëîæèòåëüíî ñêàçûâàåòñÿ íà ïðîèçâîäèòåëüíîñòè ñèñòåìû.
Ñåðâèñû îò÷åòîâ Ñåðâèñû îò÷åòîâ ïîçâîëÿþò ðåàëèçîâàòü ôóíêöèîíàëüíîñòü ñîçäàíèÿ îò÷åòîâ, óïðàâëåíèÿ, ðàññûëêè è äîñòóïà ê íèì êîíå÷íûõ ïîëüçîâàòåëåé. Íà èõ îñíîâå ìîæíî âûïîëíÿòü âñåñòîðîííèé àíàëèç äàííûõ, ðàñïîëàãàþùèõñÿ â áàçå, îñóùåñòâëÿòü èõ ðàçðåçû â íåîáõîäèìûõ ïëîñêîñòÿõ è âûâîäèòü ðåçóëüòàòû ñòàòèñòè÷åñêîãî àíàëèçà ñîîòâåòñòâóþùèì ïîëüçîâàòåëÿì â íóæíîì ôîðìàòå.
Ñåðâèñû íîòèôèêàöèè Ñåðâèñû íîòèôèêàöèè ïîçâîëÿþò ñîçäàâàòü ãèáêèå ïðèëîæåíèÿ äëÿ îòïðàâêè, ïîëó÷åíèÿ è îáðàáîòêè ñîîáùåíèé. Ñ èõ ïîìîùüþ ìîæíî âûïîëíÿòü îòïðàâêó ñîîáùåíèé ïî ðàñïèñàíèþ, ïåðñîíàëüíî äîñòàâëÿòü äàííûå íà îòäåëüíî âçÿòûé êîìïüþòåð ïîëüçîâàòåëÿ, à òàêæå îòîáðàæàòü èõ â íåîáõîäèìîì ôîðìàòå. Âñå ýòî
Ðåïëèêàöèÿ äàííûõ
13
ñòàíîâèòñÿ äîñòóïíûì òûñÿ÷àì ïîäïèñ÷èêîâ, äëÿ êîòîðûõ íàñòðîåíà íîòèôèêàöèÿ, ðàññûëêà ñîîáùåíèé, çàäàíèé èëè óâåäîìëåíèé ñ ïîìîùüþ ñåðâèñîâ íîòèôèêàöèè Microsoft SQL Server 2005. Áîëåå òîãî, ðàçðàáîò÷èêè ìîãóò ãèáêî âñòðàèâàòü ôóíêöèè íîòèôèêàöèè â ñâîè ïðèëîæåíèÿ. Ýòî äàåò äîïîëíèòåëüíûé óðîâåíü ñâîáîäû ïðè âçàèìîäåéñòâèè ïîëüçîâàòåëÿ ñ ñèñòåìîé.
Ñåðâèñû àíàëèòèêè  íîâîé âåðñèè SQL Server ñåðâèñû àíàëèòèêè èñïîëüçóþòñÿ äëÿ àíàëèçà ñòàòèñòè÷åñêîé èíôîðìàöèè, ñîñòàâëåíèÿ ðàçëè÷íûõ àíàëèòè÷åñêèõ îò÷åòîâ, ðàçðåçîâ äàííûõ ñ öåëüþ èõ äàëüíåéøåãî ïðèìåíåíèÿ â ðàçëè÷íûõ ïðèëîæåíèÿõ. Äëÿ ðàçðàáîòêè ïðèëîæåíèé, èñïîëüçóþùèõ ñåðâèñû àíàëèòèêè, ðåàëèçîâàíà âîçìîæíîñòü èíòåãðàöèè ñ .NET Framework. Äëÿ óïðîùåíèÿ ïðîöåññà ñîçäàíèÿ ïîäîáíûõ ïðèëîæåíèé ðåàëèçîâàí íàáîð âñåâîçìîæíûõ ïîìîùíèêîâ è óòèëèò, êîòîðûå ïðèçâàíû óïðîñòèòü ðàçðàáîòêó ïðèëîæåíèé íà îñíîâå ñåðâèñîâ àíàëèòèêè SQL Server.
Íîâûé èíñòðóìåíòàðèé è óòèëèòû Â SQL Server 2005 ïîÿâèëñÿ îãðîìíûé íàáîð íîâûõ óòèëèò, ñðåäñòâ ðàçðàáîòêè, àäìèíèñòðèðîâàíèÿ è óïðàâëåíèÿ áàçîé äàííûõ. Ê òàêèì ñðåäñòâàì îòíîñÿòñÿ: · óëó÷øåííûé DTS Import/Export Wizard; · óëó÷øåííûé SQL Profiler; · íîâûå êîìïîíåíòû Analysis Services Wizards; · íîâûé Report Manager; · íîâàÿ óòèëèòà Database Tuning Advisor; · íîâàÿ óòèëèòà SQL Server Configuration Manager; · íîâàÿ ñðåäà ðàçðàáîòêè Business Intelligence Development Studio; · íîâàÿ ñðåäà ðàçðàáîòêè SQL Server Management Studio.
Ðåïëèêàöèÿ äàííûõ  Microsoft SQL Server 2005 çíà÷èòåëüíî ðàñøèðåíû âîçìîæíîñòè ìåõàíèçìà ðåïëèêàöèè äàííûõ. Ðàñøèðåíèÿ êîñíóëèñü, â ïåðâóþ î÷åðåäü, áåçîïàñíîñòè äàííûõ, óïðîùåíèÿ óïðàâëÿåìîñòè ñèñòåì, â êîòîðûõ èñïîëüçóåòñÿ ðåïëèêàöèÿ äàííûõ, à òàêæå ïîääåðæêè ãåòåðîãåííûõ ñðåä ñ èñïîëüçîâàíèåì áàç äàííûõ íà îñíîâå ðåøåíèé îò äðóãèõ ïîñòàâùèêîâ ïðîãðàììíîãî îáåñïå÷åíèÿ. Òàêæå óëó÷øåíà ïðîãðàììíàÿ ìîäåëü äëÿ ñîçäàíèÿ ïðèëîæåíèé ñ ðåïëèêàöèåé äàííûõ.  ïåðâóþ î÷åðåäü ýòî îòíîñèòñÿ ê Replication Management Objects (RMO), à òàêæå ïîääåðæêå ïðîòîêîëà HTTPS, ÷åðåç êîòîðûé òåïåðü âîçìîæíà ðåïëèêàöèÿ äàííûõ.
14
Ââåäåíèå
Íîâûé òèï äàííûõ XML  íàñòîÿùèé ìîìåíò ôîðìàò XML èñïîëüçóåòñÿ âî ìíîãèõ ïðîãðàììíûõ ñèñòåìàõ. Îí çàðåêîìåíäîâàë ñåáÿ êàê ïëàòôîðìåííî-íåçàâèñèìûé ôîðìàò ïðåäñòàâëåíèÿ íåñòðóêòóðèðîâàííûõ è ñòðóêòóðèðîâàííûõ äàííûõ.  ïðåäûäóùåé âåðñèè Microsoft SQL Server áûëè ðåàëèçîâàíû äâà ìåõàíèçìà äëÿ ðàáîòû ñ XML: õðàíåíèå ôàéëîâ â òåêñòîâûõ ïîëÿõ è êîíâåðòàöèÿ ñîäåðæèìîãî XML-äîêóìåíòà â ðåëÿöèîííûå òàáëèöû.  ñëó÷àå èñïîëüçîâàíèÿ ïåðâîãî ìåõàíèçìà îñòàâàëîñü òîëüêî ðåàëèçîâàòü ñèíòàêñè÷åñêèé àíàëèç êîäà íà êëèåíòñêîé ñòîðîíå ïðèëîæåíèÿ. Âòîðîé ìåõàíèçì ïðèìåíèì òîëüêî äëÿ ñòðóêòóðèðîâàííûõ äàííûõ â ôîðìàòå XML. Íåêîòîðûå ïðîáëåìû íå óäàâàëîñü ðåøèòü ñ èñïîëüçîâàíèåì ïðåäëîæåííûõ ìåõàíèçìîâ. Äëÿ ðåøåíèÿ ïîäîáíûõ ïðîáëåì â Microsoft SQL Server 2005 ñîçäàí íîâûé òèï äàííûõ. Íîâûé òèï äàííûõ, íàçûâàåìûé XML, îòíîñèòñÿ ê òèïàì ïåðâîãî óðîâíÿ. Ýòî îçíà÷àåò, ÷òî îí ìîæåò èñïîëüçîâàòüñÿ òî÷íî òàê æå, êàê è äðóãèå òèïû SQL Server ïåðâîãî óðîâíÿ. Ýòî ïîäðàçóìåâàåò èñïîëüçîâàíèå òèïà â êà÷åñòâå êîëîíîê òàáëèö, ïåðåìåííûõ T-SQL, à òàêæå ïàðàìåòðîâ ïðîöåäóð.
Ðàñøèðåííàÿ ïîääåðæêà ÿçûêîâ Èñïîëüçóÿ îáùèé ÿçûê âûïîëíåíèÿ ïðîãðàìì (CLR), ðàçðàáîò÷èêè ìîãóò âûáèðàòü îäèí èç íåñêîëüêèõ ÿçûêîâ ïðîãðàììèðîâàíèÿ, êîòîðûé áîëüøå âñåõ ïîäõîäèò äëÿ ðåøåíèÿ âîçíèêàþùèõ ïðîáëåì. Ðàçðàáîò÷èêè ìîãóò âûáèðàòü îäèí èç ñëåäóþùèõ ÿçûêîâ ïðîãðàììèðîâàíèÿ, íà êîòîðîì áóäóò ñîçäàâàòüñÿ ïðèëîæåíèÿ ñåðâåðà SQL: Transact-SQL, Microsoft Visual Basic .NET èëè Microsoft Visual C# .NET. Ïîìèìî ýòîãî CLR ïîçâîëÿåò ñîçäàâàòü ãèáêèå ïðèëîæåíèÿ, ñîñòîÿùèå èç ïðîãðàììíîãî êîäà íà íåñêîëüêèõ ÿçûêàõ ïðîãðàììèðîâàíèÿ, à òàêæå èñïîëüçîâàòü âñòàâêè êîäà, íàïèñàííîãî â ïðîãðàììíûõ ñðåäàõ îò òðåòüèõ ïîñòàâùèêîâ.
Èíòåãðàöèÿ ñ .NET Ïîæàëóé, íàèáîëüøèå èçìåíåíèÿ, êîòîðûå êîñíóëèñü SQL Server, — ýòî èíòåãðàöèÿ äàííîãî ïðîãðàììíîãî ïðîäóêòà ñ .NET Framework. Âåðñèÿ SQL Server 2000 òàêæå èìåëà ýëåìåíòû èíòåãðàöèè ñ äàííîé ñðåäîé ðàçðàáîòêè, çà îäíèì î÷åíü âàæíûì èñêëþ÷åíèåì: ÿäðî ñåðâåðà íå èíòåãðèðîâàëîñü ñ .NET Framework. Âñëåäñòâèå ýòîãî âî âðåìÿ ñîçäàíèÿ ìíîãîçâåííûõ ðåøåíèé ïðèõîäèëîñü ïðèáåãàòü ê òàêèì òåõíîëîãèÿì, êàê ADO.NET. Òåïåðü æå ìîæíî îòêàçàòüñÿ îò èñïîëüçîâàíèÿ ïðîìåæóòî÷íûõ ñðåä ðàçðàáîòêè è ïåðåéòè íà åäèíóþ òåõíîëîãèþ ñîçäàíèÿ ïðèëîæåíèé ñ ïîìîùüþ òåõíîëîãèè .NET. Êîä, íàïèñàííûé íà C#, J#, VB.NET è äðóãèõ ÿçûêàõ ïðîãðàììèðîâàíèÿ ñðåäû .NET Framework, ìîæåò áûòü âûïîëíåí íåïîñðåäñòâåííî òðàíñëÿòîðîì ÿäðà SQL Server.
SQL Server äëÿ ìîáèëüíûõ óñòðîéñòâ
15
Òàêèå ÿçûêè ïðîãðàììèðîâàíèÿ, êàê C#, J# è VB.NET, ïîçâîëÿþò ðåàëèçîâàòü áîëåå ñëîæíóþ ëîãèêó, èçáàâèòüñÿ îò èñïîëüçîâàíèÿ ñòîðîííèõ òåõíîëîãèé, à òàêæå ñýêîíîìèòü ñðåäñòâà ìíîãèì ïðåäïðèÿòèÿì íà ðàçðàáîòêå ïðîãðàììíûõ ïðîäóêòîâ. Áîëåå òîãî, ïðîãðàììèñòàì, âûïîëíÿþùèì ðàçðàáîòêè ïðîãðàììíîãî êîäà äëÿ SQL Server, íåò íåîáõîäèìîñòè èçó÷àòü ïðåèìóùåñòâà äàííîãî ïðîãðàììíîãî ïðîäóêòà. Òåïåðü ïðîãðàììèñòû ìîãóò ëåãêî ñîçäàâàòü õðàíèìûå ïðîöåäóðû, òðèããåðû, ïîëüçîâàòåëüñêèå ôóíêöèè è äðóãèå âñòàâêè ïðîãðàììíîãî êîäà ñ èñïîëüçîâàíèåì âñåé ìîùè ïðîãðàììíîé ñðåäû .NET Framework. Íå ñòîèò òàêæå çàáûâàòü î ôëàãìàíå ñðåäû .NET Framework — ïðîãðàììíîì ïðîäóêòå Visual Studio .NET. Íîâàÿ âåðñèÿ ýòîãî ïðîäóêòà áîëåå ïîëíî èíòåãðèðóåòñÿ ñ Microsoft SQL Server 2005.  ïåðâóþ î÷åðåäü ýòî äîñòèãàåòñÿ çà ñ÷åò ïðîãðàììíûõ ìîäóëåé è óòèëèò. Ýòî ïîçâîëÿåò äîáèòüñÿ áîëåå ïîëíîé ïîääåðæêè XML, à òàêæå OLAP. Ñðåäè òàêèõ ïðîãðàììíûõ ìîäóëåé ñòîèò âûäåëèòü XML for Analysis (XMLA — ñïåöèàëüíûé OLAP-èíòåðôåéñ äëÿ ðåøåíèÿ ðàçíîãî ðîäà áèçíåñ-çàäà÷), à òàêæå MultiDimensional Expression (MDX) — ñèíòàêñèñ ìíîãîìåðíûõ çàïðîñîâ â Microsoft SQL Server 2005. Áîëåå òîãî, íîâàÿ âåðñèÿ Visual Studio .NET 2005 ïîääåðæèâàåò äîïîëíèòåëüíûé íàáîð îáúåêòîâ äëÿ ñîçäàíèÿ àíàëèòè÷åñêèõ ïðèëîæåíèé ñ èñïîëüçîâàíèåì äàííûõ Microsoft SQL Server 2005.
SQL Server äëÿ ìîáèëüíûõ óñòðîéñòâ Âìåñòå ñ âûõîäîì SQL Server 2005 òàêæå áûëà âûïóùåíà ïðîáíàÿ âåðñèÿ äàííîãî ïðèëîæåíèÿ äëÿ èñïîëüçîâàíèÿ â ìîáèëüíûõ óñòðîéñòâàõ, êîòîðàÿ ðàíåå íîñèëà íàçâàíèå SQL Server 2005 Windows CE Edition. Ñåé÷àñ äàííîå ïðèëîæåíèå íàçûâàåòñÿ Microsoft SQL Server Mobile Edition. Äëÿ åãî íàñòðîéêè è óïðàâëåíèÿ, òàê æå êàê è äëÿ îáû÷íîé âåðñèè SQL Server, èñïîëüçóåòñÿ SQL Server Management Studio. Òåïåðü ðàçðàáîò÷èêè ìîãóò, èñïîëüçóÿ äàííóþ óòèëèòó, ñîçäàâàòü áàçû äàííûõ, ìàíèïóëèðîâàòü ñõåìàìè è îáúåêòàìè áàçû äàííûõ SQL Server Mobile Edition. Âñå ýòî ìîæíî äåëàòü âíå çàâèñèìîñòè îò òîãî, íà êàêîì óñòðîéñòâå ðàñïîëîæåíà ìîáèëüíàÿ áàçà äàííûõ: íà âûäåëåííîì ñåðâåðå èëè ìîáèëüíîì óñòðîéñòâå (ñ ïðåäóñòàíîâëåííîé îïåðàöèîííîé ñèñòåìîé Windows Mobile). Ñ ïîìîùüþ Management Studio ìîæíî íàñòðàèâàòü ðåïëèêàöèþ è ïóáëèêàöèþ äàííûõ ìåæäó áàçîé äàííûõ íà îñíîâå îáû÷íîãî SQL Server è ìîáèëüíîé âåðñèè. Ñ ïîìîùüþ Management Studio òàêæå ìîæíî âûïîëíÿòü çàïðîñû ê áàçå äàííûõ íà îñíîâå SQL Server Mobile Edition. Íåîáõîäèìî îñîáî îòìåòèòü ñëåäóþùóþ îñîáåííîñòü SQL Server Mobile Edition: ýòà âåðñèÿ ïðîãðàììíîãî ïðîäóêòà èíòåãðèðîâàíà ñ ñåðâèñàìè òðàíñôîðìàöèè äàííûõ (DTS). Èñïîëüçóÿ äàííîå ïðåèìóùåñòâî, ðàçðàáîò÷èêè ìîãóò íàïðÿìóþ îáðàùàòüñÿ ê áàçå äàííûõ è îòîáðàæàòü äàííûå â íåîáõîäèìîì äëÿ íèõ ôîðìàòå. Èñïîëüçîâàíèå DTS-îáúåêòîâ ïîçâîëèò ðàñøèðèòü ãðàíèöû ïðèìåíèìîñòè äàííîé òåõíîëîãèè â ïðèëîæåíèÿõ Visual Studio 2005.  ìîáèëüíîé âåðñèè ïðîãðàììíîãî ïðîäóêòà äîñòàòî÷íî ìíîãî íîâîââåäåíèé è ïðåèìóùåñòâ, ñòàâøèõ îáû÷íûì ÿâëåíèåì äëÿ áàçû äàííûõ Enterprise, îäíàêî
16
Ââåäåíèå
íå ðàñïðîñòðàíåííûì äëÿ ìîáèëüíûõ áàç äàííûõ. Ñðåäè òàêèõ ïðåèìóùåñòâ ñòîèò âûäåëèòü ñëåäóþùèå: · âîçìîæíîñòü êëàñòåðèçàöèè; · ñîçäàíèå ðåçåðâíûõ êîïèé è âîññòàíîâëåíèå äàííûõ; · ðåãèñòðàöèÿ òðàíçàêöèé; · èñïîëüçîâàíèå Management Studio äëÿ àäìèíèñòðèðîâàíèÿ ñèñòåìû.
Çåðêàëèðîâàíèå áàç äàííûõ  íîâîé âåðñèè SQL Server çíà÷èòåëüíî óëó÷øåíû âîçìîæíîñòè ïåðåñûëêè ïðîòîêîëîâ áàç äàííûõ ñ ïîìîùüþ ìåõàíèçìà èõ çåðêàëèðîâàíèÿ. Çåðêàëèðîâàíèå áàç äàííûõ ïîçâîëÿåò ïîòîêîâîå âûïîëíåíèå òðàíçàêöèé ìåæäó îòäåëüíûìè ñåðâåðàìè â ðàñïðåäåëåííîé ñèñòåìå.  ñëó÷àå âîçíèêíîâåíèÿ îøèáêè íà ïåðâè÷íîì ñåðâåðå (íà êîòîðîì âûïîëíÿëàñü òðàíçàêöèÿ) ïðèëîæåíèå ìîæåò âîññòàíîâèòü ñîåäèíåíèå ñ îäíèì èç âòîðè÷íûõ ñåðâåðîâ. Íà ïîäîáíóþ ïðîöåäóðó âîññòàíîâëåíèÿ ñâÿçè ïðàêòè÷åñêè íå òðàòèòñÿ âðåìåíè, ÷òî ïîçâîëÿåò èçáåæàòü îãðîìíîãî ÷èñëà ïðîáëåì, ñâÿçàííûõ ñ îøèáêàìè â ñåòè èëè íåñòàáèëüíîé ðàáîòîé ñåðâåðîâ.  îòëè÷èå îò êëàñòåðèçàöèè ñåðâåðîâ, çåðêàëèðîâàíèå â ïîëíîé ìåðå èñïîëüçóåò êýøèðîâàíèå äàííûõ, à ïîòîìó ïîçâîëÿåò áûñòðî âîññòàíàâëèâàòü òðàíçàêöèþ ñ ìåñòà ðàçðûâà çà ñ÷åò ñèíõðîíèçàöèè ïåðâè÷íûõ è âòîðè÷íûõ ñåðâåðîâ. Ñõåìà çåðêàëèðîâàíèÿ ïîäðàçóìåâàåò, ÷òî â íåé èñïîëüçóþòñÿ êàê ìèíèìóì òðè ñåðâåðà ñ çàïóùåííûìè SQL Server 2005. Êàæäûé èç òðåõ ñåðâåðîâ âûïîëíÿåò îïðåäåëåííûå îïåðàöèè, õàðàêòåðíûå òîëüêî äëÿ íåãî: · ãëàâíûé ñåðâåð — ñåðâåð, íà êîòîðîì ðàñïîëàãàåòñÿ ïðèëîæåíèå, âûïîëíÿþùåå òðàíçàêöèþ; · çåðêàëüíûé ñåðâåð — ñåðâåð, íà êîòîðîì âûïîëíÿåòñÿ âòîðè÷íîå ïðîòîêîëèðîâàíèå òðàíçàêöèè. Ïðîòîêîëèðîâàíèå íà ýòîì ñåðâåðå ìîæåò âûïîëíÿòüñÿ êàê â ñèíõðîííîì, òàê è â àñèíõðîííîì ðåæèìå. Çåðêàëüíûé ñåðâåð íàõîäèòñÿ â ñîñòîÿíèè, â êîòîðîì çàïðåùåí ïðÿìîé äîñòóï ê äàííûì. Íà ãëàâíîì ñåðâåðå âûïîëíÿåòñÿ ïðîòîêîëèðîâàíèå òðàíçàêöèè, îäíîâðåìåííî ñ ýòèì àíàëîãè÷íûå îïåðàöèè âûïîëíÿþòñÿ íà çåðêàëüíîì ñåðâåðå. Áëàãîäàðÿ ýòîìó ïðîòîêîëû áàç äàííûõ îáîèõ ñåðâåðîâ ñîâïàäàþò, à ñåðâåðû íàõîäÿòñÿ â îäèíàêîâûõ ñîñòîÿíèÿõ âûïîëíåíèÿ òðàíçàêöèè. Òàêèì îáðàçîì, ìîæíî äîáèòüñÿ äóáëèðîâàíèÿ äàííûõ íà îáîèõ ñåðâåðàõ è âîçìîæíîñòè ìîìåíòàëüíîãî âîññòàíîâëåíèÿ òðàíçàêöèè ïðè ðàçðûâå ñîåäèíåíèÿ ñ ãëàâíûì ñåðâåðîì; · cåðâåð-óäîñòîâåðèòåëü — ýòî ñåðâåð, èñïîëüçóþùèéñÿ äëÿ ðàçðåøåíèÿ êîíôëèêòîâ ìåæäó ãëàâíûì è çåðêàëüíûì ñåðâåðàìè. Åãî «ãîëîñ» ó÷èòûâàåòñÿ âî âðåìÿ îïðåäåëåíèÿ, êàêîé èç äâóõ ñåðâåðîâ ÿâëÿåòñÿ ãëàâíûì, à êàêîé çåðêàëüíûì â òîé èëè èíîé ñèòóàöèè. Ãëàâíûé è çåðêàëüíûé ñåð-
Âîññòàíîâëåíèå âî âðåìÿ ðàáîòû
17
âåðû âñåãäà «ïðèñëóøèâàþòñÿ» ê ìíåíèþ äàííîãî ñåðâåðà, ÷òî ïîçâîëÿåò èñêëþ÷èòü êîíôëèêòíûå ñèòóàöèè. Äëÿ êëèåíòñêîãî êîìïüþòåðà ïåðåêëþ÷åíèå ìåæäó ãëàâíûì è çåðêàëüíûì íåçàìåòíî, ïðè ýòîì ñåðâåð-óäîñòîâåðèòåëü èñïîëüçóåòñÿ äëÿ áîëåå áûñòðîãî ðàçðåøåíèÿ êîíôëèêòîâ. Ñðåäè îñíîâíûõ ïðåèìóùåñòâ çåðêàëèðîâàíèÿ áàç äàííûõ ñëåäóåò âûäåëèòü âîçìîæíîñòü èñïîëüçîâàíèÿ äàííîãî ìåõàíèçìà â ñèñòåìàõ ñ íèçêîé ïðîïóñêíîé ñïîñîáíîñòüþ ñåòåé, à òàêæå âîçìîæíîñòü âûïîëíåíèÿ ñèíõðîíèçàöèè äàííûõ â îáîèõ íàïðàâëåíèÿõ. Ýòî îçíà÷àåò, ÷òî â íåêîòîðûõ ñèòóàöèÿõ ãëàâíûé è çåðêàëüíûé ñåðâåðû ìîãóò ìåíÿòüñÿ ìåñòàìè.  òîì ñëó÷àå, åñëè ïî êàêèì-ëèáî ïðè÷èíàì ãëàâíûé ñåðâåð ñòàíîâèòñÿ íåäîñòóïíûì, âûïîëíåíèå òðàíçàêöèè ïðîäîëæàåòñÿ íà çåðêàëüíîì ñåðâåðå. Ïîñëå ýòîãî çåðêàëüíûé ñåðâåð ñòàíîâèòñÿ ãëàâíûì. Ïîñëå òîãî êàê áûâøèé ïåðåä ýòèì ãëàâíûì ñåðâåð ñòàíåò äîñòóïíûì, îí ïðèíèìàåò íà ñåáÿ îáÿçàííîñòè çåðêàëüíîãî ñåðâåðà. Êàê òîëüêî áóäåò çàêîí÷åíà ñèíõðîíèçàöèÿ äàííûõ, îí áóäåò ãîòîâ ïîäìåíèòü ãëàâíûé ñåðâåð â ñëó÷àå âîçíèêíîâåíèÿ êàêèõ-ëèáî ïðîáëåì. Îòìåòèì åùå îäíî ïðåèìóùåñòâî çåðêàëèðîâàíèÿ áàç äàííûõ: äëÿ äàííîãî ìåõàíèçìà íå òðåáóåòñÿ äîïîëíèòåëüíîãî ïðîãðàììíîãî èëè àïïàðàòíîãî îáåñïå÷åíèÿ, ÷òî â êîíå÷íîì èòîãå óäåøåâëÿåò ðåøåíèå.
Ñíèìîê áàçû äàííûõ  Microsoft SQL Server 2005 äëÿ àäìèíèñòðàòîðîâ ïîÿâèëàñü âîçìîæíîñòü ñîçäàâàòü è èñïîëüçîâàòü ïðåäñòàâëåíèÿ áàç äàííûõ â ðåæèìå òîëüêî äëÿ ÷òåíèÿ. Ïîäîáíûå ïðåäñòàâëåíèÿ íîñÿò íàçâàíèå ñíèìêà áàçû äàííûõ. Ñíèìêè ìîæíî èñïîëüçîâàòü áåç ñîçäàíèÿ ñëóæåáíîé êîïèè áàçû äàííûõ. Èñïîëüçîâàíèå ñíèìêà èíòåðåñíî â òîì îòíîøåíèè, ÷òî âî âðåìÿ âíåñåíèÿ êàêèõ-ëèáî èçìåíåíèé â áàçó äàííûõ ñîçäàåòñÿ îòäåëüíàÿ êîïèÿ òàáëèö, êîòîðûå ïîäâåðãàëèñü ìîäèôèêàöèè.  òîì ñëó÷àå, åñëè èçìåíåíèÿ áûëè âíåñåíû ñëó÷àéíî èëè ïðîèçîøåë ñáîé â ðàáîòå áàçû äàííûõ, áëàãîäàðÿ ñíèìêó ìîæíî âåðíóòü áàçó äàííûõ â ñîñòîÿíèå, ïðåäøåñòâóþùåå âíåñåíèþ â íåå èçìåíåíèé. Äëÿ ýòîãî íåîáõîäèìî ïðîñòî âûïîëíèòü êîïèðîâàíèå äàííûõ, ïîäâåðãàâøèõñÿ èçìåíåíèþ, èç ñíèìêà â ðàáî÷óþ áàçó äàííûõ.
Âîññòàíîâëåíèå âî âðåìÿ ðàáîòû  íîâîé âåðñèè SQL Server ïîÿâèëàñü âîçìîæíîñòü âûïîëíèòü âîññòàíîâëåíèå äàííûõ (ïîñëå ñáîÿ èëè âíåñåíèÿ íåïðàâèëüíûõ äàííûõ) îòäåëüíî âçÿòîãî ýêçåìïëÿðà áàçû äàííûõ áåç åãî îñòàíîâêè. Âî âðåìÿ âîññòàíîâëåíèÿ îïðåäåëåííîãî íàáîðà äàííûõ ýêçåìïëÿð áàçû äàííûõ áóäåò íåäîñòóïåí. Îäíàêî ïî îêîí÷àíèè ïðîöåññà âîññòàíîâëåíèÿ äàííûå áóäóò äîñòóïíû òàê æå, êàê è äðóãèå íàáîðû äàííûõ.  SQL Server 2000 è áîëåå ðàííèõ âåðñèÿõ áàç äàííûõ òðåáîâàëîñü ñíà÷àëà îñòàíîâèòü ýêçåìïëÿð áàçû äàííûõ äëÿ âîññòàíîâëåíèÿ, âûïîëíèòü êîïèðîâàíèå äàííûõ èç ðåçåðâíîé êîïèè, à çàòåì ïåðåçàïóñòèòü ýêçåìïëÿð.
18
Ââåäåíèå
 íîâîé âåðñèè íåò íåîáõîäèìîñòè îñòàíàâëèâàòü ýêçåìïëÿð äëÿ âîññòàíîâëåíèÿ äàííûõ. Äëÿ âîññòàíîâëåíèÿ äàííûõ âî âðåìÿ ðàáîòû ýêçåìïëÿðà äîñòóïíû äâà ñïîñîáà: · âîññòàíîâëåíèå öåëîãî ôàéëà áàçû äàííûõ; · âîññòàíîâëåíèå ãðóïïû ôàéëîâ, ïðåäñòàâëÿþùåé ñîáîé íå ÷òî èíîå, êàê íàáîð îòäåëüíî âçÿòûõ ôàéëîâ.
Îò èçäàòåëüñòâà Âàøè çàìå÷àíèÿ, ïðåäëîæåíèÿ, âîïðîñû îòïðàâëÿéòå ïî àäðåñó ýëåêòðîííîé ïî÷òû
[email protected] (èçäàòåëüñòâî «Ïèòåð», êîìïüþòåðíàÿ ðåäàêöèÿ). Ìû áóäåì ðàäû óçíàòü âàøå ìíåíèå! Ïîäðîáíóþ èíôîðìàöèþ î íàøèõ êíèãàõ âû íàéäåòå íà âåá-ñàéòå èçäàòåëüñòâà http://www.piter.com.
1
Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
Óñòàíîâêà SQL Server 2005 íà÷èíàåòñÿ ñ ïðîâåðêè êîíôèãóðàöèè êîìïüþòåðà. Âî âðåìÿ äàííîãî îáñëåäîâàíèÿ êîìïüþòåðà ïðîâåðÿåòñÿ àïïàðàòíîå è ïðîãðàììíîå îáåñïå÷åíèå íà ïðåäìåò óäîâëåòâîðåíèÿ óñëîâèé óñòàíîâêè.  òîì ñëó÷àå, åñëè êîìïüþòåð èëè ïðîãðàììíîå îáåñïå÷åíèå íå óäîâëåòâîðÿþò óñëîâèÿì óñòàíîâêè, âûâîäèòñÿ ñîîòâåòñòâóþùåå ñîîáùåíèå è óñòàíîâêà ïðåêðàùàåòñÿ. Äëÿ îòñëåæèâàíèÿ ïîäîáíûõ ñèòóàöèé, à òàêæå äðóãèõ îøèáîê ïðè óñòàíîâêå SQL Server âåäåòñÿ çàïèñü ñèñòåìíîãî æóðíàëà. Òàêæå ñòîèò îòìåòèòü òî, ÷òî òåïåðü óñòàíàâëèâàòü SQL Server ìîæíî è ñ ïîìîùüþ êîìàíäû Add or Remove Programs (Óñòàíîâêà è óäàëåíèå ïðîãðàìì) îïåðàöèîííîé ñèñòåìû Windows. Ïðîñòîòà óñòàíîâêè SQL Server 2005 äîñòèãàåòñÿ áëàãîäàðÿ èñïîëüçîâàíèþ ìàñòåðà óñòàíîâêè. Ìàñòåð óñòàíîâêè ïîñòðîåí íà îñíîâå ïðîãðàììíîãî ïðîäóêòà Windows Installer 3.0 è ïîçâîëÿåò ðåàëèçîâàòü âñå åãî ïðåèìóùåñòâà â îòíîøåíèè âñåõ ýòàïîâ óñòàíîâêè Microsoft SQL Server. Ñ åãî ïîìîùüþ óñòàíàâëèâàþòñÿ ïðàêòè÷åñêè âñå êîìïîíåíòû SQL Server: ÿäðî ñåðâåðà, ñåðâèñû îò÷åòîâ, íîòèôèêàöèè, ïðåîáðàçîâàíèÿ äàííûõ è àíàëèòèêè, à òàêæå èíñòðóìåíòû äëÿ ðàçðàáîòêè, óïðàâëåíèÿ è ðåïëèêàöèè. Microsoft SQL Server 2005 ïîääåðæèâàåò âñþ ëèíåéêó 32-ðàçðÿäíûõ âåðñèé îïåðàöèîííûõ ñèñòåì Microsoft Windows. Îäíàêî äàííàÿ âåðñèÿ îòëè÷àåòñÿ îò ïðåäûäóùèõ òåì, ÷òî â íåå âñòðîåíà ïîääåðæêà 64-ðàçðÿäíûõ ïëàòôîðì, òî åñòü SQL Server òàêæå âûïóñêàåòñÿ â âåðñèè äëÿ 64-ðàçðÿäíîãî àïïàðàòíîãî îáåñïå÷åíèÿ. Ýòî âíîñèò ñâîè îñîáåííîñòè â ðàáîòó ñèñòåìû, îäíàêî ïðàêòè÷åñêè íå òðåáóåò îò àäìèíèñòðàòîðà èëè ðàçðàáîò÷èêà êàêèõ-ëèáî äîïîëíèòåëüíûõ äåéñòâèé âî âðåìÿ óñòàíîâêè äàííîãî ïðîãðàììíîãî ïðîäóêòà.  äàííîé ãëàâå ìû ðàññìîòðèì îáùèå õàðàêòåðèñòèêè SQL Server 2005, ðàçáåðåìñÿ â òîì, êàêèå ðåäàêöèè äàííîãî ïðîãðàììíîãî ïðîäóêòà âûøëè, è ïîñòàðàåìñÿ î÷åðòèòü íàáîð êîìïîíåíòîâ è ñåðâèñîâ, êîòîðûå ñîäåðæàòñÿ â SQL Server 2005. Äàëåå ìû ðàññìîòðèì âîïðîñû, êàñàþùèåñÿ ñîâìåñòíîãî èñïîëüçîâàíèÿ SQL Server 2005 è Internet Information Services (IIS), à òàêæå îãðàíè÷åíèÿ, íàëàãàåìûå
20
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
íà ñèñòåìó ïðè èñïîëüçîâàíèè 32- è 64-ðàçðÿäíûõ ðåäàêöèé SQL Server.  ðàçäåëå 1.2 «Óñòàíîâêà MS SQL Server 2005» ìû ðàññìîòðèì âîïðîñû, êàñàþùèåñÿ ïðîöåññà óñòàíîâêè íîâîé âåðñèè SQL Server. Ïðè ýòîì áóäóò çàòðîíóòû ïðîáëåìû ëîêàëüíîé è óäàëåííîé óñòàíîâêè ýòîãî ïðîãðàììíîãî ïðîäóêòà, óñòàíîâêè íåñêîëüêèõ ýêçåìïëÿðîâ SQL Server è îãðàíè÷åíèÿ, íàëàãàåìûå íà ñèñòåìó ïðè óñòàíîâêå íåñêîëüêèõ ýêçåìïëÿðîâ.  çàâåðøàþùåì ðàçäåëå 1.3 «Îáíîâëåíèå MS SQL Server 2005» ìû îñòàíîâèìñÿ íà îáíîâëåíèè ðàçëè÷íûõ ñèñòåì äî íîâîé âåðñèè SQL Server. Áóäóò ðàññìîòðåíû âîïðîñû îáíîâëåíèÿ SQL Server âåðñèé 6.5, 7.0 è 2000.  êîíöå ðàçäåëà 1.3 áóäóò ðàññìîòðåíû âîïðîñû îáíîâëåíèÿ ðåïëèöèðóåìûõ áàç äàííûõ è êëàñòåðîâ íà îñíîâå ïðåäûäóùèõ ñèñòåì.
1.1. Îáùèå õàðàêòåðèñòèêè SQL Server 2005 Êàê áûëî ñêàçàíî ðàíåå, Microsoft SQL Server 2005 èìååò ðÿä ðåäàêöèé, êîòîðûå âêëþ÷àþò 32- è 64-ðàçðÿäíûå âåðñèè äàííîãî ïðîãðàììíîãî ïðîäóêòà. Îñòàíîâèìñÿ è ðàññìîòðèì áîëåå äåòàëüíî 32-ðàçðÿäíûå âåðñèè ñåðâåðà SQL: · SQL Server 2005 Express Edition — ïîæàëóé, ñàìàÿ ïðîñòàÿ âåðñèÿ èçâåñòíîãî ïðîãðàììíîãî ïðîäóêòà, êîòîðàÿ èìååò ðÿä îãðàíè÷åíèé ïî ñðàâíåíèþ ñ äðóãèìè ðåäàêöèÿìè SQL Server (â ÷àñòíîñòè, â êîëè÷åñòâå îäíîâðåìåííûõ ïîäêëþ÷åíèé). Express Edition ïîçâîëÿåò áûñòðî ðàçâîðà÷èâàòü ïðèëîæåíèÿ íà ïðåäïðèÿòèÿõ ñ ìàëûì êîëè÷åñòâîì êîìïüþòåðîâ, èñïîëüçóÿ ïðè ýòîì îñíîâíûå ôóíêöèè SQL Server è íå çàáîòÿñü î ðàçâåðòûâàíèè äîïîëíèòåëüíûõ ìîäóëåé è ñåðâèñîâ. Express Edition òàêæå ïðåäñòàâëÿåò ñîáîé èäåàëüíîå ðåøåíèå äëÿ îòäåëüíûõ ïîëüçîâàòåëåé, ïîñêîëüêó îíî ðàñïðîñòðàíÿåòñÿ áåñïëàòíî, è êàæäûé æåëàþùèé ìîæåò çàãðóçèòü åãî ñ ñàéòà êîìïàíèè Microsoft. Ýòî èäåàëüíàÿ çàìåíà äëÿ MSDE. · SQL Server 2005 Workgroup Edition ÿâëÿåòñÿ íîâîé ðåäàêöèåé SQL Server è ïðåäñòàâëÿåò ñîáîé âûñîêîïðîèçâîäèòåëüíîå è ïðîñòîå â èñïîëüçîâàíèè ðåøåíèå äëÿ óïðàâëåíèÿ áàçàìè äàííûõ. Ýòà ðåäàêöèÿ íàèëó÷øèì îáðàçîì ïîäõîäèò äëÿ íåáîëüøèõ è ñðåäíèõ ïðåäïðèÿòèé, êîòîðûì íå õâàòàåò ôóíêöèîíàëüíîñòè SQL Server 2005 Express Edition è òðåáóåòñÿ íåäîðîãàÿ è äîñòàòî÷íî ìîùíàÿ ñèñòåìà óïðàâëåíèÿ áàçàìè äàííûõ. Ïî ñðàâíåíèþ ñ Express Edition äàííàÿ ðåäàêöèÿ èìååò áîëüøèé íàáîð ôóíêöèîíàëüíîñòè: ñðåäñòâà èìïîðòà-ýêñïîðòà, âîçìîæíîñòü ðåïëèöèðîâàíèÿ è ñîñòàâëåíèÿ ðåçåðâíûõ êîïèé ñèñòåìíîãî æóðíàëà, à òàêæå ìîùíîå ñðåäñòâî äëÿ óïðàâëåíèÿ è ðàçðàáîòêè ïðèëîæåíèé áàç äàííûõ Management Studio. · SQL Server 2005 Standard Edition — ýòî ìîùíàÿ ïëàòôîðìà äëÿ óïðàâëåíèÿ äàííûìè è èõ àíàëèçà. Ýòà ðåäàêöèÿ ïðåäíàçíà÷åíà äëÿ ïðåäïðèÿòèé ñðåäíåãî ðàçìåðà è êðóïíûõ îòäåëîâ, êîòîðûì òðåáóåòñÿ áîëåå øèðîêèé íàáîð ôóíêöèé ïî ñðàâíåíèþ ñ SQL Server 2005 Workgroup Edition (íàïðèìåð, ñðåäñòâà àíàëèçà áèçíåñ-ïðîöåññîâ). Äàííàÿ ðåäàêöèÿ îáëàäàåò ñëåäóþùèìè ïðåèìóùåñòâàìè: ïîääåðæêà 64-ðàçðÿäíûõ ïðîöåññîðîâ, ñîçäàíèå êîïèé áàç äàííûõ, ïåðåíîñ áàç äàííûõ, ðàñøèðåííûå âîçìîæíîñòè ñëóæá àíàëèçà, èíòåãðàöèè è ñîñòàâëåíèÿ îò÷åòîâ, àíàëèç äàííûõ, ïîëíàÿ ðåïëèêàöèÿ è ïóáëèêàöèÿ SSB.
1.1. Îáùèå õàðàêòåðèñòèêè SQL Server 2005
21
· SQL Server 2005 Enterprise Edition — ýòî ìîùíàÿ ïëàòôîðìà ìàñøòàáà ïðåäïðèÿòèÿ äëÿ óïðàâëåíèÿ äàííûìè è èõ àíàëèçà, ïðåäíàçíà÷åííàÿ äëÿ êðèòè÷åñêè âàæíûõ êîðïîðàòèâíûõ ïðèëîæåíèé. Äàííàÿ ðåäàêöèÿ ïðèëîæåíèÿ ëó÷øå âñåãî ïîäõîäèò äëÿ êîìïàíèé ñî ñëîæíîé ñòðóêòóðîé îáðàáîòêè äàííûõ, èìåþùèõ ïîòðåáíîñòü â ñëîæíîì àíàëèçå è âûñîêîé íàäåæíîñòè ðàçâåðòûâàåìûõ ñèñòåì. Ôóíêöèîíàëüíîñòü ðåäàêöèè Enterprise Edition îòëè÷àåòñÿ îò äðóãèõ íåîãðàíè÷åííûì ìàñøòàáèðîâàíèåì, óëó÷øåííûìè ñðåäñòâàìè çåðêàëèðîâàíèÿ, ñîçäàíèÿ ðàçäåëîâ, ïàðàëëåëèçìîì, ñîçäàíèåì ñíèìêîâ áàç äàííûõ, ìîùíûìè ñðåäñòâàìè àíàëèçà (÷òî âêëþ÷àåò äîáû÷ó äàííûõ è OLAP), óñîâåðøåíñòâîâàííûå ñëóæáû èíòåãðàöèè, à òàêæå íàñòðàèâàåìûå ñëóæáû ñîçäàíèÿ îò÷åòîâ. · SQL Server 2005 Developer Edition ïîçâîëÿåò ñîçäàâàòü ðàçðàáîò÷èêàì ìîùíûå ðåøåíèÿ íà îñíîâå äàííîãî ïðîãðàììíîãî ïðîäóêòà. Ýòà ðåäàêöèÿ SQL Server âêëþ÷àåò âñå ïðåèìóùåñòâà ðåäàêöèè Enterprise Edition, îäíàêî îòëè÷àåòñÿ îò ïîñëåäíåé ñïîñîáîì ëèöåíçèðîâàíèÿ. Developer Edition ïîçèöèîíèðóåòñÿ íà ðûíîê êàê ñðåäà äëÿ ðàçðàáîòêè ñî âñåìè âûòåêàþùèìè èç ýòîãî öåíîâûìè ïîñëåäñòâèÿìè. Äàííàÿ âåðñèÿ ïðîãðàììíîãî ïðîäóêòà, òàê æå êàê è Standard Edition, äîñòóïíà â ðåäàêöèè äëÿ 64-ðàçðÿäíûõ âåðñèé àïïàðàòíîãî îáåñïå÷åíèÿ. · SQL Server 2005 Mobile Edition — ýòî íîâûé ïðîäóêò â ëèíåéêå ðåäàêöèé ñåðâåðà SQL. Âûïóñêîì äàííîé ðåäàêöèè êîìïàíèÿ Microsoft îòäàëà äàíü áóðíîìó ðàçâèòèþ ðûíêà ìîáèëüíûõ óñòðîéñòâ, êîòîðûé â äàííûé ìîìåíò òîëüêî íàáèðàåò îáîðîòû. Ñîçäàâàëàñü ðåäàêöèÿ Mobile Edition ãëàâíûì îáðàçîì ñ ïðèöåëîì íà âîçìîæíîñòè ðåïëèêàöèè äàííûõ èç ïåðâè÷íîãî êîìïüþòåðà ñ SQL Server 2005, ðàñïîëîæåííîãî íà îáû÷íîì ñåðâåðå (èëè êîìïüþòåðå), íà ìîáèëüíîå óñòðîéñòâî, îñíàùåííîå SQL Server 2005 Mobile Edition. Òàêèì îáðàçîì, íà ìîáèëüíîì óñòðîéñòâå âñåãäà ìîãóò áûòü äîñòóïíû êîðïîðàòèâíûå äàííûå. Ïîìèìî ýòîãî Mobile Edition îòëè÷àåòñÿ âîçìîæíîñòüþ ðåïëèêàöèè äàííûõ ìåæäó Microsoft SQL Server 2000 è Microsoft SQL Server 2005. 64-ðàçðÿäíûå ðåäàêöèè Microsoft SQL Server 2005 ïîääåðæèâàþòñÿ äëÿ ñëåäóþùèõ âåðñèé ñåðâåðà: · SQL Server 2005 Standard Edition; · SQL Server 2005 Enterprise Edition. Èñïîëüçîâàíèå 64-ðàçðÿäíîé àðõèòåêòóðû ïîçâîëÿåò äîñòè÷ü ðÿäà ïðåèìóùåñòâ â ðàáîòå ïðîãðàììíîãî îáåñïå÷åíèÿ. Èç ïðåèìóùåñòâ îáùåãî õàðàêòåðà ñòîèò âûäåëèòü ñëåäóþùèå: · óëó÷øåíèå ïðîöåññà êýøèðîâàíèÿ äàííûõ è êîìàíä â êýøå ïåðâîãî è âòîðîãî óðîâíÿ ïðîöåññîðà; · óâåëè÷åíèå ïðîèçâîäèòåëüíîñòè çà ñ÷åò ïàðàëëåëüíîãî âûïîëíåíèÿ êîìàíä (àêòèâíîå èñïîëüçîâàíèå òåõíîëîãèè HypherThreading); · óâåëè÷åíèå ïðîèçâîäèòåëüíîñòè çà ñ÷åò ìåæïðîöåññîðíîãî âçàèìîäåéñòâèÿ è èñïîëüçîâàíèÿ â ñèñòåìå íåñêîëüêèõ ïðîöåññîðîâ;
22
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
· óâåëè÷åíèå ñêîðîñòè ââîäà-âûâîäà çà ñ÷åò óâåëè÷åíèÿ øèðèíû ñèñòåìíîé øèíû; · óâåëè÷åíèå îáúåìà ïàìÿòè êîìïüþòåðà, äëÿ êîòîðîé äîïóñêàåòñÿ ïðÿìàÿ àäðåñàöèÿ. Âñå ïåðå÷èñëåííûå óëó÷øåíèÿ â ðàáîòå ñåðâåðà áóäóò îäèíàêîâî õîðîøî âëèÿòü íà âñå êîìïîíåíòû SQL Server 2005. Îäíàêî ñóùåñòâóåò, ïî êðàéíåé ìåðå, îäèí êîìïîíåíò, äëÿ êîòîðîãî ïåðåõîä íà 64-ðàçðÿäíóþ àðõèòåêòóðó ïðèâåäåò ê çíà÷èòåëüíîìó óâåëè÷åíèþ ïðîèçâîäèòåëüíîñòè è âîçìîæíîñòåé ðàáîòû. Ýòî ñåðâèñû àíàëèòèêè SQL Server 2005. ×òî êàñàåòñÿ ñåðâèñîâ àíàëèòèêè, òî óâåëè÷åíèå ïðîèçâîäèòåëüíîñòè â ýòîì ñëó÷àå áóäåò äîñòèãíóòî çà ñ÷åò ñëåäóþùèõ ôàêòîðîâ: · âîçìîæíîñòü çàãðóæàòü â ïàìÿòü êîìïüþòåðà áîëüøèå îáúåìû èíôîðìàöèè (OLAP-êóáû áîëüøåãî ðàçìåðà); · îáåñïå÷åíèå áîëüøåé ñêîðîñòè ïðîõîäà ïî îäíîìó èçìåðåíèþ êóáà; · ðåàëèçàöèÿ êýøèðîâàííûõ çàïðîñîâ, êîëè÷åñòâî è îáúåì êîòîðûõ çíà÷èòåëüíî óâåëè÷åíû â 64-ðàçðÿäíîé âåðñèè SQL Server; · êýøèðîâàíèå áîëüøèõ îáúåìîâ äàííûõ. Îïòèìèçèðîâàííûé äëÿ ðàáîòû íà 64-ðàçðÿäíûõ ïðîöåññîðàõ SQL Server ïîçâîëÿåò íå òîëüêî îáðàùàòüñÿ ê áîëüøèì îáúåìàì ïàìÿòè (â 32-ðàçðÿäíûõ ñèñòåìàõ ìàêñèìàëüíûé îáúåì ïàìÿòè îãðàíè÷åí çíà÷åíèåì 4 Ãáàéò), íî è ðåàëèçîâàòü òàêèå ñðåäñòâà, êàê ïóë è êýø, óâåëè÷èâ îáúåìû âíîñèìîé â íèõ èíôîðìàöèè è îäíîâðåìåííî óìåíüøèâ êîëè÷åñòâî êîìàíä äëÿ ðàáîòû ñ ïóëîì è êýøåì. Áëàãîäàðÿ ýòîìó ìîæíî íå òîëüêî óñêîðèòü ïðîöåññ îáðàáîòêè äàííûõ, íî è óâåëè÷èòü îáúåì äàííûõ, êîòîðûìè ìîãóò îïåðèðîâàòü ïðèëîæåíèÿ. Óñëîæíÿåò ïîëîæåíèå íà ðûíêå 64-ðàçðÿäíûõ ïðîãðàììíûõ ïðèëîæåíèé òî, ÷òî îíè îáÿçàíû óìåòü îïåðèðîâàòü íå òîëüêî 64-ðàçðÿäíûìè äàííûìè è êîìàíäàìè, íî è èìåòü âîçìîæíîñòü îáðàáàòûâàòü 32-ðàçðÿäíûå èíñòðóêöèè è õðàíèòü äàííûå òàêîé æå äëèíû. ×òî êàñàåòñÿ òàêèõ êëèåíò-ñåðâåðíûõ ïðîäóêòîâ, êàê Microsoft SQL Server, òî â äàííîì ñëó÷àå ñèòóàöèÿ óñëîæíÿåòñÿ òåì, ÷òî îáðàùåíèå ê 64-ðàçðÿäíîìó ñåðâåðó ìîæåò ïðîèñõîäèòü îò êëèåíòîâ, êîòîðûå óñòàíîâëåíû íà 32-ðàçðÿäíûõ êîìïüþòåðàõ. Ïðåäûäóùàÿ âåðñèÿ SQL Server ïîçâîëÿëà ðàáîòàòü â ñìåøàííîé ñðåäå (â êîòîðóþ âõîäÿò 32- è 64-ðàçðÿäíûå ñèñòåìû). Äàííàÿ âîçìîæíîñòü ðàñøèðåíà çà ñ÷åò ðåàëèçàöèè íåêîòîðûõ óòèëèò, êîòîðûå òåïåðü ìîæíî çàïóñêàòü íà 64-ðàçðÿäíûõ ñèñòåìàõ. Ñóùåñòâóþò ñëåäóþùèå êîìïîíåíòû è óòèëèòû äëÿ ðàáîòû â 64-ðàçðÿäíîé ñðåäå: · ÿäðî SQL Server 2005; · ñåðâèñû íîòèôèêàöèè, àíàëèòèêè (ñåðâåð è äèçàéíåð) è îò÷åòîâ; · êîìïîíåíòû äëÿ ðàáîòû ñ âåá-äàííûìè è ðåïëèêàöèè; · XPSTAR; · SDAC; · óòèëèòû äëÿ óïðàâëåíèÿ SQL Server 2005 (Management Studio).
1.1. Îáùèå õàðàêòåðèñòèêè SQL Server 2005
23
Òàêæå íåîáõîäèìî çàìåòèòü, ÷òî ðåäàêöèÿ SQL Server 2005 Express Edition òàêæå äîñòóïíà äëÿ çàïóñêà íà 64-ðàçðÿäíûõ ñèñòåìàõ. Ýòèì Microsoft äåìîíñòðèðóåò ïîâûøåííîå âíèìàíèå ê 64-ðàçðÿäíûì ñèñòåìàì â ñâîèõ ïðîãðàììíûõ ïðîäóêòàõ. ×òî êàñàåòñÿ âûõîäà íîâûõ ïðîäóêòîâ äëÿ ïðîãðàììèðîâàíèÿ â 64-ðàçðÿäíîé ñðåäå, òî íîâàÿ âåðñèÿ .NET Framework 64-bit Edition äîëæíà ðåøèòü ïîäîáíûå ïðîáëåìû. Òåïåðü ïðîöåäóðû, íàïèñàííûå â ýòîé ñðåäå, ìîãóò áûòü çàïóùåíû â ëþáîé ñèñòåìå (â òîì ÷èñëå è 64-ðàçðÿäíîé).
1.1.1. Êîìïîíåíòû SQL Server Âî âðåìÿ óñòàíîâêè SQL Server ìîæíî âûáðàòü, êàêèå êîìïîíåíòû ïðîãðàììíîãî ïðîäóêòà áóäóò óñòàíîâëåíû íà êîìïüþòåð. Äëÿ ýòîãî èñïîëüçóåòñÿ ýòàï óñòàíîâêè Feature Selection ìàñòåðà óñòàíîâêè Microsoft SQL Server. Ïî óìîë÷àíèþ íå óñòàíàâëèâàåòñÿ íè îäèí èç ñóùåñòâóþùèõ äîïîëíèòåëüíûõ êîìïîíåíòîâ. Ðàññìîòðèì áîëåå äåòàëüíî êàæäûé èç ñóùåñòâóþùèõ êîìïîíåíòîâ, äîñòóïíûõ äëÿ óñòàíîâêè (òàáë. 1.1). Òàáëèöà 1.1. Ïåðå÷åíü êîìïîíåíòîâ SQL Server è èõ îïèñàíèå Êîìïîíåíò
Îïèñàíèå
ßäðî áàçû äàííûõ
ßäðî áàçû äàííûõ ïðåäîñòàâëÿåò áàçîâóþ ôóíêöèîíàëüíîñòü äëÿ õðàíåíèÿ, ðåäàêòèðîâàíèÿ, îáðàáîòêè è áåçîïàñíîñòè äàííûõ, êîòîðûå ðàñïîëàãàþòñÿ â áàçå äàííûõ. Äàííûé êîìïîíåíò ïðåäîñòàâëÿåò ñëåäóþùóþ ôóíêöèîíàëüíîñòü: ðåïëèêàöèÿ äàííûõ, ïîëíîòåêñòîâûé ïîèñê, õðàíåíèå è ðàáîòà ñ ðàçëè÷íûìè òèïàìè äàííûõ SQL Server, îáåñïå÷åíèå äîñòàòî÷íîãî óðîâíÿ áåçîïàñíîñòè äëÿ õðàíåíèÿ äàííûõ, à òàêæå äðóãèå îñíîâíûå âîçìîæíîñòè SQL Server
Ñåðâèñû àíàëèçà
Ñåðâèñû àíàëèçà ñîäåðæàò íàáîð èíñòðóìåíòîâ äëÿ ñîçäàíèÿ è óïðàâëåíèÿ àíàëèòè÷åñêîé èíôîðìàöèåé, êîòîðàÿ èçâëå÷åíà èç äàííûõ SQL Server. Ñ èõ ïîìîùüþ ìîæíî ñîçäàâàòü àíàëèòè÷åñêèå ïðèëîæåíèÿ, ïîçâîëÿþùèå îïðåäåëÿòü ñêðûòûå çàêîíîìåðíîñòè â äàííûõ, à òàêæå ìîìåíòàëüíî ãåíåðèðîâàòü ñîîòâåòñòâóþùèå îò÷åòû, ñîäåðæàùèå îïèñàíèå ñêðûòûõ è ÿâíûõ òåíäåíöèé. Âìåñòå ñ ñåðâèñàìè àíàëèçà íà êîìïüþòåð óñòàíàâëèâàþòñÿ ñåðâèñû ïðåîáðàçîâàíèÿ äàííûõ. Ýòîò êîìïîíåíò ïîçâîëÿåò âûïîëíÿòü ïðåîáðàçîâàíèå äàííûõ ìåæäó ôîðìàòàìè äëÿ èõ áîëåå óäîáíîãî ïðåäñòàâëåíèÿ êîíå÷íîìó ïîëüçîâàòåëþ, ïîñêîëüêó çà ñ÷åò èíòåãðàöèè ñåðâèñîâ àíàëèçà â ðàçëè÷íûå ïðîãðàììíûå ïàêåòû äàííûå ìîãóò îòîáðàæàòüñÿ â ðàçëè÷íûõ ïðîãðàììíûõ ñðåäàõ êëàññà CRM è ERP
Ñåðâèñû îò÷åòîâ
Ñåðâèñû îò÷åòîâ âêëþ÷àþò êàê ñåðâåðíûå, òàê è êëèåíòñêèå êîìïîíåíòû äëÿ ñîçäàíèÿ, óïðàâëåíèÿ è ðàçâåðòûâàíèÿ ãðàôè÷åñêèõ è òàáëè÷íûõ îò÷åòîâ, à òàêæå îò÷åòîâ, ôîðìàò êîòîðûõ çàäàí ïîëüçîâàòåëåì. Áîëåå òîãî, ñåðâèñû îò÷åòîâ èìåþò ìåõàíèçìû äëÿ ñîçäàíèÿ è ðàçâåðòûâàíèÿ ïðèëîæåíèé, êîòîðûå èñïîëüçóþò ñåðâèñû îò÷åòîâ. Ïîäîáíûå ïðèëîæåíèÿ íàõîäÿò ñâîå ïðèìåíåíèå íà êîìïüþòåðàõ ñðåäíåãî è âûñøåãî ìåíåäæìåíòà äëÿ ïîääåðæêè ïðèíÿòèÿ ðåøåíèé. Äëÿ óñòàíîâêè äàííûõ ñåðâèñîâ òðåáóåòñÿ íàëè÷èå íà êîìïüþòåðå ðàíåå óñòàíîâëåííîãî IIS âåðñèè 5.0 èëè âûøå. Äëÿ ðàáîòû ñ äèçàéíåðîì îò÷åòîâ òðåáóåòñÿ Internet Explorer 6.0 SP1 èëè áîëåå íîâîé âåðñèè ïðîäîëæåíèå
È
24
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
Òàáëèöà 1.1 (ïðîäîëæåíèå) Êîìïîíåíò
Îïèñàíèå
Ñåðâèñû íîòèôèêàöèè
Ïëàòôîðìà äëÿ ñîçäàíèÿ, óïðàâëåíèÿ è ðàçâåðòûâàíèÿ ïðèëîæåíèé, êîòîðûå èñïîëüçóþòñÿ äëÿ îòïðàâêè ïåðñîíàëèçèðîâàííûõ ñîîáùåíèé, ñîäåðæàùèõ ðàçíîðîäíóþ èíôîðìàöèþ èëè äàííûå. Èíôîðìàöèÿ èëè äàííûå ìîãóò áûòü ðàçîñëàíû â ëþáîì âèäå, à ïîäïèñ÷èêè (ïîòðåáèòåëè èíôîðìàöèè è äàííûõ) ìîãóò ïîëó÷àòü ñîîáùåíèÿ, èñïîëüçóÿ óñòðîéñòâà ïðàêòè÷åñêè ëþáîãî òèïà
Ñåðâèñû ïðåîáðàçîâàíèÿ äàííûõ
Íàáîð ãðàôè÷åñêèõ êîìïîíåíòîâ è ïðîãðàììíûõ îáúåêòîâ äëÿ êîïèðîâàíèÿ, ïåðåìåùåíèÿ è ïðåîáðàçîâàíèÿ äàííûõ èç îäíîãî ôîðìàòà â äðóãîé
Êîìïîíåíòû âçàèìîäåéñòâèÿ
Âìåñòå ñ SQL Server íà êîìïüþòåð óñòàíàâëèâàþòñÿ êîìïîíåíòû äëÿ ïîäêëþ÷åíèÿ ê áàçå äàííûõ. Ê äàííûì êîìïîíåíòàì îòíîñÿòñÿ ODBC, OLE DB, MDAC, à òàêæå íàáîð äðóãèõ áèáëèîòåê è ïðîâàéäåðîâ äàííûõ
SQL Server Management Studio
Äàííûé èíñòðóìåíò õîðîøî çíàêîì àäìèíèñòðàòîðàì è ðàçðàáîò÷èêàì ñèñòåì íà îñíîâå SQL Server. Îí ïîçâîëÿåò ñîçäàâàòü çàïðîñû, âûïîëíÿòü èõ â íåîáõîäèìîé ïîñëåäîâàòåëüíîñòè, à òàêæå îòëàæèâàòü ñ èñïîëüçîâàíèåì ñðåäñòâ SQL Server Management Studio
Business Intelligence Development Studio
Äàííûé èíñòðóìåíò èíòåãðèðîâàí ñ òàêèìè êîìïîíåíòàìè SQL Server, êàê ñåðâèñû àíàëèòèêè è ïðåîáðàçîâàíèÿ äàííûõ. Îí ïîçâîëÿåò ñîçäàâàòü, âíåäðÿòü è îòëàæèâàòü ïðèëîæåíèÿ àíàëèçà äàííûõ
Database Tuning Advisor
Ïðèëîæåíèå, ñîçäàííîå èñêëþ÷èòåëüíî äëÿ íàñòðîéêè ïðîèçâîäèòåëüíîñòè SQL Server. Îíî ïîçâîëÿåò áûñòðî è áåç îñîáûõ óñèëèé íàñòðàèâàòü èíäåêñû áàçû äàííûõ, ñîñòàâëÿòü îïòèìèçèðîâàííûå çàïðîñû, à ïðè íåîáõîäèìîñòè è ïðåäñòàâëåíèÿ äàííûõ äëÿ áûñòðîãî ïîèñêà íåîáõîäèìûõ äàííûõ
SQL Profiler
Ñðåäñòâî äëÿ ïðîñìîòðà ïðîèçâîäèòåëüíîñòè è ìîíèòîðèíãà çàãðóçêè òàêèõ êîìïîíåíòîâ SQL Server, êàê ÿäðà ñèñòåìû è ñåðâèñîâ àíàëèòèêè. Èíòåðôåéñ SQL Profiler èìååò íàáîð ñðåäñòâ äëÿ ãðàôè÷åñêîãî îòîáðàæåíèÿ èíôîðìàöèè î ðàáîòå äàííûõ êîìïîíåíòîâ SQL Server
Íàáîð ññûëîê íà ìàòåðèàëû äëÿ ðàçðàáîò÷èêîâ
Ñîäåðæèò èíôîðìàöèþ ñî ññûëêàìè íà ìàòåðèàëû äëÿ ðàçðàáîò÷èêîâ SQL Server
Ïðèìåðû
Âìåñòå ñ SQL Server ìîãóò áûòü óñòàíîâëåíû ïðèìåðû äëÿ ðàçðàáîò÷èêîâ, êîòîðûå âêëþ÷àþò âñòàâêè êîäà äëÿ ïðèëîæåíèé àíàëèòèêè, îò÷åòîâ, ïðåîáðàçîâàíèÿ äàííûõ è äðóãèõ êîìïîíåíòîâ ñèñòåìû
Êîíòåêñòíàÿ ñïðàâêà
Âìåñòå ñ SQL Server óñòàíàâëèâàåòñÿ íîâàÿ ñïðàâî÷íàÿ ñèñòåìà, ñîäåðæàùàÿ íàáîð ññûëîê è àâòîìàòè÷åñêè çàãðóæàåìûõ ìàòåðèàëîâ ñ ñàéòà Microsoft. Äàííûé ìàòåðèàë ïðèçâàí ïîìî÷ü ðàçðàáîò÷èêàì áûñòðåå îâëàäåòü íàâûêàìè ïðîãðàììèðîâàíèÿ ïîä SQL Server
Òàêæå íóæíî îáðàòèòü âíèìàíèå íà òî, ÷òî íåêîòîðûå ïðåèìóùåñòâà è ôóíêöèè SQL Server ïîñëå óñòàíîâêè îòêëþ÷åíû ïî óìîë÷àíèþ. ×àùå âñåãî ýòî ñäåëàíî â öåëÿõ ïîääåðæêè áåçîïàñíîñòè ñèñòåìû. Ïî óìîë÷àíèþ îòêëþ÷åíû ñëåäóþùèå êîìïîíåíòû: · SQLiMail; · SQLMail; · Xp_Web; · àãåíò SQL Server;
1.1. Îáùèå õàðàêòåðèñòèêè SQL Server 2005
25
· áðàóçåð SQL; · áðîêåð ñåðâèñîâ; · ìåõàíèçì çåðêàëèðîâàíèÿ áàç äàííûõ; · îòëàäêà ïðèëîæåíèé; · ïîëíîòåêñòîâûé ïîèñê; · ðåïëèêàöèÿ; · ñåðâèñû àíàëèòèêè; · ñåðâèñû íîòèôèêàöèè; · ñåðâèñû îò÷åòîâ; · ñåðâèñû ïðåîáðàçîâàíèÿ äàííûõ; · ñòàòèñòèêà èíäåêñèðîâàíèÿ. Íà ðèñ. 1.1 ïîêàçàíî îêíî ìàñòåðà óñòàíîâêè SQL Server 2005, â êîòîðîì ïðåäëàãàåòñÿ âûáîð êîìïîíåíòîâ äëÿ óñòàíîâêè.
Ðèñ. 1.1. Âûáîð êîìïîíåíòîâ äëÿ óñòàíîâêè SQL Server 2005
1.1.2. Ñåðâèñû Íà âñåõ áåç èñêëþ÷åíèÿ îïåðàöèîííûõ ñèñòåìàõ, â êîòîðûõ ïîääåðæèâàåòñÿ SQL Server 2005, ïîñëå óñòàíîâêè çàïóñêàþòñÿ ñåðâèñû (äëÿ Microsoft SQL Server è àãåíòà SQL Server).  òàáë. 1.2 îïèñàí íàáîð ñåðâèñîâ, êîòîðûå âõîäÿò â ñîñòàâ SQL Server.
26
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
Òàáëèöà 1.2. Ñåðâèñû Microsoft SQL Server 2005 è èõ îïèñàíèå Èìÿ
Èìÿ ñåðâèñà (ýêçåìïëÿð ïî óìîë÷àíèþ)
Èìÿ ñåðâèñà (èìåíîâàííûé ýêçåìïëÿð)
Îïèñàíèå
SQL Server (MSSQLSERVER)
MSSQLSERVER
MSSQL$ InstanceName
ßäðî Microsoft SQL Server 2005
SQL Server Agent (MSSQLSERVER)
SQLSERVERAGENT
SQLAgent$ InstanceName
Àãåíò, êîòîðûé îòñëåæèâàåò ðàáîòó SQL Server. Èñïîëüçóåòñÿ äëÿ âûïîëíåíèÿ ðàáîò ïî ðàñïèñàíèþ, ìîíèòîðèíãà ðàáîòû ñåðâåðà è àâòîìàòèçàöèè äðóãèõ çàäà÷ àäìèíèñòðèðîâàíèÿ
Analysis Services (MSSQLSERVER)
MSSQLServerOLAPService
MSOLAP$ InstanceName
Ñåðâèñû àíàëèòèêè Microsoft SQL Server 2005
Microsoft Reporting ReportServer Services
ReportServer$ InstanceName
Ñåðâèñû îò÷åòîâ Microsoft SQL Server 2005
Microsoft FullText Engine for SQL (MSFTESQL)
MSFTESQL$ instanceName
ßäðî ñèñòåìû ïîëíîòåêñòîâîãî ïîèñêà Microsoft SQL Server 2005
MSFTESQL
1.1.3. Ó÷åòíûå çàïèñè Microsoft SQL Server èìååò ðÿä òðåáîâàíèé ê ñèñòåìíûì ó÷åíûì çàïèñÿì. Äëÿ çàïóñêà ñåðâèñîâ SQL Server è âûïîëíåíèÿ àäìèíèñòðàòèâíûõ ðàáîò íåîáõîäèìî, ÷òîáû â îòíîøåíèè ó÷åòíûõ çàïèñåé âûïîëíÿëèñü ñëåäóþùèå óñëîâèÿ: · ïîëüçîâàòåëü ìîã âõîäèòü â ñèñòåìó â êà÷åñòâå ñåðâèñà; · ïîëüçîâàòåëü èìåë äîñòóï äëÿ ðåäàêòèðîâàíèÿ ôàéëîâ ñ ðàñøèðåíèÿìè .ldf, .mdf è .ndf; · ïîëüçîâàòåëü èìåë äîñòóï äëÿ ðåäàêòèðîâàíèÿ äîìàøíåé äèðåêòîðèè SQL Server (C:\Program Files\Microsoft SQL Server\MSSQL); · ïîëüçîâàòåëü èìåë äîñòóï äëÿ ðåäàêòèðîâàíèÿ ñëåäóþùèõ êëþ÷åé ðååñòðà: · HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ Perflib; · HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer (äëÿ ýêçåìïëÿðà ïî óìîë÷àíèþ); · HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\MSSQLServer (äëÿ ýêçåìïëÿðà ïî óìîë÷àíèþ); · HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server (äëÿ èìåíîâàííîãî ýêçåìïëÿðà); · HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\MSSQL$Instancename (äëÿ èìåíîâàííîãî ýêçåìïëÿðà); · ïîëüçîâàòåëü èìåë ïðàâà íà ðåäàêòèðîâàíèå êëþ÷åé ðååñòðà äëÿ ñëåäóþùèõ ñåðâèñîâ: · SQLAgent$InstanceName;
1.1. Îáùèå õàðàêòåðèñòèêè SQL Server 2005
27
· MSSearch; · MSDTC; · äëÿ óñòàíîâêè ñåðâèñîâ ïîëüçîâàòåëü äîëæåí èìåòü ïðèâèëåãèè èëè âõîäèòü â ñîñòàâ ãðóïï ïîëüçîâàòåëåé, êàê ïîêàçàíî â òàáë. 1.3. Òàáëèöà 1.3. Íåîáõîäèìûå äåéñòâèÿ è ïðàâà äîñòóïà äëÿ ïîëüçîâàòåëåé, ðàáîòàþùèõ ñ ñåðâèñàìè Ñåðâèñ
Ôóíêöèîíàëüíîñòü
Ïðàâà äîñòóïà
SQL Server (MSSQLSERVER)
Âûïîëíÿòü çàïèñü â îáëàñòü ïàìÿòè ñ ïîìîùüþ ôóíêöèè xp_sendmail
Ðàçðåøåíèå íà çàïèñü
SQL Server (MSSQLSERVER)
Âûïîëíÿòü çàïóñê xp_cmdshell äëÿ ó÷åòíûõ çàïèñåé, êîòîðûå îòëè÷íû îò àäìèíèñòðàòîðà SQL Server
Äåéñòâîâàòü â êà÷åñòâå ÷àñòè îïåðàöèîííîé ñèñòåìû, à òàêæå çàïóñêàòü ïðîöåññû íà ñèñòåìíîì óðîâíå
SQL Server (MSSQLSERVER)
Äîáàâëÿòü è óäàëÿòü îáúåêòû SQL Server â Active Directory Windows 2000
Äîëæåí âõîäèòü â ñîñòàâ îäíîé èç ëîêàëüíûõ ãðóïï ïîëüçîâàòåëåé: Power Users èëè Administrators
SQL Server Agent (MSSQLSERVER)
Ñîçäàâàòü çàäàíèÿ, âûïîëíÿåìûå ïî ðàñ- Äîëæåí âõîäèòü â ñîñòàâ ëîêàëüïèñàíèþ, CmdExec èëè ActiveScript îò èìå- íîé ãðóïïû Administrators íè ïîëüçîâàòåëÿ, â îáùåì ñëó÷àå îòëè÷íîãî îò èìåíè ñèñòåìíîãî àäìèíèñòðàòîðà. Èìåòü âîçìîæíîñòü àâòîìàòè÷åñêîãî ïåðåçàïóñêà ñåðâåðà
1.1.4. IIS è SQL Server 2005  íåêîòîðûõ îðãàíèçàöèÿõ âîçíèêàåò íåîáõîäèìîñòü óñòàíîâêè Microsoft SQL Server íà êîìïüþòåðû ñ ïðåäóñòàíîâëåííûì èíòåðíåò-ñåðâåðîì.  òîì ñëó÷àå, åñëè êëèåíò ñåðâåðà Microsoft SQL (èëè îòäåëüíûå êîìïîíåíòû äëÿ óïðàâëåíèÿ èëè ðàáîòû ñ ñåðâåðîì) óñòàíàâëèâàåòñÿ íà êîìïüþòåð ñ çàðàíåå ïðåäóñòàíîâëåííûì Internet Information Services (IIS), îò àäìèíèñòðàòîðà ïîòðåáóåòñÿ çíàíèå íåêîòîðûõ íþàíñîâ óñòàíîâêè. Êëèåíò ñåðâåðà ìîæåò âêëþ÷àòü êîìïîíåíòû ïîäêëþ÷åíèÿ ê SQL Server, êîòîðûå èñïîëüçóþòñÿ ïîëüçîâàòåëüñêèìè ïðèëîæåíèÿìè äëÿ ðàáîòû ñ áàçîé äàííûõ, óòèëèòû äëÿ êîíôèãóðèðîâàíèÿ âèðòóàëüíûõ äèðåêòîðèé äëÿ äîñòóïà ê SQL ÷åðåç ññûëêè, à òàêæå äðóãèå êîìïîíåíòû. Ïîñëå óñòàíîâêè êëèåíòñêîãî ïðèëîæåíèÿ SQL Server íà êîìïüþòåð ñ IIS àäìèíèñòðàòîð äîëæåí íàñòðîèòü âèðòóàëüíóþ äèðåêòîðèþ äëÿ äîñòóïà ê ñåðâåðó ñ èñïîëüçîâàíèåì åãî URL (Universal Resource Locator). Äëÿ íàñòðîéêè âèðòóàëüíîé äèðåêòîðèè èñïîëüçóåòñÿ ñïåöèàëüíûé èíñòðóìåíò IIS Virtual Directory Management. Ñ ïîìîùüþ äàííîãî èíñòðóìåíòà íàñòðîèòü ïàðàìåòðû âèðòóàëüíîé äèðåêòîðèè ìîæíî äâóìÿ ñïîñîáàìè: · ïðîãðàììíî, èñïîëüçóÿ îáúåêòíóþ ìîäåëü è IIS Virtual Directory Management; · ãðàôè÷åñêè (òàêæå ñ èñïîëüçîâàíèåì óòèëèòû IIS Virtual Directory Management).
28
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
Íàñòðîèâ âèðòóàëüíóþ äèðåêòîðèþ IIS, ìîæíî áóäåò ïîëó÷èòü äîñòóï ê äàííûì ñåðâåðà SQL ÷åðåç URL. Ïðè ýòîì ññûëêè ìîãóò áûòü íàñòðîåíû äëÿ âûïîëíåíèÿ íåñêîëüêèõ äåéñòâèé â ñèñòåìå: · ïðÿìîé äîñòóï ê îáúåêòàì áàçû äàííûõ (òàêèì, êàê òàáëèöû).  ýòîì ñëó÷àå URL âêëþ÷àåò âèðòóàëüíîå èìÿ òèïà dbobject; · âûïîëíåíèå çàïðîñîâ òèïà XPath. Âûïîëíåíèå äàííûõ çàïðîñîâ ïðîèñõîäèò äëÿ ñõåìû, èìÿ êîòîðîé çàäàåòñÿ âìåñòå ñ ââîäîì URL (èíûìè ñëîâàìè, èìÿ ñõåìû ÿâëÿåòñÿ ÷àñòüþ URL); · ïðÿìîãî äîñòóïà ê WDSL-ôàéëó (Web Services Description Language). Äàííûé ôàéë ñîäåðæèò îïèñàíèå èñïîëüçóåìîãî ñåðâèñà è ïàðàìåòðû åãî âûçîâà.  òàêîì ñëó÷àå URL ñîäåðæèò âèðòóàëüíîå èìÿ òèïà SOAP.  òàêîì ñëó÷àå, èñïîëüçóÿ URL, ïîëüçîâàòåëüñêîå ïðèëîæåíèå ìîæåò ñíà÷àëà âûïîëíèòü ÷òåíèå WDSL-ôàéëà, à çàòåì îòïðàâèòü SOAP-çàïðîñ ê Microsoft SQLXML 3.0; · âûïîëíåíèå øàáëîíîâ. Øàáëîí ïðåäñòàâëÿåò ñîáîé XML-äîêóìåíò, êîòîðûé ñîäåðæèò îäèí èëè íåñêîëüêî SQL-çàïðîñîâ. Ïîñëå òîãî êàê ïîëüçîâàòåëü óêàæåò URL ïîäîáíîãî øàáëîíà, çàïðîñ, ñîäåðæàùèéñÿ â íåì, ìîìåíòàëüíî âûïîëíÿåòñÿ. Ñàì çàïðîñ ìîæåò áûòü âêëþ÷åí â URL, îäíàêî ýòî íå ðåêîìåíäóåòñÿ äåëàòü â öåëÿõ áåçîïàñíîñòè.
1.1.5. 32- è 64-ðàçðÿäíûå âåðñèè SQL Server 2005  32-ðàçðÿäíûõ ñèñòåìàõ ñóùåñòâóåò ôèçè÷åñêîå îãðàíè÷åíèå íà àäðåñàöèþ ïàìÿòè. Âñåãî îïåðàöèîííàÿ ñèñòåìà ìîæåò àäðåñîâàòü îêîëî 4 Ãáàéò (232 áàéò) îïåðàòèâíîé ïàìÿòè. Ïîìèìî ôèçè÷åñêîãî îãðàíè÷åíèÿ ñóùåñòâóåò îãðàíè÷åíèå íà óðîâíå îïåðàöèîííîé ñèñòåìû. Ýòî îçíà÷àåò, ÷òî ìàêñèìàëüíîå êîëè÷åñòâî îïåðàòèâíîé ïàìÿòè áóäåò ðàçäåëåíî ìåæäó îïåðàöèîííîé ñèñòåìîé è ïðèëîæåíèÿìè, êîòîðûå â íåé çàïóùåíû. Äëÿ íóæä Windows çàðåçåðâèðîâàíî îêîëî 2 Ãáàéò, îñòàëüíàÿ ÷àñòü ìîæåò èñïîëüçîâàòüñÿ äëÿ íóæä çàïóùåííûõ ïðèëîæåíèé. Åñëè íà ïîäîáíîì ñåðâåðå çàïóùåí îäèí ýêçåìïëÿð SQL Server, òî âåñü âûäåëåííûé äëÿ ïðèëîæåíèé îáúåì ïàìÿòè áóäåò îòâåäåí äëÿ åãî íóæä.  ñëó÷àå çàïóñêà íà êîìïüþòåðå íåñêîëüêèõ ýêçåìïëÿðîâ îíè áóäóò êîíêóðåíòíî èñïîëüçîâàòü äàííûé ðåñóðñ. Îäíàêî ñ èñïîëüçîâàíèåì Advanced Windows Extensions (AWE) îáúåì äîñòóïíîé äëÿ SQL Server 2005 îïåðàòèâíîé ïàìÿòè ìîæåò áûòü óâåëè÷åí äî 32 Ãáàéò.  64-ðàçðÿäíûõ ñèñòåìàõ ïîäîáíûå îãðàíè÷åíèÿ âûíåñåíû äàëåêî çà ðàìêè âîçìîæíîñòåé ñîâðåìåííûõ òåõíîëîãèé. 64-ðàçðÿäíûå ñèñòåìû ìîãóò àäðåñîâàòü áîëåå 32 Òáàéò îïåðàòèâíîé ïàìÿòè. ×òî êàñàåòñÿ SQL Server 2005, òî ñïåöèàëèñòû Microsoft âûïîëíèëè òåñòèðîâàíèå 64-ðàçðÿäíîé ðåäàêöèè ñåðâåðà, è îêàçàëîñü, ÷òî îí ïðåêðàñíî ðàáîòàåò íà ñèñòåìå, â êîòîðîé èìåëîñü 512 Ãáàéò îïåðàòèâíîé ïàìÿòè (0,5 Òáàéò!).  êà÷åñòâå îïåðàöèîííîé ñèñòåìû èñïîëüçîâàëñÿ Windows Server 2003. Ñ âûõîäîì îáíîâëåíèé äëÿ Windows Server 2003 ïëàíèðóåòñÿ âûïîëíèòü òåñòèðîâàíèå ðàáîòû SQL Server 2005 íà ñèñòåìå ñ îáúåìàìè îïåðàòèâíîé ïàìÿòè áîëåå 1 Òáàéò.
1.2. Óñòàíîâêà MS SQL Server 2005
29
1.2. Óñòàíîâêà MS SQL Server 2005 ßäðî SQL Server — ýòî îñíîâíîé ñåðâèñ Microsoft SQL Server, êîòîðûé ïîçâîëÿåò âûïîëíÿòü îáðàáîòêó, õðàíåíèå è îáåñïå÷åíèå áåçîïàñíîñòè äàííûõ. ßäðî SQL Server êîíòðîëèðóåò äîñòóï ê áàçå äàííûõ, îáðàáîòêó òðàíçàêöèé, âûïîëíåíèå õðàíèìûõ è ïîëüçîâàòåëüñêèõ ïðîöåäóð, óïðàâëåíèå òèïàìè äàííûõ è îòñëåæèâàíèå çàïóùåííûõ ñåðâèñîâ. ßäðî SQL Server ïîçâîëÿåò ïîääåðæèâàòü íåñêîëüêî ýêçåìïëÿðîâ áàçû äàííûõ íà îòäåëüíîì ñåðâåðå. Óñòàíîâêà îòäåëüíî âçÿòîãî ýêçåìïëÿðà SQL Server âûïîëíÿåòñÿ ïî îïðåäåëåííîìó ñöåíàðèþ. Äëÿ òîãî ÷òîáû íà÷àòü óñòàíîâêó ýêçåìïëÿðà áàçû äàííûõ, çàïóñòèòå ôàéë splash.hta, ðàñïîëîæåííûé íà óñòàíîâî÷íîì äèñêå.  ðåçóëüòàòå ýòîãî âûïîëíèòñÿ çàïóñê ìàñòåðà óñòàíîâêè. Äëÿ óñòàíîâêè SQL Server äîñòóïåí òàêæå îáû÷íûé ñïîñîá — çàïóñê ôàéëà setup.exe èç êîìàíäíîé ñòðîêè. Äëÿ îïðåäåëåíèÿ äîïîëíèòåëüíûõ ïàðàìåòðîâ SQL Server âî âðåìÿ ïîäîáíîé óñòàíîâêè ìîæíî îòðåäàêòèðîâàòü ïàðàìåòðû ini-ôàéëà. Øàáëîí ýòîãî ini-ôàéëà (Template.ini) òàêæå ñîäåðæèòñÿ íà èíñòàëëÿöèîííîì äèñêå SQL Server 2005. Äàííûé ïóòü óñòàíîâêè (÷åðåç çàïóñê setup.exe èç êîìàíäíîé ñòðîêè) áîëåå èíòåðåñåí äëÿ àäìèíèñòðàòîðîâ, ïîñêîëüêó ïîçâîëÿåò ñîõðàíèòü ïàðàìåòðû óñòàíîâêè îò îäíîé èíñòàëëÿöèè ê äðóãîé. Ýòî îáû÷íî óñêîðÿåò ïðîöåññ óñòàíîâêè SQL Server. Èíñòàëëÿöèÿ SQL Server 2005 ìîæåò âûïîëíÿòüñÿ êàê ëîêàëüíî, òàê è óäàëåííî. Äëÿ òîãî ÷òîáû âûïîëíÿòü óñòàíîâêó ÿäðà SQL Server ëîêàëüíî, íåîáõîäèìî âõîäèòü â ñîñòàâ ãðóïïû àäìèíèñòðàòîðîâ èëè èìåòü ïðèâèëåãèè àäìèíèñòðàòîðà. Äëÿ óäàëåííîé óñòàíîâêè SQL Server, ïîìèìî ïðèâèëåãèé àäìèíèñòðàòîðà íà óäàëåííîì êîìïüþòåðå, ó÷åòíàÿ çàïèñü äîëæíà èìåòü ïðèâèëåãèè ëîêàëüíîãî àäìèíèñòðàòîðà (â ýòîì ñëó÷àå ëó÷øå âñåãî âîñïîëüçîâàòüñÿ äîìåííîé ó÷åòíîé çàïèñüþ, êîòîðàÿ èìååò äîñòóï íà çàïèñü è âûïîëíåíèå ïðîöåäóð â îïðåäåëåííîé ñåòåâîé ïàïêå). Åñëè òåêóùàÿ ó÷åòíàÿ çàïèñü íå èìååò ïðèâèëåãèé àäìèíèñòðàòîðà íà óäàëåííîì êîìïüþòåðå, òî âû ìîæåòå âîñïîëüçîâàòüñÿ ïàðàìåòðîì runas äëÿ çàïóñêà ôàéëà setup.exe îò èìåíè äðóãîãî ïîëüçîâàòåëÿ. Íàïðèìåð, äëÿ çàïóñêà ôàéëà e:\setup.exe îò èìåíè ïîëüçîâàòåëÿ Petrenko, âõîäÿùåãî â ñîñòàâ äîìåíà MyCompany, âîñïîëüçóéòåñü ñëåäóþùåé êîìàíäîé: Runas /user:MyCompany\Petrenko "e:\setup.exe"
Ïîñëå âûïîëíåíèÿ äàííîé êîìàíäû â îòêðûâøåìñÿ îêíå ââåäèòå ïàðîëü ïîëüçîâàòåëÿ Petrenko äëÿ âûïîëíåíèÿ àóòåíòèôèêàöèè.
1.2.1. Êîìïîíåíòû ÿäðà SQL Server SQL Server 2005 ïîääåðæèâàåò äî 50 ýêçåìïëÿðîâ íà îòäåëüíî âçÿòîì ñåðâåðå. Äàííûå ýêçåìïëÿðû ìîãóò âêëþ÷àòü â ñâîé ñîñòàâ òå èëè èíûå êîìïîíåíòû ÿäðà SQL Server. Äëÿ óñòàíîâêè êîìïîíåíòîâ â ìàñòåðå óñòàíîâêè SQL Server ñóùåñòâóåò îòäåëüíàÿ ñòðàíèöà Components, íà êîòîðîé ïîëüçîâàòåëü ìîæåò âûáðàòü äîïîëíèòåëüíûå êîìïîíåíòû èç ñïèñêà. Êîìïîíåíòû, êîòîðûå óñòàíàâëèâàþòñÿ ïî óìîë÷àíèþ: · ÿäðî SQL Server; · ìåõàíèçì ðåïëèêàöèè; · ìåõàíèçì ïîëíîòåêñòîâîãî ïîèñêà.
30
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
Äîïîëíèòåëüíûå êîìïîíåíòû, êîòîðûå ìîãóò áûòü óñòàíîâëåíû ïî òðåáîâàíèþ ïîëüçîâàòåëÿ: · êîìïîíåíòû äëÿ âçàèìîäåéñòâèÿ; · ñåðâèñû ïðåîáðàçîâàíèÿ äàííûõ; · SQL Server Management Studio; · ñðåäñòâà óïðàâëåíèÿ; · ñðåäñòâà ïðîãðàììèðîâàíèÿ; · äîêóìåíòàöèÿ.
1.2.2. Âûïîëíåíèå óñëîâèé ïåðåä óñòàíîâêîé SQL Server 2005 Ïåðåä íà÷àëîì óñòàíîâêè SQL Server 2005 íåîáõîäèìî âûïîëíèòü ñëåäóþùèå óñëîâèÿ: · óáåäèòüñÿ â òîì, ÷òî êîìïüþòåð ñîîòâåòñòâóåò ñèñòåìíûì òðåáîâàíèÿì â îòíîøåíèè àïïàðàòíîãî îáåñïå÷åíèÿ; · âûïîëíèòü ðåçåðâíîå êîïèðîâàíèå äëÿ ýêçåìïëÿðîâ áàç äàííûõ, êîòîðûå çàïóùåíû íà êîìïüþòåðå, ïðåäíàçíà÷åííîì äëÿ óñòàíîâêè Microsoft SQL Server 2005; · îòêëþ÷èòü ñðåäñòâà âèðóñíîé çàùèòû; · ñîçäàòü ïîëüçîâàòåëÿ, âõîäÿùåãî â ñîñòàâ ãðóïïû Administrators. Âîéòè â ñèñòåìó ïîä èìåíåì ýòîãî ïîëüçîâàòåëÿ; · ñîçäàòü îäíó èëè áîëåå äîìåííûõ ó÷åòíûõ çàïèñåé â òîì ñëó÷àå, åñëè óñòàíîâêà SQL Server 2005 âûïîëíÿåòñÿ íà êîìïüþòåð ñ îïåðàöèîííîé ñèñòåìîé Windows 2000 èëè Windows XP (äëÿ íàñòðîéêè âçàèìîäåéñòâèÿ SQL Server ñ äðóãèìè êîìïüþòåðàìè); · îòêëþ÷èòü âñå ñåðâèñû, êîòîðûå çàâèñÿò îò SQL Server (òàêèå, êàê IIS è ODBC); · îòêëþ÷èòü ïðîñìîòð ñîáûòèé (eventvwr â êîíñîëè óïðàâëåíèÿ) è ïðîñìîòð ðååñòðà (regedit32.exe è regedit32.exe); · äåàêòèâèðîâàòü NetBIOS íà âñåõ ñåòåâûõ êàðòàõ ïåðåä óñòàíîâêîé SQL Server â êëàñòåðíîé êîíôèãóðàöèè.
1.2.3. Óäàëåííàÿ óñòàíîâêà Äëÿ òîãî ÷òîáû ïðèñòóïèòü ê óäàëåííîìó çàïóñêó ïðîãðàììû óñòàíîâêè SQL Server 2005, íåîáõîäèìî îïðåäåëèòü ðÿä ïàðàìåòðîâ äëÿ óäàëåííîé óñòàíîâêè: · TARGETCOMPUTER — èìÿ óäàëåííîãî êîìïüþòåðà; · ADMINACCOUNT — ó÷åòíàÿ çàïèñü àäìèíèñòðàòîðà íà óäàëåííîì êîìïüþòåðå; · ADMINPASSWORD — ïàðîëü ó÷åòíîé çàïèñè àäìèíèñòðàòîðà íà óäàëåííîì êîìïüþòåðå.
1.2. Óñòàíîâêà MS SQL Server 2005
31
Äëÿ óñòàíîâêè âñåõ êîìïîíåíòîâ SQL Server ìîæíî âîñïîëüçîâàòüñÿ êëþ÷îì ADDLOCAL=ALL. Äëÿ ýòîãî åãî ìîæíî âíåñòè â ini-ôàéë (template.ini).
Ïðèìåðîì çàïóñêà SQL Server èç êîìàíäíîé ñòðîêè ìîæåò ñëóæèòü ñëåäóþùèé: Runas /user:MyCompany\Petrenko "e:\setup.exe /settings e:\template.ini /qb"
 ñëó÷àå âûïîëíåíèÿ äàííîé êîìàíäû óñòàíîâêà âûïîëíÿåòñÿ îò èìåíè ó÷åòíîé çàïèñè Petrenko, êîòîðàÿ èìååò ïðèâèëåãèè àäìèíèñòðàòîðà íà óäàëåííîì êîìïüþòåðå. Ó÷åòíàÿ çàïèñü âõîäèò â ñîñòàâ äîìåíà MyCompany. Êëþ÷ /settings çàäàåò ñ÷èòûâàíèå ïàðàìåòðîâ óñòàíîâêè èç ini-ôàéëà, êîòîðûé ðàñïîëîæåí ïî àäðåñó e:\template.ini. Êëþ÷ /qb çàäàåò îòîáðàæåíèå äèàëîãîâûõ îêîí, êîòîðûå ïîêàçûâàþò õîä ïðîöåññà óñòàíîâêè SQL Server 2005.  òîì ñëó÷àå, åñëè òðåáóåòñÿ ñêðûòü îòîáðàæåíèå äèàëîãîâûõ îêîí, îòîáðàæàþùèõ õîä óñòàíîâêè ÿäðà SQL Server, âìåñòî êëþ÷à /qb ìîæíî âîñïîëüçîâàòüñÿ êëþ÷îì /qn. Îí çàäàåò óñòàíîâêó ÿäðà SQL Server áåç ñîïðîâîæäåíèÿ. Òàêèì îáðàçîì, âñå ñîáûòèÿ, ïðîèñõîäÿùèå âî âðåìÿ ðàáîòû ìàñòåðà óñòàíîâêè (â òîì ÷èñëå è îøèáêè) áóäóò çàïèñûâàòüñÿ â log-ôàéë, äîñòóïíûé äëÿ àíàëèçà àäìèíèñòðàòîðîì. Log-ôàéë ñ îïèñàíèåì õîäà óñòàíîâêè ÿäðà SQL Server 2005 õðàíèòñÿ ïî àäðåñó: Ñ:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\log\summary.txt Ïîìèìî îáùåãî log-ôàéëà ñîñòàâëÿåòñÿ log-ôàéë, îòíîñÿùèéñÿ ê îòäåëüíîìó êîìïîíåíòó SQL Server. Äàííûå ôàéëû ñîäåðæàò áîëåå äåòàëüíóþ èíôîðìàöèþ î õîäå óñòàíîâêè òîãî èëè èíîãî êîìïîíåíòà. Ñïèñîê ïðèìåðîâ èìåí log-ôàéëîâ ïðèâåäåí â òàáë. 1.4. Òàáëèöà 1.4. Ïðèìåðû íàèìåíîâàíèé log-ôàéëîâ Log-ôàéë
Îïèñàíèå
SQLSetup0001_ComputerName_ .NET Framework 2.0.log
Log-ôàéë äëÿ Microsoft .NET Framework 2.0
SQLSetup0001_ComputerName_AS.log
Log-ôàéë äëÿ ñåðâèñîâ àíàëèòèêè
SQLSetup0001_ComputerName_Core.log
Log-ôàéë äëÿ ÿäðà SQL Server. Ñîäåðæèò èíôîðìàöèþ î ïðàâèëüíîì âûïîëíåíèè âñåõ msi-ôàéëîâ
SQLSetup0001_ComputerName_ Datastore.xml
Ñïèñîê âñåõ ñâîéñòâ, êîòîðûå êýøèðóþòñÿ âî âðåìÿ óñòàíîâêè SQL Server
SQLSetup0001_ComputerName_DTS.log
Log-ôàéë äëÿ ñåðâèñîâ ïðåîáðàçîâàíèÿ äàííûõ
SQLSetup0001_ComputerName_Logs.cab
Log-ôàéë ñî ñïèñêîì âñåõ óçëîâ êëàñòåðà (ñîçäàåòñÿ âî âðåìÿ êëàñòåðíîé óñòàíîâêè SQL Server 2005)
SQLSetup0001_ComputerName_MSXML.log
Log-ôàéë ñ îïèñàíèåì õîäà óñòàíîâêè Microsoft MSXML6
SQLSetup0001_ComputerName_NS.log
Log-ôàéë äëÿ ñåðâèñîâ íîòèôèêàöèè
SQLSetup0001_ComputerName_RS.log
Log-ôàéë äëÿ ñåðâèñîâ îò÷åòîâ
SQLSetup0001_ComputerName_SNAC.log
Log-ôàéë ñ îïèñàíèåì õîäà óñòàíîâêè Microsoft SQL Native Client
SQLSetup0001_ComputerName_SQL.log
Log-ôàéë ñ îïèñàíèåì óñòàíîâêè ÿäðà SQL Server
SQLSetup0001_ComputerName_SQLXML.log
Log-ôàéë ñ îïèñàíèåì õîäà óñòàíîâêè Microsoft SQLXML4 ïðîäîëæåíèå
È
32
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
Òàáëèöà 1.4 (ïðîäîëæåíèå) Log-ôàéë
Îïèñàíèå
SQLSetup0001_ComputerName_Tools.log
Log-ôàéë ñ îïèñàíèåì õîäà óñòàíîâêè êëèåíòñêèõ êîìïîíåíòîâ è äðóãèõ èíñòðóìåíòîâ
SQLSetup0001_ComputerName_WI.log
Log-ôàéë ñ îïèñàíèåì õîäà óñòàíîâêè êîìïîíåíòîâ ïîëüçîâàòåëüñêîãî èíòåðôåéñà
Âñå ïåðå÷èñëåííûå ôàéëû ðàñïîëàãàþòñÿ â ñëåäóþùåé ïàïêå: C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\Files, à òàêæå èìåíóþòñÿ ñîîòâåòñòâóþùèì îáðàçîì. Èìåíîâàíèå log-ôàéëîâ âûïîëíÿåòñÿ ïî ñëåäóþùåìó ïðèíöèïó: SQLSetup[XXXX][s]_[COMPUTERNAME]_[COMPONENTNAME]_[Y].log
ãäå SQLSetup — çàðåçåðâèðîâàííîå íà÷àëî èìåíè log-ôàéëà; [XXXX] — ïîðÿäêîâûé íîìåð èíñòàëëÿöèè; [COMPUTERNAME] — èìÿ êîìïüþòåðà, íà êîòîðîì âûïîëíÿåòñÿ óñòàíîâêà SQL Server 2005; [COMPONENTNAME] — ñîêðàùåííîå èìÿ êîìïîíåíòà SQL Server 2005 (ñì. òàáë. 1.4); [Y] — åñëè msi-ôàéë äëÿ óñòàíîâêè âûáðàííîãî êîìïîíåíòà çàïóñêàåòñÿ áîëåå îäíîãî ðàçà, òî äàííûé êëþ÷ îòîáðàæàåò êîëè÷åñòâî çàïóñêîâ msi-ôàéëà. Ðàññìîòðèì áîëåå äåòàëüíî ëèñòèíã ini-ôàéëà (ëèñòèíã 1.1). Ëèñòèíã 1.1. Ïðèìåð ini-ôàéëà [Options] USERNAME=Name COMPANYNAME=Company INSTALLSQLDIR= "C:\Program Files\Microsoft SQL Server\" INSTALLSQLDATADIR="C:\Program Files\Microsoft SQL Server\" ADDLOCAL=ALL INSTANCENAME=Instance1 SQLACCOUNT=Account1 SQLPASSWORD=AccountPassword1 AGTACCOUNT= AGTAccount1 AGTPASSWORD= AGTAccountPassword1 ASACCOUNT= ASAccount1 ASPASSWORD= ASAccountPassword1 RSACCOUNT= RSAccount1 RSPASSWORD= RSAccountPassword1 SQLAUTOSTART=1 AGTAUTOSTART=0 ASAUTOSTART=1 RSAUTOSTART=0
1.2.4. Ïîâòîðíàÿ óñòàíîâêà ñåðâåðà Èíîãäà óñòàíîâêà ñåðâåðà ïðåðûâàåòñÿ. Ýòî ìîæåò ïðîèçîéòè ïî ïðè÷èíå ðàçðûâà ñâÿçè (â ñëó÷àå óäàëåííîé óñòàíîâêè), ñèñòåìíîãî ñáîÿ (â ñëó÷àå ëîêàëüíîé óñòàíîâêè) èëè íåâûïîëíåíèÿ îäíîãî èç óñëîâèé, êîòîðûå îïèñàíû â ðàç-
1.2. Óñòàíîâêà MS SQL Server 2005
33
äåëå 1.2.2 «Âûïîëíåíèå óñëîâèé ïåðåä óñòàíîâêîé SQL Server 2005».  òàêèõ ñëó÷àÿõ âîçíèêàåò íåîáõîäèìîñòü ïðîäîëæèòü óñòàíîâêó ñåðâåðà ñ òîãî ìåñòà, â êîòîðîì ìàñòåð óñòàíîâêè âûäàë îøèáêó èëè ïðåðâàë ñâîþ ðàáîòó ïî êàêîé-ëèáî ïðè÷èíå. Äëÿ òîãî ÷òîáû ïðîäîëæèòü ïðîöåññ óñòàíîâêè SQL Server 2005 ñ ðàíåå ïðåðâàííîãî ýòàïà, âîñïîëüçóéòåñü êëþ÷îì: REINSTALLMODE=omus
Òàêæå â ñëó÷àå ïðåðûâàíèÿ ïðîöåññà óñòàíîâêè ìîæíî ïîëíîñòüþ ïåðåóñòàíîâèòü ðàíåå óñòàíîâëåííûå êîìïîíåíòû (òå, êîòîðûå áûëè óñòàíîâëåíû äî ïðåðûâàíèÿ). Äëÿ òîãî ÷òîáû ïðîäîëæèòü ïðîöåññ óñòàíîâêè, âîñïîëüçóéòåñü ñëåäóþùèì êëþ÷îì: REINSTALL=ALL
 ýòîì ñëó÷àå âñå ðàíåå óñòàíîâëåííûå êîìïîíåíòû SQL Server 2005 áóäóò ïåðåóñòàíîâëåíû.
1.2.5. Èìåíîâàííûé ýêçåìïëÿð è ýêçåìïëÿð ïî óìîë÷àíèþ Êàê óæå óïîìèíàëîñü ðàíåå, íà îòäåëüíîì ñåðâåðå ìîæåò áûòü óñòàíîâëåíî íåñêîëüêî ýêçåìïëÿðîâ SQL Server 2005. Îòäåëüíîå êëèåíòñêîå ïðèëîæåíèå ïîçâîëÿåò âûïîëíÿòü ðàáîòó ñ îòäåëüíî âçÿòûì ýêçåìïëÿðîì. Ýòî äàåò âîçìîæíîñòü íå òîëüêî óñêîðèòü ðàáîòó áàçû äàííûõ â öåëîì, íî è ðàçãðàíè÷èòü îáëàñòè äëÿ ðàçðàáîòêè ïðèëîæåíèé è èõ ðàçâåðòûâàíèÿ. Íàïðèìåð, â ñëó÷àå ñóùåñòâîâàíèÿ íåñêîëüêèõ ýêçåìïëÿðîâ SQL Server 2005 íà îòäåëüíîì ñåðâåðå ðàçðàáîòêà ïðèëîæåíèé ìîæåò âåñòèñü íà îäíîì èç íèõ, à ðàçâåðòûâàíèå ãîòîâîãî è ïðîòåñòèðîâàííîãî ïðèëîæåíèÿ — íà äðóãîì. Ïðè ýòîì ïîëüçîâàòåëè ñìîãóò ðàáîòàòü, íå ïîäîçðåâàÿ î òîì, ÷òî ñåðâåð âûïîëíÿåò «äâîÿêóþ» ðîëü. Ïîìèìî òàêèõ èñêëþ÷èòåëüíî ïîëüçîâàòåëüñêèõ ïîäõîäîâ, óñòàíîâêà íåñêîëüêèõ ýêçåìïëÿðîâ SQL Server ïîçâîëÿåò êîìïàíèè çíà÷èòåëüíî ñýêîíîìèòü íà ëèöåíçèÿõ (â òîì ñëó÷àå, åñëè ïðèîáðåòåí SQL Server 2005 â ðàñ÷åòå íà êîëè÷åñòâî ïðîöåññîðîâ ñåðâåðà). Êàæäûé ýêçåìïëÿð SQL Server ìîæåò èìåòü ñâîè ñîáñòâåííûå íàñòðîéêè, â îáùåì ñëó÷àå ïîëíîñòüþ îòëè÷àþùèåñÿ îò íàñòðîåê äðóãîãî ýêçåìïëÿðà, óñòàíîâëåííîãî íà äàííîì ñåðâåðå. Íàñòðîéêè ìîãóò ïîäðàçóìåâàòü íå òîëüêî ïàðàìåòðû áåçîïàñíîñòè, ïîäñîåäèíåíèÿ ïîëüçîâàòåëåé è íàáîð èíñòðóìåíòîâ, íî è îòäåëüíûé íàáîð ñåðâèñîâ, ñòðóêòóðó ïàïîê õðàíåíèÿ è äàæå ñâîþ ñîáñòâåííóþ ñòðóêòóðó ðååñòðà.  ïîäîáíûõ ñëó÷àÿõ îòäåëüíûå ýêçåìïëÿðû ïðîùå ðàññìàòðèâàòü â êà÷åñòâå îòäåëüíûõ «ëîãè÷åñêèõ» ñåðâåðîâ, íà êàæäûé èç êîòîðûõ âîçëîæåíû ñâîè ñîáñòâåííûå ôóíêöèè. Ýêçåìïëÿðû SQL Server 2005 ìîãóò áûòü äâóõ òèïîâ: ýêçåìïëÿð ïî óìîë÷àíèþ èëè èìåíîâàííûé ýêçåìïëÿð (ðèñ. 1.2). Íà ñåðâåðå ìîæåò ñóùåñòâîâàòü òîëüêî îäèí ýêçåìïëÿð ïî óìîë÷àíèþ è ïðàêòè÷åñêè íåîãðàíè÷åííîå ÷èñëî (íå áîëåå 50) èìåíîâàííûõ ýêçåìïëÿðîâ SQL Server 2005. Èìÿ ýêçåìïëÿðà ïî óìîë÷àíèþ çàäàåòñÿ àâòîìàòè÷åñêè è ñîñòîèò èç ñåòåâîãî èìåíè êîìïüþòåðà, íà êîòîðîì óñòàíîâëåí ýêçåìïëÿð (íàïðèìåð, Srv2005). Ïîëüçîâàòåëü íå ìîæåò èçìåíèòü èìåíè ýêçåìïëÿðà ïî óìîë÷àíèþ. Îáðàòèòå âíèìàíèå íà òî, ÷òî íè ïîëüçîâàòåëü, íè ìàñòåð óñòàíîâêè â àâòîìàòè÷åñêîì ðåæèìå íå ìîãóò çàäàâàòü èìÿ ýêçåìïëÿðà ïî óìîë÷àíèþ. Ýòî òàêæå íàêëàäûâàåò ñëåäóþùåå îãðàíè÷åíèå:
34
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
íà îòäåëüíûé êîìïüþòåð íå ìîãóò áûòü óñòàíîâëåíû äâà ýêçåìïëÿðà ïî óìîë÷àíèþ äàæå â òîì ñëó÷àå, åñëè îíè îòíîñÿòñÿ ê ðàçíûì âåðñèÿì SQL Server. Íàïðèìåð, ïîäîáíûå ñëó÷àè ìîãóò âîçíèêíóòü âî âðåìÿ îáíîâëåíèÿ SQL Server 2000 äî âåðñèè 2005.
Ðèñ. 1.2. Óñòàíîâêà èìåíîâàííîãî ýêçåìïëÿðà è ýêçåìïëÿðà ïî óìîë÷àíèþ
Ñ èìåíîâàííûì ýêçåìïëÿðîì áàçû äàííûõ äåëà îáñòîÿò àáñîëþòíî ïî-äðóãîìó. Äëÿ èìåíîâàííîãî ýêçåìïëÿðà SQL Server 2005 ïîëüçîâàòåëü ìîæåò çàäàòü èìÿ. Îäíàêî èìÿ, çàäàííîå ïîëüçîâàòåëåì, áóäåò ÿâëÿòüñÿ òîëüêî ÷àñòüþ îáùåãî èìåíè. Ïîìèìî íåãî â íàçâàíèå ýêçåìïëÿðà òàêæå âõîäèò ñåòåâîå èìÿ êîìïüþòåðà (íàïðèìåð, äëÿ èìåíîâàííîãî ýêçåìïëÿðà, óñòàíîâëåííîãî íà òîì æå ñåðâåðå, ÷òî è îïèñàííûé ýêçåìïëÿð ïî óìîë÷àíèþ, èìÿ áóäåò âûãëÿäåòü ñëåäóþùèì îáðàçîì: Srv2005$Instance1).
1.2.6. Óñòàíîâêà èìåíîâàííîãî ýêçåìïëÿðà Ýêçåìïëÿð ïî óìîë÷àíèþ ìîæåò áûòü óñòàíîâëåí âî âðåìÿ ïåðâîãî çàïóñêà ìàñòåðà óñòàíîâêè SQL Server, ïîýòîìó ìû íå áóäåì îñòàíàâëèâàòüñÿ íà îïèñàíèè äàííîãî ïðîöåññà. Ïîñòàðàåìñÿ áîëåå äåòàëüíî ðàññìîòðåòü ïðîöåññ óñòàíîâêè èìåíîâàííîãî ýêçåìïëÿðà SQL Server 2005. Äëÿ òîãî ÷òîáû íà÷àòü ïðîöåññ óñòàíîâêè èìåíîâàííîãî ýêçåìïëÿðà, âûïîëíèòå ñëåäóþùèå äåéñòâèÿ: 1. Çàïóñòèòå ìàñòåð óñòàíîâêè SQL Server 2005. 2. Íàæìèòå êíîïêó Install SQL Server.
1.2. Óñòàíîâêà MS SQL Server 2005
35
3. Ïîäòâåðäèòå âûïîëíåíèå óñëîâèé ëèöåíçèè è íàæìèòå íà êíîïêó Next. 4. Íà ñòðàíèöå SQL Server Component Update âûïîëíèòå îáíîâëåíèå êîìïîíåíòîâ ýêçåìïëÿðà (åñëè ýòî íåîáõîäèìî), íàæàâ êíîïêó Install. Ïåðåéäèòå ê ñëåäóþùåìó ýòàïó íàñòðîéêè ýêçåìïëÿðà, íàæàâ êíîïêó Finish. Íàæìèòå êíîïêó Next. 5. Ïîñëå çàãðóçêè ñòðàíèöû System Configuration Check â àâòîìàòè÷åñêîì ðåæèìå áóäåò âûïîëíåíà ïðîâåðêà ïàðàìåòðîâ êîìïüþòåðà. Äëÿ òîãî ÷òîáû ïðîñìîòðåòü îò÷åò î ïàðàìåòðàõ êîìïüþòåðà, êîòîðûå áóäóò ñãðóïïèðîâàíû ïî êàòåãîðèÿì, íàæìèòå êíîïêó Filter. Íàæàòèå êíîïêè Report ïðèâåäåò ê îòêðûòèþ ïîëíîãî îò÷åòà î ïàðàìåòðàõ êîìïüþòåðà. Åñëè âñå íåîáõîäèìûå òðåáîâàíèÿ ïî óñòàíîâêå ýêçåìïëÿðà SQL Server óñïåøíî âûïîëíåíû (î ÷åì ñâèäåòåëüñòâóåò îò÷åò), òî ìîæíî ïðèñòóïàòü ê ñëåäóþùåìó ýòàïó óñòàíîâêè. 6. Íàæìèòå êíîïêó Continue. Ðåçóëüòàòîì áóäåò îòêðûòèå ñòðàíèöû Registration Information. 7. Íà ñòðàíèöå Registration Information ââåäèòå òåêñòîâóþ èíôîðìàöèþ î ïîëüçîâàòåëå è êîìïàíèè, à òàêæå ââåäèòå êëþ÷ äàííîé âåðñèè ïðîãðàììíîãî ïðîäóêòà è íàæìèòå êíîïêó Next. 8. Íà ñòðàíèöå Components to Install âûáåðèòå êîìïîíåíòû äëÿ óñòàíîâêè (íàïðèìåð, ñåðâèñû íîòèôèêàöèè èëè îò÷åòîâ). Äëÿ òîãî ÷òîáû íàñòðîèòü âûáðàííûé êîìïîíåíò, íàæìèòå êíîïêó Advanced. Ïîñëå íàñòðîéêè âûáðàííûõ êîìïîíåíòîâ íàæìèòå êíîïêó Next.  ðåçóëüòàòå ýòîãî îòêðîåòñÿ îêíî Instance Name. 9.  îêíå Instance Name ââåäèòå èìÿ äëÿ ýêçåìïëÿðà SQL Server. Äëÿ óñòàíîâêè íîâîãî èìåíîâàííîãî ýêçåìïëÿðà óñòàíîâèòå ïåðåêëþ÷àòåëü Named Instance. Äëÿ òîãî ÷òîáû èçìåíèòü íàñòðîéêè ñóùåñòâóþùåãî ýêçåìïëÿðà SQL Server, ââåäèòå åãî èìÿ. Ïåðåéäèòå ê ñëåäóþùåìó ýòàïó óñòàíîâêè, íàæàâ êíîïêó Next. 10. Íà ñòðàíèöå Service Account ââåäèòå ïàðàìåòðû ó÷åòíûõ çàïèñåé äëÿ ñåðâèñîâ, êîòîðûå áóäóò óñòàíîâëåíû âìåñòå ñ äàííûì ýêçåìïëÿðîì, à çàòåì íàæìèòå êíîïêó Next. 11. Íà ñòðàíèöå Authentication Mode âûáåðèòå ïàðàìåòðû àóòåíòèôèêàöèè (àóòåíòèôèêàöèÿ Windows, ïîëüçîâàòåëü SQL Server) è íàæìèòå êíîïêó Next. 12. Íà ñòðàíèöå Collation Setting äëÿ êàæäîãî óñòàíàâëèâàåìîãî ñåðâèñà óñòàíîâèòå ïàðàìåòðû ñîðòèðîâêè, à çàòåì íàæìèòå êíîïêó Next. 13. Åñëè â ïðîöåññå óñòàíîâêè âû âûáðàëè óñòàíîâêó ñåðâèñîâ îò÷åòîâ, òî íàñòðîéòå èõ ïàðàìåòðû, èñïîëüçóÿ ñëåäóþùèå ñòðàíèöû ìàñòåðà óñòàíîâêè. 14. Íà ñòðàíèöå Error Reporting íàñòðîéòå ïàðàìåòðû ñîîáùåíèé îá îøèáêàõ â ðàáîòå ñåðâåðà è íàæìèòå êíîïêó Next.
36
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
15. Íà ñòðàíèöå Ready to Install ïðîñìîòðèòå èíôîðìàöèþ î ïàðàìåòðàõ óñòàíîâêè, êîòîðûå âû îïðåäåëèëè íà ñòðàíèöàõ ìàñòåðà óñòàíîâêè ðàíåå, è íàæìèòå êíîïêó Install äëÿ çàïóñêà ïðîöåññà óñòàíîâêè. Ïî îêîí÷àíèè ïðîöåññà óñòàíîâêè íàæìèòå êíîïêó Finish.
1.2.7. Îãðàíè÷åíèÿ íà èìÿ ýêçåìïëÿðà Äëÿ òîãî ÷òîáû ñîçäàòü èìåíîâàííûé ýêçåìïëÿð, âûáåðèòå äàííûé ïàðàìåòð âî âðåìÿ óñòàíîâêè. Îáðàòèòå âíèìàíèå íà òî, ÷òî âî âðåìÿ èìåíîâàíèÿ ïîäîáíûõ ýêçåìïëÿðîâ SQL Server äåéñòâóþò ñëåäóþùèå îãðàíè÷åíèÿ: 1. Ýêçåìïëÿð íå ìîæåò ñîäåðæàòü â ñâîåì íàçâàíèè ñëîâà «SQL», «Server», «SQLServer», «MSSQLServer», «Default» èëè äðóãèå çàðåçåðâèðîâàííûå ñëîâà. Ýòî ñäåëàíî äëÿ òîãî, ÷òîáû âî âðåìÿ ïðîãðàììíîãî îáðàùåíèÿ ê ýêçåìïëÿðó SQL Server íå âîçíèêàëî êàêèõ-ëèáî ïðîáëåì.  òîì ñëó÷àå, åñëè âû ââåäåòå îäíî èç ïåðå÷èñëåííûõ ñëîâ â èìÿ ýêçåìïëÿðà, áóäåò âûâåäåíî ñîîáùåíèå îá îøèáêå. 2. Íàèìåíîâàíèå ýêçåìïëÿðà ìîæåò âêëþ÷àòü áóêâû, öèôðû, à òàêæå çíàêè ïîä÷åðêèâàíèÿ «_» è äîëëàðà «$». Ïåðâûé ñèìâîë íàçâàíèÿ äîëæåí ñîäåðæàòü çíàê ïîä÷åðêèâàíèÿ «_» èëè áóêâó. 3. Ïðîáåëû, òàê æå êàê è äðóãèå ñëóæåáíûå çíàêè, íå äîïóñêàþòñÿ. Íå äîïóñêàåòñÿ èñïîëüçîâàíèå â íàçâàíèè ýêçåìïëÿðà ñëåäóþùèõ ñèìâîëîâ: \ @ # $ % ^ & * ( ) , : ; « ‘. 4. Íàèìåíîâàíèå ýêçåìïëÿðà íå ÷óâñòâèòåëüíî ê ðåãèñòðó (îäèíàêîâî âîñïðèíèìàþòñÿ êàê ïðîïèñíûå, òàê è ñòðî÷íûå ñèìâîëû. 5. Äëèíà íàçâàíèÿ ýêçåìïëÿðà îãðàíè÷åíà øåñòíàäöàòüþ ñèìâîëàìè.  îòíîøåíèè ýêçåìïëÿðà ïî óìîë÷àíèþ òàêæå äåéñòâóþò íåêîòîðûå îãðàíè÷åíèÿ: 1. Åñëè íà êîìïüþòåð óñòàíàâëèâàåòñÿ åäèíñòâåííûé ýêçåìïëÿð SQL Server, òî äàííûé ýêçåìïëÿð áóäåò ÿâëÿòüñÿ èñïîëüçóåìûì ïî óìîë÷àíèþ. 2. Êîëè÷åñòâî ýêçåìïëÿðîâ, èñïîëüçóåìûõ ïî óìîë÷àíèþ, íà îòäåëüíî âçÿòîì êîìïüþòåðå íå ìîæåò áûòü áîëüøå îäíîãî. 3. Åñëè âûïîëíÿåòñÿ ìîäåðíèçàöèÿ SQL Server 7.0 äî âåðñèè 2005, òî äàííûé ýêçåìïëÿð áóäåò ÿâëÿòüñÿ èñïîëüçóåìûì ïî óìîë÷àíèþ. 4. Èñïîëüçîâàíèå ýêçåìïëÿðà ïî óìîë÷àíèþ ïðåäïî÷òèòåëüíåå â òåõ ñëó÷àÿõ, êîãäà èñïîëüçóþòñÿ êëèåíòû âåðñèé ñ 6.0 ïî 7.0. Ýòî îáúÿñíÿåòñÿ ïðîñòîòîé íàñòðîéêè êëèåíòñêîãî ïðèëîæåíèÿ äëÿ ñîåäèíåíèÿ ñ ýêçåìïëÿðîì ïî óìîë÷àíèþ.  ñëó÷àå íàñòðîéêè ñîåäèíåíèÿ ìåæäó êëèåíòàìè âåðñèé 6.0, 7.0 è èìåíîâàííûì ýêçåìïëÿðîì íåîáõîäèìî íàñòðàèâàòü ïàðàìåòðû ôèçè÷åñêîãî ñîåäèíåíèÿ (òàêèå, êàê IP-àäðåñ ñåðâåðà èìåíîâàííîãî ýêçåìïëÿðà, èìÿ ñåðâåðà, ïîðò è äð.). 5.  ñëó÷àå óñòàíîâêè íà êîìïüþòåðå ðåäàêöèè Microsoft SQL Server 2005 Express Edition ïî óìîë÷àíèþ ñíà÷àëà óñòàíàâëèâàåòñÿ èìåíîâàííûé ýêçåìïëÿð. Äëÿ òîãî ÷òîáû óñòàíîâèòü ýêçåìïëÿð SQL Server 2005 ïî óìîë÷àíèþ, â ïðîöåññå óñòàíîâêè âûáåðèòå ïåðåêëþ÷àòåëü Default Instance (èçíà÷àëüíî âûáðàí ïåðåêëþ÷àòåëü Named Instance).
1.2. Óñòàíîâêà MS SQL Server 2005
37
1.2.8. Ðàñïîëîæåíèå ôàéëîâ ýêçåìïëÿðîâ Ðàíåå ìû óïîìèíàëè î òîì, ÷òî ýêçåìïëÿðû SQL Server 2005 ìîãóò áûòü àáñîëþòíî íåçàâèñèìûìè äðóã îò äðóãà. Ýòî ïîäðàçóìåâàåò ñâîé ñîáñòâåííûé íàáîð èíñòðóìåíòîâ, ñåðâèñîâ è óòèëèò äëÿ êàæäîãî ýêçåìïëÿðà.  ñâîþ î÷åðåäü ðàçëè÷íûå íàáîðû ñåðâèñîâ äèêòóþò ìàñòåðó óñòàíîâêè òðåáîâàíèÿ îòíîñèòåëüíî ïàïîê è ôàéëîâ ñåðâåðà SQL, ðàñïîëàãàþùèõñÿ íà êîìïüþòåðå. Êàæäûé ýêçåìïëÿð SQL Server (â òîì ñëó÷àå, åñëè èõ áîëüøå îäíîãî íà êîìïüþòåðå) èìååò ñâîé ñîáñòâåííûé íàáîð ïàïîê è ôàéëîâ äàííûõ. Ïàïêè àáñîëþòíî íå ïåðåñåêàþòñÿ ìåæäó ñîáîé, ÷òî óïðîùàåò ïðîöåññ àäìèíèñòðèðîâàíèÿ. ×òî êàñàåòñÿ îáùèõ ôàéëîâ, òî îíè èñïîëüçóþòñÿ ñîâìåñòíî âñåìè ýêçåìïëÿðàìè. Çà ñ÷åò ýòîãî ýêîíîìèòñÿ ìåñòî è óïðîùàåòñÿ ïðîöåññ óñòàíîâêè äîïîëíèòåëüíûõ êîìïîíåíòîâ äëÿ îòäåëüíî âçÿòîãî ýêçåìïëÿðà (åñëè ïîäîáíûå êîìïîíåíòû ðàíåå áûëè óñòàíîâëåíû äëÿ äðóãîãî ýêçåìïëÿðà íà äàííîì êîìïüþòåðå). Èñïîëíÿåìûå ôàéëû êàæäîãî êîìïîíåíòà SQL Server ÿâëÿþòñÿ óíèêàëüíûìè äëÿ âûáðàííîãî ýêçåìïëÿðà. Ýòî ïîçâîëÿåò âûïîëíÿòü ìîäåðíèçàöèþ îòäåëüíîãî ýêçåìïëÿðà SQL Server â òî âðåìÿ, êîãäà äðóãèå ýêçåìïëÿðû, çàïóùåííûå íà äàííîì êîìïüþòåðå, áóäóò ïðîäîëæàòü ðàáîòàòü â òîé ðåäàêöèè SQL Server, â êîòîðîé îíè áûëè èçíà÷àëüíî óñòàíîâëåíû.  ðàçäåëå 1.2.9 «Îáùèå ôàéëû ðàçëè÷íûõ ýêçåìïëÿðîâ» ìû ðàññìîòðèì íàáîðû ôàéëîâ, êîòîðûå íåëüçÿ óäàëÿòü äëÿ îòäåëüíîãî ýêçåìïëÿðà áàçû äàííûõ, ïîñêîëüêó îíè ÿâëÿþòñÿ ðàçäåëÿåìûìè ìåæäó ýêçåìïëÿðàìè.
1.2.9. Îáùèå ôàéëû ðàçëè÷íûõ ýêçåìïëÿðîâ Îáùèå ôàéëû ÿâëÿþòñÿ ðàçäåëÿåìûìè ìåæäó âñåìè ýêçåìïëÿðàìè SQL Server, à ñëåäîâàòåëüíî, íå ìîãóò áûòü óäàëåíû ñ êîìïüþòåðà äàæå â òîì ñëó÷àå, åñëè óäàëÿåòñÿ îäèí èç âûáðàííûõ êîìïîíåíòîâ èëè ýêçåìïëÿðîâ. Îáùèå ôàéëû õðàíÿòñÿ â ïàïêå C:\Program Files\Microsoft SQL Server\8.0. Îáðàòèòå âíèìàíèå íà òî, ÷òî îáùèå ôàéëû íå ìîãóò áûòü óñòàíîâëåíû íà ñæàòûé äèñê, à ïîòîìó ïåðåä óñòàíîâêîé ïåðâîãî ýêçåìïëÿðà SQL Server óáåäèòåñü â òîì, ÷òî äèñê íå ÿâëÿåòñÿ ñæàòûì. Íà ðèñ. 1.3 ïîêàçàíà ñòðóêòóðà êàòàëîãà, â êîòîðîé õðàíÿòñÿ îáùèå ôàéëû. Íà ðèñ. 1.4 ïîêàçàíî ñîäåðæèìîå ïàïîê îòäåëüíûõ ýêçåìïëÿðîâ SQL Server.
Ðèñ. 1.3. Êàòàëîã äëÿ õðàíåíèÿ îáùèõ ôàéëîâ
Âî âðåìÿ óñòàíîâêè ýêçåìïëÿðà SQL Server äëÿ êàæäîãî êîìïîíåíòà ñåðâåðà ãåíåðèðóåòñÿ ñâîé ñîáñòâåííûé èäåíòèôèêàöèîííûé íîìåð, êîòîðûé ïîçâîëÿåò îòäåëèòü êîìïîíåíòû SQL Server äðóã îò äðóãà â ñòðóêòóðå ïàïîê è êëþ÷àõ ðååñòðà. Ïîäîáíûå èäåíòèôèêàöèîííûå íîìåðà ãåíåðèðóþòñÿ äëÿ ñëåäóþùèõ
38
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
êîìïîíåíòîâ SQL Server 2005 (íà îñíîâå êîòîðûõ ìîãóò áûòü ñîçäàíû îòäåëüíûå ýêçåìïëÿðû SQL Server): · ÿäðî SQL Server; · ñåðâèñû îò÷åòîâ; · ñåðâèñû àíàëèòèêè.
Ðèñ. 1.4. Êàòàëîã äëÿ õðàíåíèÿ ôàéëîâ îòäåëüíûõ ýêçåìïëÿðîâ
Ãåíåðàöèÿ èäåíòèôèêàöèîííîãî êîäà âûïîëíÿåòñÿ ïî ñëåäóþùåìó àëãîðèòìó: MSSQL.N
ãäå N — ýòî ïîðÿäêîâûé íîìåð êîìïîíåíòà, êîòîðûé óñòàíàâëèâàåòñÿ âìåñòå ñ äàííûì ýêçåìïëÿðîì (íàïðèìåð, MSSQL.1 — äëÿ ïåðâîãî êîìïîíåíòà, MSSQL.2 — äëÿ âòîðîãî è ò. ä.). Òàêèì îáðàçîì, ìîæíî íå òîëüêî áûñòðî ïðîñìîòðåòü êîìïîíåíòû îòäåëüíîãî ýêçåìïëÿðà, íî è áûñòðî îöåíèòü, êàêèå êîìïîíåíòû áûëè óñòàíîâëåíû â ïîñëåäíþþ î÷åðåäü, ïðîñòî âçãëÿíóâ íà ñòðóêòóðó ïàïîê èëè êëþ÷è ðååñòðà Windows. Ïðèìåð èñïîëüçîâàíèÿ èäåíòèôèêàöèîííîãî êîäà â èìåíîâàíèè ñòðóêòóðû ïàïîê (äëÿ ÿäðà SQL Server 2005): C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\ Ïðèìåð èìåíîâàíèÿ êëþ÷åé ðååñòðà: [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\MSSQL.1]
Ñâÿçü ìåæäó èìåíåì ýêçåìïëÿðà è åãî èäåíòèôèêàöèîííûì êîäîì õðàíèòñÿ â ðååñòðå Windows â êëþ÷å: [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Name\SQL]
1.3. Îáíîâëåíèå MS SQL Server 2005
39
 ýòîì êëþ÷å õðàíèòñÿ çíà÷åíèå: "Srv2005$Instance1"="MSSQL.1", ãäå "Srv2005$Instance1" — èìÿ ýêçåìïëÿðà, à "MSSQL.1" — åãî èäåíòèôèêàöèîííûé íîìåð.
1.2.10. Óñòàíîâêà íåñêîëüêèõ ýêçåìïëÿðîâ  òîì ñëó÷àå, åñëè íà îòäåëüíî âçÿòîì ñåðâåðå óñòàíîâëåíî íåñêîëüêî ýêçåìïëÿðîâ SQL Server, âñå îíè áóäóò êîíêóðèðîâàòü ìåæäó ñîáîé çà ðåñóðñû äàííîãî ñåðâåðà. Êàæäûé ýêçåìïëÿð ðàáîòàåò íà ñåðâåðå íåçàâèñèìî îò äðóãèõ ýêçåìïëÿðîâ, à ñëåäîâàòåëüíî, ïîäðàçóìåâàåò, ÷òî îí íàõîäèòñÿ íà ñåðâåðå «â ãîðäîì îäèíî÷åñòâå». Ïîíèìàíèå äàííîãî, íà ïåðâûé âçãëÿä, òðèâèàëüíîãî ôàêòà ïîçâîëèò èçáåæàòü îãðîìíîãî ÷èñëà ïðîáëåì, ñâÿçàííûõ ñ ïðîèçâîäèòåëüíîñòüþ áàçû äàííûõ. Íàïðèìåð, óñòàíîâêà áîëüøîãî ÷èñëà ýêçåìïëÿðîâ íà ñåðâåð ïîòðåáóåò äîïîëíèòåëüíûõ êàïèòàëîâëîæåíèé â ïðîèçâîäèòåëüíîñòü ïîñëåäíåãî. Îáðàáîòêà áîëüøîãî ÷èñëà çàïðîñîâ îäíèì èç ýêçåìïëÿðîâ ïðèâåäåò ê çíà÷èòåëüíîé íàãðóçêå íà ïîäñèñòåìó ââîäà-âûâîäà ñåðâåðà, ÷òî òàêæå ìîæåò íåãàòèâíî ñêàçàòüñÿ íà îáùåé ïðîèçâîäèòåëüíîñòè äðóãèõ ýêçåìïëÿðîâ SQL Server. Íà îòäåëüíî âçÿòîì ñåðâåðå ìîæíî óñòàíîâèòü íå áîëåå îäíîãî ýêçåìïëÿðà ïî óìîë÷àíèþ è 49 èìåíîâàííûõ ýêçåìïëÿðîâ. Ïðè ýòîì äîïóñêàåòñÿ óñòàíîâêà (ñ ïîìîùüþ ïàðàìåòðîâ ìàñòåðà) èìåíîâàííûõ ýêçåìïëÿðîâ áåç ïðåäâàðèòåëüíîé óñòàíîâêè ýêçåìïëÿðà ïî óìîë÷àíèþ. Îäíàêî îáû÷íî ïåðâûé ýêçåìïëÿð, óñòàíàâëèâàåìûé íà ñåðâåð, ÿâëÿåòñÿ ýêçåìïëÿðîì ïî óìîë÷àíèþ, ïîñëå êîòîðîãî óñòàíàâëèâàþòñÿ íà ñåðâåð èìåíîâàííûå ýêçåìïëÿðû. Î òîì, êàê âûïîëíèòü óñòàíîâêó èìåíîâàííîãî ýêçåìïëÿðà, ìû ãîâîðèëè â ðàçäåëå 1.2.6 «Óñòàíîâêà èìåíîâàííîãî ýêçåìïëÿðà».
1.3. Îáíîâëåíèå MS SQL Server 2005 Îáíîâëåíèå äëÿ SQL Server 2005 ïîääåðæèâàåòñÿ ñ âåðñèé 7.0 è âûøå. Ýòî îçíà÷àåò, ÷òî êîìïîíåíòû SQL Server 2005 ìîãóò áûòü óñòàíîâëåíû ïîâåðõ êîìïîíåíòîâ SQL Server áîëåå ðàííèõ âåðñèé. Ïðè ýòîì êîìïàíèÿ Microsoft ãàðàíòèðóåò, ÷òî ïîñëå îáíîâëåíèÿ ýêçåìïëÿðà ìîæíî áóäåò è äàëåå ïðîäîëæèòü ðàáîòó ñ äàííûìè, êàê ýòî âûïîëíÿëîñü äî åãî îáíîâëåíèÿ. Ïðîöåññ ìîäåðíèçàöèè SQL Server, íàïðèìåð, âåðñèè 2000 íåñêîëüêî îòëè÷àåòñÿ îò ïðîöåññà ìîäåðíèçàöèè SQL Server 7.0. Îá ýòîì ìû ïîãîâîðèì â ðàçäåëå 1.3.3 «Ïåðåíîñ áàç äàííûõ ñ SQL Server 7 èëè 2000 íà 2005». ×òî êàñàåòñÿ SQL Server âåðñèé 6.5, òî ïðÿìàÿ ìîäåðíèçàöèÿ ñåðâåðà äî âåðñèè 2005 íåâîçìîæíà. Î òîì, êàê ðåøèòü äàííóþ ïðîáëåìó, ìû ïîãîâîðèì â ðàçäåëå 1.3.1 «Îáíîâëåíèå SQL Server 6.5». Ïîñëå òîãî êàê ìîäåðíèçàöèÿ ýêçåìïëÿðà SQL Server âûïîëíåíà, ìîæíî ïðèñòóïèòü ê äîáàâëåíèþ èëè óäàëåíèþ îòäåëüíûõ êîìïîíåíòîâ. Ðàññìîòðèì áîëåå äåòàëüíî âîçìîæíûå âàðèàíòû ìîäåðíèçàöèè SQL Server. Äî âåðñèè 2005 ìîæíî ìîäåðíèçèðîâàòü ýêçåìïëÿðû SQL Server ñëåäóþùèõ âåðñèé: · SQL Server 2000 (+SP1–SP4); · SQL Server 7.0;
40
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
· SQL Server 2000 (64-bit); · MSDE (äî SQL Express Server 2005). Ïðè ýòîì óñòàíîâêà íîâûõ êîìïîíåíòîâ è ôàéëîâ áóäåò âûïîëíÿòüñÿ â òå æå ïàïêè, ÷òî è ýêçåìïëÿðû ïðåäûäóùåãî ñåðâåðà. Òàêæå îáðàòèòå âíèìàíèå íà òî, ÷òî äëÿ ñåðâèñîâ àíàëèòèêè (SQL Server 2000) ïåðåä îáíîâëåíèåì äî SQL Server 2005 ñíà÷àëà íåîáõîäèìî ïåðåíåñòè äàííûå â íîâûé ýêçåìïëÿð, à çàòåì óæå âûïîëíèòü îáíîâëåíèå. Äëÿ ñëåäóþùèõ âåðñèé SQL Server ìîäåðíèçàöèÿ íå ïîääåðæèâàåòñÿ: · SQL Server 6.5; · MSDE (äî âåðñèè SQL Server 2005).
1.3.1. Îáíîâëåíèå SQL Server 6.5 Ïðÿìîå îáíîâëåíèå ñ âåðñèè Microsoft SQL Server 6.5 äî âåðñèè SQL Server 2005 íåäîñòóïíî. Äëÿ òîãî ÷òîáû ðåøèòü äàííóþ ïðîáëåìó, íåîáõîäèìî ñíà÷àëà âûïîëíèòü îáíîâëåíèå SQL Server 6.5 äî îäíîé èç áîëåå ïîçäíèõ âåðñèé (íàïðèìåð, 7.0 èëè 2000), à çàòåì âûïîëíèòü ìîäåðíèçàöèþ îáíîâëåííîé âåðñèè äî SQL Server 2005.
1.3.2. Îáíîâëåíèå âåðñèé SQL Server 2000 Îáíîâëåíèþ äî íîâîé âåðñèè SQL Server ìîãóò ïîäâåðãàòüñÿ ñëåäóþùèå âåðñèè SQL Server 2000: · SQL Server 2000 Enterprise Edition; · SQL Server 2000 Developer Edition; · SQL Server 2000 Standard Edition; · SQL Server 2000 Personal Edition; · SQL Server 2000 Evaluation Edition; · MSDE. Äëÿ SQL Server 2000 Enterprise Edition äîñòóïíî îáíîâëåíèå äî âåðñèé SQL Server 2005 Standard, Developer, Enterprise èëè Workgroup Edition. SQL Server 2000 Developer Edition îáíîâëÿåòñÿ äî âåðñèè SQL Server 2005 Enterprise Edition. Îáíîâëåíèå SQL Server 2000 Standard Edition âîçìîæíî äî âåðñèé Developer, Enterprise èëè Workgroup. SQL Server 2000 Personal Edition ìîæíî îáíîâèòü äî âåðñèé Standard, Developer èëè Enterprise. Äëÿ MSDE äîñòóïíî îáíîâëåíèå òîëüêî äî âåðñèè SQL Server 2005 Express Edition.
1.3.3. Ïåðåíîñ áàç äàííûõ ñ SQL Server 7 èëè 2000 íà 2005 Ïðîöåññ îáíîâëåíèÿ SQL Server âåðñèé 7 èëè 2000 äî âåðñèè 2005 ïðàêòè÷åñêè íå îòëè÷àåòñÿ îò ïðîöåññà óñòàíîâêè ïîñëåäíåãî ïðîãðàììíîãî îáåñïå÷åíèÿ. Ìû íå áóäåì îñòàíàâëèâàòüñÿ íà ýòîì âîïðîñå, ïîñêîëüêó äåòàëüíî ðàññìîòðåëè åãî
1.3. Îáíîâëåíèå MS SQL Server 2005
41
â ðàçäåëå 1.2 «Óñòàíîâêà MS SQL Server 2005».  äàííîì ðàçäåëå ìû ïîñòàðàåìñÿ áîëåå äåòàëüíî ðàññìîòðåòü ïðîöåññ ïåðåíîñà áàç äàííûõ íà íîâóþ ïëàòôîðìó, à òàêæå îñòàíîâèìñÿ íà íåêîòîðûõ íþàíñàõ îáíîâëåíèÿ ñåðâèñîâ SQL Server. Äëÿ òîãî ÷òîáû âûïîëíèòü ïåðåíîñ áàç äàííûõ SQL Server ñ âåðñèé 7.0 èëè 2000, íåîáõîäèìî âîñïîëüçîâàòüñÿ óòèëèòîé Copy Database Wizard. Äàííàÿ óòèëèòà ïîçâîëÿåò âûïîëíÿòü ïåðåíîñ (è êîïèðîâàíèå) áàç äàííûõ ìåæäó îòäåëüíûìè ýêçåìïëÿðàìè SQL Server. Áîëå òîãî, äàííàÿ óòèëèòà îäèíàêîâî õîðîøî ðàáîòàåò ñ ðàçëè÷íûìè âåðñèÿìè SQL Server, ÷òî ïîçâîëÿåò èñïîëüçîâàòü åå â êà÷åñòâå òðàíçèòíîãî ïðèëîæåíèÿ. Âûïîëíèòå ñëåäóþùèé íàáîð äåéñòâèé â Copy Database Wizard äëÿ ïåðåíîñà äàííûõ: 1. Ðàçâåðíèòå â êîíñîëè ãðóïïó ñåðâåðîâ, à çàòåì ïàðàìåòðû ñàìîãî ñåðâåðà, ùåëêíóâ íà íåì óêàçàòåëåì ìûøè. 2. Ùåëêíèòå ïðàâîé êíîïêîé ìûøè íà âûáðàííîì ñåðâåðå è âûáåðèòå ïóíêò ìåíþ All Tasks. 3. Âûáåðèòå ïóíêò ìåíþ Copy Database Wizard. 4. Âûïîëíèòå ïîñëåäîâàòåëüíîñòü äåéñòâèé, ïðåäëàãàåìóþ äàííûì ìàñòåðîì. 5. Ïîñëå òîãî êàê ïåðåíîñ áàç äàííûõ áóäåò çàâåðøåí, çàïóñòèòå ïðîöåäóðó sp_updatestats äëÿ òîãî, ÷òîáû âûïîëíèòü îáíîâëåíèå ñòàòèñòèêè ðàáîòû ñåðâåðà è óáåäèòüñÿ â òîì, ÷òî ïðîèçâîäèòåëüíîñòü ñêîïèðîâàííîé áàçû äàííûõ íàõîäèòñÿ íà çàäàííîì óðîâíå. Óñêîðèòü ïðîöåññ ïåðåâîäà ýêçåìïëÿðîâ Microsoft SQL Server âåðñèé 7.0 èëè 2000 íà ïëàòôîðìó SQL Server 2005 ìîæíî çà ñ÷åò èíòåãðàöèè íåñêîëüêèõ ýêçåìïëÿðîâ SQL Server 7.0 èëè 2000 â îòäåëüíûé ýêçåìïëÿð SQL Server 2000 ñ ïîñëåäóþùèì îáíîâëåíèåì äî âåðñèè SQL Server 2005. Îáðàòèòå âíèìàíèå íà òî, ÷òî âî âðåìÿ îáíîâëåíèÿ áàç äàííûõ SQL Server 7.0 äî SQL Server 2000 ìîäåðíèçàöèÿ ýêçåìïëÿðà ïðîâîäèòñÿ òîëüêî äî èìåíîâàííîãî ýêçåìïëÿðà SQL Server. Îäíàêî â ñëó÷àå ïîäîáíîãî îáíîâëåíèÿ ñ óäàëåííîãî êîìïüþòåðà ìîäåðíèçàöèÿ ìîæåò áûòü òàêæå âûïîëíåíà è äî ýêçåìïëÿðà ïî óìîë÷àíèþ. Îáû÷íî âìåñòå ñ ÿäðîì SQL Server âûïîëíÿåòñÿ îáíîâëåíèå êîìïîíåíòîâ ïðîãðàììíîãî îáåñïå÷åíèÿ. Îñòàíîâèìñÿ íà ðàññìîòðåíèè ïðîöåññà îáíîâëåíèÿ ñåðâèñîâ àíàëèòèêè è ïðåîáðàçîâàíèÿ äàííûõ. Ïðîöåññ îáíîâëåíèÿ ñåðâèñîâ àíàëèòèêè SQL Server 2000 äî âåðñèè 2005 ìîæíî ðàçáèòü íà äâà ýòàïà. Íà ïåðâîì ýòàïå óñòàíàâëèâàþòñÿ ñåðâèñû àíàëèòèêè SQL Server 2005. Íà âòîðîì âûïîëíÿåòñÿ ìèãðàöèÿ áàç äàííûõ ñåðâèñîâ àíàëèòèêè SQL Server 2000 íà íîâóþ ïëàòôîðìó. Ïîäîáíûé ïîäõîä íåîáõîäèì, ïîñêîëüêó ôîðìàòû ïðåäñòàâëåíèÿ äàííûõ â ñåðâèñàõ àíàëèòèêè SQL Server ðàçíûõ âåðñèé íåñêîëüêî îòëè÷àþòñÿ äðóã îò äðóãà. Ïðè ýòîì ïðîöåññ ïåðåâîäà áàç äàííûõ òðåáóåò çíàíèÿ è èñïîëüçîâàíèÿ äîïîëíèòåëüíûõ óòèëèò (òàêèõ, êàê Migration Wizard, SQL Server Management Studio è äð.). Äëÿ òîãî ÷òîáû ïåðåâåñòè ñåðâèñû àíàëèòèêè ñ îäíîé âåðñèè íà äðóãóþ, âîñïîëüçóéòåñü ñëåäóþùèìè îáùèìè ðåêîìåíäàöèÿìè: 1. Óñòàíîâèòå èìåíîâàííûé ýêçåìïëÿð SQL Server 2005 Analysis Services, èñïîëüçóÿ ìàñòåð óñòàíîâêè SQL Server èëè êîìàíäíóþ ñòðîêó.
42
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
2. Âûïîëíèòå ïåðåíîñ ìåòàäàííûõ SQL Server 2000 Analysis Services íà ýêçåìïëÿð SQL Server 2005 Analysis Services ñ ïîìîùüþ Migration Wizard. 3. Çàïóñòèòå ýêçåìïëÿð SQL Server 2005 Analysis Services. Ýòî ïðèâåäåò ê òîìó, ÷òî ñåðâåð ñàìîñòîÿòåëüíî âûïîëíèò ïåðåíîñ â íîâóþ ñòðóêòóðó áàçû äàííûõ. 4. Âûïîëíèòå ïðîâåðêó öåëîñòíîñòè ïåðåíåñåííîé áàçû äàííûõ è åå ñòðóêòóðó ñ ïîìîùüþ SQL Server Management Studio. Âûïîëíèòå òåñòèðîâàíèå öåëîñòíîñòè äàííûõ è âîññòàíîâëåííûõ ñâÿçåé ñ ïîìîùüþ êëèåíòñêèõ ïðèëîæåíèé. 5.  ñëó÷àå óñïåøíîãî ïåðåíîñà äàííûõ âûïîëíèòå äåèíñòàëëÿöèþ SQL Server 2000 Analysis Services. 6. Ïîñëå çàâåðøåíèÿ äåèíñòàëëÿöèè âîñïîëüçóéòåñü èíñòðóìåíòîì Analysis Services Instance Rename äëÿ òîãî, ÷òîáû ïåðåèìåíîâàòü ýêçåìïëÿð SQL Server 2005 Analysis Services (åñëè ýòî íåîáõîäèìî) è íàçíà÷èòü ýòîò ýêçåìïëÿð â êà÷åñòâå èñïîëüçóåìîãî ïî óìîë÷àíèþ.  îòíîøåíèè ïðîöåññà îáíîâëåíèÿ SQL Server 2000 Data Transformation Services äî íîâîé âåðñèè äåëà îáñòîÿò íåñêîëüêî èíà÷å. Äåëî â òîì, ÷òî äàííûé êîìïîíåíò íå óñòàíàâëèâàåòñÿ ïî óìîë÷àíèþ, à ñëåäîâàòåëüíî, åãî íåîáõîäèìî àêòèâèðîâàòü â ïðîöåññå óñòàíîâêè. Åñëè ñåðâèñû ïðåîáðàçîâàíèÿ äàííûõ áûëè óñòàíîâëåíû âìåñòå ñ SQL Server 2000 è òðåáóåòñÿ èõ îáíîâëåíèå, òî çàïóñòèòå ìàñòåð óñòàíîâêè SQL Server 2005. Äîéäÿ äî ýòàïà âûáîðà êîìïîíåíòîâ SQL Server (ñòðàíèöà Components to Install ìàñòåðà óñòàíîâêè), âûáåðèòå êîìïîíåíò Data Transformation Services. Ïî çàâåðøåíèè ïðîöåññà óñòàíîâêè äàííûå ñåðâèñû áóäóò óñòàíîâëåíû.
1.3.4. Îáíîâëåíèå ðåïëèöèðóåìûõ áàç äàííûõ Îáíîâëÿÿ SQL Server äî âåðñèè 2005, òàêæå ìîæíî âûïîëíèòü îáíîâëåíèå ðåïëèöèðóåìûõ áàç äàííûõ. Ïðè ýòîì íåò íåîáõîäèìîñòè îñòàíàâëèâàòü ïðîöåäóðó ðåïëèêàöèè äëÿ îáíîâëåíèÿ êàêîãî-ëèáî óçëà ñõåìû áàç äàííûõ ñ ðåïëèêàöèåé. Îáíîâëåíèå ðåïëèöèðóåìûõ áàç äàííûõ íåîáõîäèìî âûïîëíÿòü â ñëåäóþùåì ïîðÿäêå: · Ðàñïðîñòðàíèòåëü (Distributor). Îáû÷íî âî ìíîãèõ ñõåìàõ ðåïëèêàöèè ðàñïðîñòðàíèòåëü è ñåðâåð ïóáëèêàöèé — ýòî îäèí è òîò æå êîìïüþòåð, îäíàêî ñóùåñòâóþò ñõåìû ðåïëèêàöèè, â êîòîðûõ ôóíêöèè ðàñïðîñòðàíèòåëÿ è ñåðâåðà ïóáëèêàöèé âûïîëíÿþò ðàçëè÷íûå êîìïüþòåðû. · Ñåðâåð ïóáëèêàöèé. · Ïîäïèñ÷èê. Ïîìèìî ó÷åòà ïîðÿäêà ìîäåðíèçàöèè ñåðâåðîâ, ó÷àñòâóþùèõ â ðåïëèêàöèè, âàì íåîáõîäèìî óáåäèòüñÿ â òîì, ÷òî îíè óäîâëåòâîðÿþò ñëåäóþùèì óñëîâèÿì: · âåðñèÿ SQL Server, óñòàíîâëåííàÿ íà ðàñïðîñòðàíèòåëå áîëüøå èëè ðàâíà âåðñèè SQL Server, óñòàíîâëåííîé íà ñåðâåðå ïóáëèêàöèé;
1.3. Îáíîâëåíèå MS SQL Server 2005
43
· ïîäïèñ÷èêè òðàíçàêöèîííûõ ïóáëèêàöèé äîëæíû èìåòü âåðñèè SQL Server íå íèæå SQL Server 2000 SP3; · ïîäïèñ÷èêè, âûïîëíÿþùèå òîëüêî ÷òåíèå, äîëæíû èìåòü âåðñèþ SQL Server, êîòîðàÿ ìåíüøå èëè ðàâíà âåðñèè SQL Server ñåðâåðà ïóáëèêàöèè; · ïîäïèñ÷èêè, âûïîëíÿþùèå îáúåäèíÿþùóþ ðåïëèêàöèþ, äîëæíû èìåòü SQL Server âåðñèè íå íèæå 2000 SP3. Ïîñëå òîãî êàê îáíîâëåíèå êàæäîãî óçëà áóäåò âûïîëíåíî, çàïóñòèòå Snapshot Agent íà êàæäîì ñåðâåðå ïóáëèêàöèé äëÿ âûïîëíåíèÿ ïóáëèêàöèè äàííûõ. Íà êàæäîì ñåðâåðå-ïîäïèñ÷èêå äëÿ êàæäîé ïîäïèñêè çàïóñòèòå Merge Agent.
1.3.5. Áåçîïàñíîñòü è ðåïëèêàöèÿ  ïðåäûäóùèõ âåðñèÿõ SQL Server ïî óìîë÷àíèþ àãåíò çàïóñêàëñÿ îò èìåíè ó÷åòíîé çàïèñè SQL Server Agent.  íîâîé âåðñèè SQL Server äîáàâèëèñü íå òîëüêî äîïîëíèòåëüíûå ôóíêöèè áåçîïàñíîñòè, íî è ñâîáîäà â çàïóñêå ïðèëîæåíèé. Òåïåðü àãåíò ðåïëèêàöèè ìîæåò áûòü çàïóùåí îò èìåíè ëþáîé ó÷åòíîé çàïèñè. Îò èìåíè ýòîé çàïèñè ìîãóò âûïîëíÿòüñÿ ëþáûå äåéñòâèÿ, äîñòóïíûå àãåíòó: ïîäêëþ÷åíèå ê áàçàì äàííûõ è äðóãèì èñòî÷íèêàì äàííûõ, èçâëå÷åíèå è ìàíèïóëèðîâàíèå äàííûìè, îãðàíè÷åíèå äîñòóïà è äð. Áîëåå òîãî, â ñëó÷àå ñóùåñòâîâàíèÿ â ñèñòåìå íåñêîëüêèõ àãåíòîâ êàæäûé èç íèõ ìîæåò áûòü çàïóùåí îò èìåíè îòäåëüíîé ó÷åòíîé çàïèñè. Ýòî ïîçâîëèò áîëåå òî÷íî êîíòðîëèðîâàòü ðàáîòó è äîñòóï ê ðåñóðñàì îòäåëüíî âçÿòîãî àãåíòà, îäíàêî òðåáîâàíèÿ ê áåçîïàñíîñòè ïðè ýòîì ìîãóò âîçðàñòè íà ïîðÿäîê. Îñòàíîâèìñÿ áîëåå äåòàëüíî íà ðàññìîòðåíèè íîâûõ âîçìîæíîñòåé, êîòîðûå ïîÿâèëèñü â SQL Server 2005 â îòíîøåíèè ìîäåëè áåçîïàñíîñòè ïðè èñïîëüçîâàíèè ñõåìû ðåïëèêàöèè: · Ñöåíàðèè ðåïëèêàöèè, êîòîðûå ñîçäàâàëèñü ñ èñïîëüçîâàíèåì ñðåäñòâ SQL Server 7.0 è 2000, äîëæíû áûòü îáíîâëåíû äëÿ òîãî, ÷òîáû ìîæíî áûëî èõ èñïîëüçîâàòü äëÿ ðàáîòû SQL Server 2005. · Íà ñåðâåðàõ ðàñïðîñòðàíèòåëÿ è ïîäïèñ÷èêà äîëæíà áûòü óñòàíîâëåíà âåðñèÿ 2005 SQL Server.  ýòîì ñëó÷àå ìîæåò îêàçàòüñÿ òàê, ÷òî àãåíò ðåïëèêàöèè áóäåò ïðîäîëæàòü èñïîëüçîâàòü ó÷åòíóþ çàïèñü SQL Server Agent. Äàííàÿ ó÷åòíàÿ çàïèñü èìååò áîëüøå ïðèâèëåãèé, ÷åì òðåáóåòñÿ â íåêîòîðûõ ñëó÷àÿõ. Ïîýòîìó ïîñëå îáíîâëåíèÿ âåðñèè ïðîãðàììíîãî îáåñïå÷åíèÿ ðåêîìåíäóåòñÿ ñîçäàòü îòäåëüíóþ ó÷åòíóþ çàïèñü äëÿ àãåíòà ðåïëèêàöèè, êîòîðàÿ áóäåò èìåòü ìèíèìàëüíûå ïðèâèëåãèè. Äëÿ ñîçäàíèÿ îòäåëüíîé ó÷åòíîé çàïèñè âûïîëíèòå ñëåäóþùèå äåéñòâèÿ:
1) 2) 3) 4)
ðàçäåëèòå ñöåíàðèè ïóáëèêàöèè è ïîäïèñêè; âíåñèòå èçìåíåíèÿ â ñöåíàðèè ïóáëèêàöèè è ïîäïèñêè; óäàëèòå ïóáëèêàöèþ è ïîäïèñêó èç áàçû äàííûõ; ñîçäàéòå íîâóþ ïóáëèêàöèþ è ïîäïèñêó ñ èñïîëüçîâàíèåì íîâûõ ñöåíàðèåâ.
44
Ãëàâà 1 • Îáùèå ïîëîæåíèÿ, óñòàíîâêà è îáíîâëåíèå SQL Server 2005
Îáðàòèòå âíèìàíèå íà òî, ÷òî ëþáîé àãåíò ðåïëèêàöèè ìîæåò áûòü íàñòðîåí òàêèì îáðàçîì, ÷òî îí áóäåò èñïîëüçîâàòü àóòåíòèôèêàöèþ êàê SQL Server, òàê è Windows. Ïðè ýòîì ïåðâûé òèï àóòåíòèôèêàöèè èñïîëüçóåòñÿ îáû÷íî äëÿ ñîåäèíåíèÿ ñ ëîêàëüíîé áàçîé (ýêçåìïëÿð êîòîðîé ðàñïîëàãàåòñÿ íà îäíîì êîìïüþòåðå ñ àãåíòîì ðåïëèêàöèè). Àóòåíòèôèêàöèÿ Windows îáû÷íî èñïîëüçóåòñÿ äëÿ ïîäêëþ÷åíèÿ ê êîìïüþòåðó, êîòîðûé íàõîäèòñÿ âíóòðè ëîêàëüíîé ñåòè.  ïðîöåññå èñïîëüçîâàíèÿ ñèñòåìû áåçîïàñíîñòè äëÿ ñõåìû ðåïëèêàöèè ìîæåò ñëó÷èòüñÿ òàê, ÷òî â êîìïàíèè ïî êàêèì-òî ïðè÷èíàì áóäåò ïðèíÿòî ðåøåíèå îñòàâèòü ñèñòåìó áåçîïàñíîñòè àãåíòà ðåïëèêàöèè. Ýòî îçíà÷àåò, â ïåðâóþ î÷åðåäü, ÷òî äëÿ àãåíòà ðåïëèêàöèè íå áóäåò ñîçäàíà îòäåëüíàÿ ó÷åòíàÿ çàïèñü, îò èìåíè êîòîðîé îí áóäåò âûïîëíÿòü êàêèå-ëèáî äåéñòâèÿ â ñèñòåìå. Ýòî ìîæåò ñêàçàòüñÿ íà îáùåé áåçîïàñíîñòè ñèñòåìû. Âî âðåìÿ ïåðåõîäíîãî ïåðèîäà (äî îáíîâëåíèÿ ñåðâåðà SQL äî âåðñèè 2005) ñëåäóéòå ñëåäóþùèì ðåêîìåíäàöèÿì: · Ñåðâåð ïóáëèêàöèé ðàáîòàåò íà îñíîâå ñèñòåìû SQL Server 7.0 èëè 2000, ðàñïðîñòðàíèòåëü äëÿ ñâîåé ðàáîòû èñïîëüçóåò SQL Server 2005. Ïðè ýòîì íåëüçÿ èñïîëüçîâàòü íîâóþ ñèñòåìó áåçîïàñíîñòè àãåíòà ðåïëèêàöèè, ïîñêîëüêó àãåíò èñïîëüçóåòñÿ äëÿ îáåñïå÷åíèÿ ðàáîòû ñåðâåðà ïóáëèêàöèé. · Ïîäïèñ÷èê, èñïîëüçóþùèé pull-ïîäïèñêó, ðàáîòàåò íà îñíîâå SQL Server 7.0 èëè 2000 è íå ìîæåò èñïîëüçîâàòü â ñâîåé ðàáîòå íîâóþ ñèñòåìó áåçîïàñíîñòè, ïîñêîëüêó àãåíò ñîçäàåòñÿ íà ñòîðîíå ïîäïèñ÷èêà. · Ðàñïðîñòðàíèòåëü, èñïîëüçóþùèé pull-ïîäïèñêó è ðàáîòàþùèé íà îñíîâå SQL Server 2005, è ïîäïèñ÷èê, ðàáîòàþùèé íà îñíîâå SQL Server 7.0 èëè 2000, íå ñìîãóò èñïîëüçîâàòü íîâóþ ñèñòåìó áåçîïàñíîñòè, ïîñêîëüêó àãåíòû ñîçäàþòñÿ è èñïîëüçóþòñÿ íà ñòîðîíå ðàñïðîñòðàíèòåëÿ.
1.3.6. Îáíîâëåíèå êëàñòåðà äî âåðñèè SQL Server 2005 Âî âðåìÿ îáíîâëåíèÿ êëàñòåðà äî âåðñèè SQL Server 2005 ðàçðåøàåòñÿ èñïîëüçîâàíèå òîëüêî îäíîãî ýêçåìïëÿðà SQL Server. Ýòîò ýêçåìïëÿð äîëæåí âûñòóïàòü â êà÷åñòâå îòäåëüíîãî åêçåìïëÿðà, íà îñíîâå êîòîðîãî ñòðîèòñÿ ñõåìà êëàñòåðîâ, èëè â êà÷åñòâå ýêçåìïëÿðà MSDE èëè SQL Server Express, êîòîðûé çàïóùåí íà îäíîì èç óçëîâ ñõåìû êëàñòåðîâ. Äëÿ òîãî ÷òîáû âûïîëíèòü îáíîâëåíèå SQL Server, âõîäÿùåãî â ñîñòàâ ñõåìû êëàñòåðîâ, äî íîâîé âåðñèè ïðîãðàììíîãî ïðîäóêòà, âàì íåîáõîäèìî ñíà÷àëà âûâåñòè äàííûé ñåðâåð èç ñõåìû êëàñòåðîâ. Äëÿ ýòîãî ìîæíî âîñïîëüçîâàòüñÿ óòèëèòîé Cluster Wizard, êîòîðàÿ âõîäèò â ñîñòàâ SQL Server 7.0. Ïîñëå òîãî êàê âû çàêîí÷èòå îáíîâëåíèå îòäåëüíîãî ýêçåìïëÿðà SQL Server äî âåðñèè 2005, ìîæíî áóäåò ñíîâà âêëþ÷èòü ýòîò ñåðâåð ñ ïîìîùüþ óòèëèòû Cluster Wizard â ñîñòàâ ñõåìû êëàñòåðèçàöèè.  ïðåäûäóùèõ âåðñèÿõ SQL Server ïîìèìî ýêçåìïëÿðà, èñïîëüçóþùåãîñÿ äëÿ êëàñòåðèçàöèè, íà êîìïüþòåðå íå ìîãëî áûòü óñòàíîâëåíî äðóãèõ ýêçåìïëÿðîâ SQL Server. Íà ñåðâåðàõ ñ SQL Server 7.0 ìîæíî áûëî óñòàíàâëèâàòü äâà ýêçåìïëÿðà (îäèí äëÿ ñõåìû êëàñòåðîâ, äðóãîé — äëÿ ðåøåíèÿ äðóãèõ çàäà÷), îäíàêî ýòî ïðèâîäèëî ê êîíôëèêòàì âî âðåìÿ èñïîëüçîâàíèÿ êàê ñõåìû êëàñòåðèçàöèè, òàê è äðóãèõ ïðèëîæåíèé. Êîíôëèêòû ïðîèñõîäèëè èç-çà òîãî, ÷òî îáà ýêçåìïëÿðà äëÿ ñåðâåðà ÿâëÿëèñü ýêçåìïëÿðàìè, èñïîëüçóåìûìè ïî óìîë÷àíèþ.
Àäìèíèñòðèðîâàíèå SQL Server 2005
2
Äî ñèõ ïîð âñå ïîñëåäíèå âåðñèè ïðîäóêòà ëèíåéêè SQL Server áûëè ñîçäàíû íà îñíîâå ÿäðà SQL Server 7.0. Êîëè÷åñòâî çàäà÷, à òàêæå èõ ñëîæíîñòü ðîñëè íåèìîâåðíûìè òåìïàìè, è Microsoft íåîáõîäèìî áûëî âíåñòè ðåâîëþöèîííûå èçìåíåíèÿ â SQL Server ñ âûõîäîì íîâîé âåðñèè ýòîãî ïðîãðàììíîãî ïðîäóêòà. Óñëîæíÿåò ýòîò ïðîöåññ â ïåðâóþ î÷åðåäü óâåëè÷åíèå êðóãà çàäà÷, ðåøàåìûõ ñåðâåðàìè áàç äàííûõ. Òåïåðü íåäîñòàòî÷íî èìåòü ÿäðî, âûïîëíÿþùåå ôóíêöèè ñ äàííûìè. Íåîáõîäèìî îáåñïå÷èòü íàáîð ñåðâèñîâ, êîòîðûå ìîãóò îáðàáàòûâàòü çàïðîñû ïîëüçîâàòåëåé è ïðåäîñòàâëÿòü èì ñîîòâåòñòâóþùèå àãðåãàöèè äàííûõ. Ê ïîäîáíûì ñåðâèñàì ìîæíî îòíåñòè ñåðâèñû àíàëèòèêè, îò÷åòîâ, ïðåîáðàçîâàíèÿ äàííûõ è äð. Âñå îíè ñóùåñòâîâàëè â ïðåäûäóùåé âåðñèè Microsoft SQL Server, íî â äàííîé âåðñèè èõ ôóíêöèè çíà÷èòåëüíî äîïîëíåíû è ðàñøèðåíû. Ïîìèìî ýòîãî SQL Server 2005 âîáðàë â ñåáÿ âñå ïðåèìóùåñòâà, áàçèðóþùèåñÿ íà îñíîâå íîâîãî àïïàðàòíîãî îáåñïå÷åíèÿ, êîòîðîå ìîæåò óäîâëåòâîðèòü ëþáîãî êîðïîðàòèâíîãî ïîëüçîâàòåëÿ.  òî æå âðåìÿ ñïåöèàëèñòàìè Microsoft áûëè äîáàâëåíû íîâûå ôóíêöèè è ïåðåñìîòðåíû èìåþùèåñÿ, ÷òî, â êîíöå êîíöîâ, ïðèâåëî ê óïðîùåíèþ êîíôèãóðèðîâàíèÿ è àäìèíèñòðèðîâàíèÿ ñåðâåðà, à òàêæå ïîçâîëèëî äîáàâèòü íîâóþ ôóíêöèîíàëüíîñòü.  ýòîé ãëàâå ìû ïåðå÷èñëèì è äåòàëüíî ðàññìîòðèì íåêîòîðûå íîâîââåäåíèÿ, êîòîðûå ïîÿâèëèñü â ïîñëåäíåé âåðñèè Microsoft SQL Server 2005, à òàêæå ïîñòàðàåìñÿ êîðîòêî ðàçîáðàòüñÿ ñ âëèÿíèåì ýòèõ ïðåèìóùåñòâ íà îáùóþ ôóíêöèîíàëüíîñòü ïðîãðàììíîãî ïðîäóêòà è ðåøåíèé íà åãî îñíîâå. Áîëåå äåòàëüíî ìíîãèå èç ïðåèìóùåñòâ è íîâîââåäåíèé áóäóò íàìè ðàññìîòðåíû â ïîñëåäóþùèõ ãëàâàõ äàííîé êíèãè.  ðàçäåëå 2.1 «ßäðî SQL Server 2005» ìû îñòàíîâèìñÿ íà óëó÷øåíèÿõ, êîñíóâøèõñÿ îáùèõ ìåõàíèçìîâ, êîòîðûå ÿâëÿþòñÿ æèçíåííî âàæíûìè äëÿ ðàáîòû SQL Server 2005. Ðàçäåë 2.2 «SQL Server è íîâîå àïïàðàòíîå îáåñïå÷åíèå» áóäåò ïîñâÿùåí ïîääåðæêå íîâîãî àïïàðàòíîãî îáåñïå÷åíèÿ (òàêîãî, êàê ëîãè÷åñêèå ïðîöåññîðû, íîâàÿ àðõèòåêòóðà ïàìÿòè è 64-ðàçðÿäíûå ñèñòåìû). Çàêîí÷èì äàííûé
46
Ãëàâà 2 • Àäìèíèñòðèðîâàíèå SQL Server 2005
ðàçäåë ðàññìîòðåíèåì âîïðîñîâ áåçîïàñíîñòè SQL Server. Ýòîìó áóäåò ïîñâÿùåíà îòäåëüíàÿ ãëàâà êíèãè, îäíàêî îñíîâíûå óëó÷øåíèÿ áóäóò î÷åð÷åíû íàìè â ðàçäåëå 2.3 «Áåçîïàñíîñòü» äàííîé ãëàâû.
2.1. ßäðî SQL Server 2005  ñëåäóþùåì ðàçäåëå ìû ðàññìîòðèì àïïàðàòíóþ ñîñòàâëÿþùóþ ñèñòåì, íà êîòîðûõ áóäåò ðàáîòàòü SQL Server 2005.  äàííîì ðàçäåëå ìû ïîñòàðàåìñÿ áîëåå äåòàëüíî îñòàíîâèòüñÿ íà ðàññìîòðåíèè ïðîãðàììíîé ñîñòàâëÿþùåé: ïðèìåíåíèå íîâûõ òèïîâ äàííûõ, êîòîðûå áûëè ñîçäàíû è èñïîëüçîâàíû â íîâîé âåðñèè ýòîãî ïðîãðàììíîãî ïðîäóêòà; âîçìîæíîñòè òðèããåðîâ è ñîáûòèé; èñïîëüçîâàíèå ìåòîäîâ äåêîìïîçèöèè äàííûõ; èñïîëüçîâàíèå ñðåäû ðàçðàáîòêè .NET Framework, ñðåäñòâ ïîëíîòåêñòîâîãî ïîèñêà è èíäåêñèðîâàíèÿ. Âñå ýòè âîçìîæíîñòè è òåõíîëîãèè ïðèçâàíû óâåëè÷èòü ñêîðîñòü ðàáîòû ñèñòåì íà àïïàðàòíîì óðîâíå.  äàííîì ðàçäåëå ìû áîëåå äåòàëüíî îñòàíîâèìñÿ íà íîâûõ âîçìîæíîñòÿõ ÿäðà SQL Server, íå âäàâàÿñü äåòàëüíî â ðàññìîòðåíèå áîëåå ñëîæíûõ è êîìïëåêñíûõ âîïðîñîâ óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè SQL Server 2005.
2.1.1. Îãðàíè÷åíèå íà êîëè÷åñòâî ýêçåìïëÿðîâ SQL Server 2000 ïîçâîëÿë ïîääåðæèâàòü äî 16 ýêçåìïëÿðîâ, çàïóùåííûõ íà îäíîì îòäåëüíî âçÿòîì êîìïüþòåðå. Îáû÷íî ïîäîáíîå êîëè÷åñòâî ýêçåìïëÿðîâ ïîçâîëÿëî óäîâëåòâîðèòü áîëüøóþ ÷àñòü êîðïîðàòèâíûõ êëèåíòîâ, èñïîëüçóþùèõ â ñâîåé ðàáîòå îãðîìíîå ÷èñëî ýêçåìïëÿðîâ.  ïåðâóþ î÷åðåäü ýòî îòíîñèëîñü ê òåì ïðåäïðèÿòèÿì, êîòîðûå èìåëè äîñòàòî÷íî ìíîãî ðàçíîðîäíûõ ñèñòåì, ïîçâîëÿâøèõ àâòîìàòèçèðîâàòü ðàçëè÷íûå îáëàñòè ðàáîòû ïðåäïðèÿòèÿ. Îäíàêî íåêîòîðîå ÷èñëî íàèáîëåå êðóïíûõ êîðïîðàòèâíûõ êëèåíòîâ îñòàâàëèñü çà áîðòîì ïîäîáíîé àâòîìàòèçàöèè, ïîñêîëüêó SQL Server 2000 îãðàíè÷èâàë èõ â êîëè÷åñòâå äîñòóïíûõ ýêçåìïëÿðîâ íà îäíîì êîìïüþòåðå. Ñ âûõîäîì SQL Server 2005 êîëè÷åñòâî äîñòóïíûõ ýêçåìïëÿðîâ íà îòäåëüíîì êîìïüþòåðå óâåëè÷åíî äî 50. Ýòî ïîçâîëèò íå òîëüêî ðàçâîðà÷èâàòü áîëüøåå ÷èñëî ïðèëîæåíèé íà îòäåëüíî âçÿòîì ñåðâåðå, íî è ýêîíîìèòü íà êîëè÷åñòâå ëèöåíçèé (â ñëó÷àå ïðèîáðåòåíèÿ SQL Server 2005 â ðàñ÷åòå íà êîëè÷åñòâî ïðîöåññîðîâ ñåðâåðà).
2.1.2. Óëó÷øåíèÿ ìåõàíèçìà èíäåêñàöèè Äîñòàòî÷íî ìíîãî èçìåíåíèé ïðîèçîøëî ñ ìåõàíèçìîì èíäåêñàöèè â SQL Server 2005. Âî-ïåðâûõ, èçìåíåíèÿ êîñíóëèñü ìåòîäîâ ðàáîòû ñ èíäåêñàìè â ñëó÷àå èñïîëüçîâàíèÿ êëàñòåðíîé ñõåìû. Ïðè ýòîì íåò íåîáõîäèìîñòè ïåðåñòðàèâàòü èíäåêñû óçëîâ êëàñòåðà ïîñëå ïåðåñòðîéêè èíäåêñà êëàñòåðà.  SQL Server 2000 ïåðåñòðîéêà èíäåêñîâ óçëîâ, êîòîðûå çàâèñÿò îò êëàñòåðíîãî èíäåêñà, âûïîëíÿëàñü àâòîìàòè÷åñêè, è àäìèíèñòðàòîð íå ìîã ïîâëèÿòü íà ýòîò ïðîöåññ.  SQL Server 2005 àäìèíèñòðàòîð ìîæåò íàñòðîèòü ïåðåñòðîéêó èíäåêñîâ òàêèì îáðàçîì, ÷òî ïåðåñòðîéêà êëàñòåðíîãî èíäåêñà íèêàê íå áóäåò âëèÿòü íà èíäåêñû, çàâèñÿùèå îò íåãî.
2.1. ßäðî SQL Server 2005
47
Âòîðîå íîâøåñòâî, êîòîðîå ïîÿâèëîñü â ìåõàíèçìå èíäåêñàöèè SQL Server 2005, — ýòî âîçìîæíîñòü äîáàâëåíèÿ íåêëþ÷åâîé êîëîíêè â òàáëèöó èíäåêñà. Òàêèì îáðàçîì, ìîæíî íå òîëüêî âíîñèòü â èíäåêñ îïðåäåëåííûå äàííûå, íî è óïðîñòèòü çàïðîñû (ïîñêîëüêó äàííûå, ïîëó÷àåìûå â ðåçóëüòàòå ïîäçàïðîñîâ, ïðåäâàðèòåëüíî ìîãóò áûòü âíåñåíû â òàáëèöó èíäåêñà). Òàêæå ñòîèò çàìåòèòü, ÷òî çà ñ÷åò äîáàâëåíèÿ íåñêîëüêèõ êîëîíîê â òàáëèöó èíäåêñà çíà÷èòåëüíî ìîæåò áûòü óâåëè÷åíà ñêîðîñòü îáðàáîòêè äàííûõ è ñîñòàâëåíèå âûáîðîê. Äîáàâëåíèå îäíîé èëè íåñêîëüêèõ êîëîíîê â òàáëèöó èíäåêñà íå âëèÿåò íà ìàêñèìàëüíûé ðàçìåð èíäåêñà, êîòîðûé, êàê è ðàíåå, ñîñòàâëÿåò 900 áàéò. Èíòåðåñíûì íîâîââåäåíèåì â îòíîøåíèè èíäåêñîâ ÿâëÿåòñÿ òî, ÷òî â SQL Server 2005 ìîæíî îòêëþ÷àòü èíäåêñû. Îòêëþ÷åíèå èíäåêñîâ ïðèâîäèò ê òîìó, ÷òî ÿäðî SQL Server 2005 íå èñïîëüçóåò èõ, à îáðàùàåòñÿ íàïðÿìóþ ê ñîîòâåòñòâóþùèì òàáëèöàì. Îòêëþ÷åíèå èíäåêñà ìîæåò èñïîëüçîâàòüñÿ, â ïåðâóþ î÷åðåäü, äëÿ îñâîáîæäåíèÿ õðàíèëèùà ïîä ðåøåíèå äðóãèõ çàäà÷. Îäíàêî âî âðåìÿ îòêëþ÷åíèÿ èíäåêñà ìåòàäàííûå èíäåêñà îñòàþòñÿ äîñòóïíûìè äëÿ ïîëüçîâàòåëÿ èëè ñòîðîííåãî ïðèëîæåíèÿ. Ïîñêîëüêó îòêëþ÷åíèå èíäåêñà ïðèâîäèò ê åãî óäàëåíèþ èç õðàíèëèùà, òî ïåðåä òåì, êàê îí áóäåò âíîâü çàäåéñòâîâàí, íåîáõîäèìî åãî ïåðåñòðîèòü. Äëÿ ýòîãî èñïîëüçóåòñÿ êîìàíäà ALTER INDEX.  ïðåäûäóùåé âåðñèè SQL Server ïîëüçîâàòåëü íå ìîã ïîëó÷èòü äîñòóï ê èíäåêñó, êîòîðûé ïåðåñòðàèâàåòñÿ, äî òåõ ïîð, ïîêà ïåðåñòðîéêà èíäåêñà íå áóäåò çàêîí÷åíà.  íîâîé âåðñèè SQL Server ïîëüçîâàòåëü ìîæåò âûïîëíÿòü äîáàâëåíèå äàííûõ, èõ èçìåíåíèå è óäàëåíèå â òî âðåìÿ, ïîêà âûïîëíÿåòñÿ ïåðåñòðîéêà èíäåêñà. Áîëåå äåòàëüíî îá ýòîé ôóíêöèîíàëüíîñòè SQL Server ìû ïîãîâîðèì â ðàçäåëå 2.1.2 «Óëó÷øåíèÿ ìåõàíèçìà èíäåêñàöèè».
2.1.3. Íîâûå òèïû äàííûõ  SQL Server 2005 ïîÿâèëîñü íåñêîëüêî íîâûõ òèïîâ äàííûõ, êîòîðûå ðàñøèðÿþò ñóùåñòâóþùèé íàáîð è ïîçâîëÿþò ðàçðàáîò÷èêàì ñîçäàâàòü áîëåå ñëîæíûå ïðèëîæåíèÿ ïî îáðàáîòêå äàííûõ. Ïîìèìî èñïîëüçîâàíèÿ íîâûõ òèïîâ, ñóùåñòâóåò âîçìîæíîñòü ñîçäàâàòü ïîëüçîâàòåëüñêèå, ïðèìåíÿÿ ôóíêöèîíàëüíîñòü Microsoft .NET Framework íà ïðàêòèêå.  SQL Server 2005 ïî ñðàâíåíèþ ñ SQL Server 2000 ïîÿâèëîñü äâà íîâûõ òèïà äàííûõ: · Varbinary(max) — íîâûé ìåòîä èñïîëüçîâàíèÿ â SQL Server òåõíîëîãèè LOB. Ïðè ýòîì äàííûé òèï ìîæåò èñïîëüçîâàòüñÿ íå òîëüêî äëÿ õðàíåíèÿ òåêñòà è êàðòèíîê, íî è â êà÷åñòâå ïåðåìåííîé, êîòîðóþ ìîãóò âûçûâàòü ðàçðàáîò÷èêè èç ñâîèõ ïðèëîæåíèé; · XML — íîâûé òèï äàííûõ, êîòîðûé ÿâëÿåòñÿ ðåçóëüòàòîì íàñëåäîâàíèÿ òèïà Varbinary. Îí ïîçâîëÿåò õðàíèòü äàííûå â ôîðìàòå XML â áàçå äàííûõ. Îäíàêî â îòëè÷èå îò Varbinary òèï äàííûõ XML ïîçâîëÿåò âûïîëíÿòü íå òîëüêî õðàíåíèå XML-äîêóìåíòîâ, íî è âåðèôèêàöèþ ñõåìû äîêóìåíòà â ôîðìàòå XML. Áëàãîäàðÿ ýòîìó ìîæíî ïåðåëîæèòü íåêîòîðûå çàäà÷è ïî ïðîâåðêå öåëîñòíîñòè ïîäîáíûõ äîêóìåíòîâ íà ñèñòåìó è íå ñîçäàâàòü
48
Ãëàâà 2 • Àäìèíèñòðèðîâàíèå SQL Server 2005
ïðèëîæåíèÿ, îðèåíòèðîâàííûå íà ïðîâåðêó ïðàâèëüíîñòè ñîçäàíèÿ XML-äîêóìåíòîâ. Áîëåå äåòàëüíî âîïðîñû, ñâÿçàííûå ñ òèïîì äàííûõ XML, ìû ðàññìîòðèì â ðàçäåëå 11.1 «Òèï äàííûõ XML». Ïîìèìî äîáàâèâøèõñÿ òèïîâ äàííûõ, ðàçðàáîò÷èêè ìîãóò ñîçäàâàòü ñâîè ñîáñòâåííûå è èñïîëüçîâàòü èõ â ïðèëîæåíèÿõ. Òàêèå òèïû äàííûõ ìîãóò áûòü íàñëåäîâàíû îò ñóùåñòâóþùèõ òèïîâ äàííûõ.
2.1.4. Íîâûå êîìàíäû ïîëíîòåêñòîâîãî ïîèñêà Ïåðåðàáîòêå è óëó÷øåíèþ â Microsoft SQL Server 2005 òàêæå ïîäâåðãñÿ ìåõàíèçì ïîëíîòåêñòîâîãî ïîèñêà.  ïðåäûäóùèõ âåðñèÿõ SQL Server òðåáîâàëîñü èñïîëüçîâàòü ñïåöèàëüíûå õðàíèìûå ïðîöåäóðû, êîòîðûå ñîçäàâàëè è îáíîâëÿëè êàòàëîã ïîëíîòåêñòîâîãî ïîèñêà. Àíàëîãè÷íûì îáðàçîì ïîëíîòåêñòîâûé ïîèñê ðåàëèçîâàí è â íîâîé âåðñèè SQL Server, îäíàêî äîáàâëåíî íåñêîëüêî íîâûõ êîìàíä, êîòîðûå äîëæíû óïðîñòèòü ðàáîòó àäìèíèñòðàòîðîâ è ðàçðàáîò÷èêîâ. Ê ýòèì DDL-êîìàíäàì îòíîñÿòñÿ ñëåäóþùèå: · CREATE FULLTEXT CATALOG — ñîçäàíèå êàòàëîãà ïîëíîòåêñòîâîãî ïîèñêà; · CREATE FULLTEXT INDEX — ñîçäàíèå èíäåêñà ïîëíîòåêñòîâîãî ïîèñêà. Òåïåðü, èñïîëüçóÿ äàííûå êîìàíäû, ìîæíî ñîçäàâàòü íåîãðàíè÷åííîå ÷èñëî êàòàëîãîâ ïîëíîòåêñòîâîãî ïîèñêà è ïðè íåîáõîäèìîñòè èíäåêñèðîâàòü èõ äëÿ óâåëè÷åíèÿ ñêîðîñòè ðàáîòû. Òàêæå ñòîèò îòìåòèòü, ÷òî â íîâîé âåðñèè SQL Server ïîÿâèëàñü âîçìîæíîñòü íå òîëüêî ñîçäàâàòü, íî è âûïîëíÿòü ðåçåðâíîå êîïèðîâàíèå è âîññòàíîâëåíèå èç ðåçåðâíîé êîïèè êàòàëîãà ïîëíîòåêñòîâîãî ïîèñêà. Êàòàëîãè ïîëíîòåêñòîâîãî ïîèñêà ìîãóò áûòü ïðèêðåïëåíû ê ñîîòâåòñòâóþùåé áàçå. Ïðè íåîáõîäèìîñòè äàííûå êàòàëîãè ìîãóò áûòü îòêðåïëåíû îò áàçû äàííûõ ñ öåëüþ ïåðåíîñà íà äðóãóþ àíàëîãè÷íóþ (íàïðèìåð, ðåïëèöèðîâàííóþ èëè çåðêàëüíóþ) áàçó äàííûõ. Åùå îäíîé èíòåðåñíîé îñîáåííîñòüþ SQL Server 2005 ÿâëÿåòñÿ âîçìîæíîñòü èñïîëüçîâàòü òåçàóðóñ äëÿ ïîèñêà ñèíîíèìè÷åñêèõ ñëîâ è âûðàæåíèé. Ýòî óñêîðÿåò è çíà÷èòåëüíî ðàñøèðÿåò âîçìîæíîñòè ïîèñêà.
2.1.5. Ìîìåíòàëüíûé ñíèìîê áàçû äàííûõ è çåðêàëèðîâàíèå Êîìïàíèè, äëÿ êîòîðûõ äàííûå ÿâëÿþòñÿ äîñòàòî÷íî áîëüøîé öåííîñòüþ è èõ ïîòåðÿ ðàâíîöåííà ïîòåðå äåíåã, êëèåíòîâ èëè èõ ëîÿëüíîñòè, îáû÷íî ñòàðàþòñÿ îáåçîïàñèòü ñåáÿ îò ñëó÷àéíîé èëè ïðåäíàìåðåííîé ïîòåðè äàííûõ. Òàêàÿ ïîòåðÿ ìîæåò ïðîèçîéòè â ðåçóëüòàòå íåêîìïåòåíòíîñòè ñîòðóäíèêîâ, ñáîåâ â ðàáîòå ñèñòåìû èëè äåéñòâèé ñòîðîííèõ ëèö. Îäíèì èç ðàñïðîñòðàíåííûõ ñïîñîáîâ èçáåæàòü ïîòåðè äàííûõ ÿâëÿåòñÿ èñïîëüçîâàíèå ìåõàíèçìà çåðêàëèðîâàíèÿ áàç äàííûõ. Çåðêàëèðîâàíèå — ýòî ìåõàíèçì äóáëèðîâàíèÿ äàííûõ íà íåñêîëüêèõ ðàáîòàþùèõ íåçàâèñèìî äðóã îò äðóãà ñåðâåðàõ. Âî âðåìÿ èñïîëüçîâàíèÿ äàííîé òåõíîëîãèè äîñòèãàåòñÿ èçáûòî÷íîñòü õðàíåíèÿ äàííûõ è çà ñ÷åò ýòîãî óâåëè÷èâàåòñÿ íàäåæíîñòü. Çåðêàëèðîâàíèå ïðåêðàñíî çàðåêîìåíäîâàëî ñåáÿ íå òîëüêî â êà÷åñòâå òåõíîëîãèè äëÿ áåñïðåðûâíîé ðàáîòû. Ýòî òàêæå òåõíîëîãèÿ äëÿ óñêîðåíèÿ äîñòóïà ê äàííûì, ïîñêîëüêó ëîãè÷åñêîå ðàññòîÿíèå ìåæäó ñåðâåðàìè
2.1. ßäðî SQL Server 2005
49
çåðêàëèðóåìûõ áàç äàííûõ ìîæåò áûòü äîñòàòî÷íî áîëüøèì, à ñêîðîñòü ïåðåäà÷è äàííûõ äîñòàòî÷íî ìàëîé. Ïðè ýòîì äîñòóï óäàëåííîãî ïîëüçîâàòåëÿ ìîæíî âûïîëíèòü íà îäíó èç áëèæàéøèõ áàç äàííûõ (äëÿ äîñòóïà ê êîòîðîé òðåáóåòñÿ ìåíüøåå êîëè÷åñòâî òðàíçèòíûõ óçëîâ), õðàíÿùèõ èäåíòè÷íóþ êîïèþ îñíîâíîé áàçû äàííûõ. Çåðêàëèðîâàíèå äàííûõ ðàáîòàåò çà ñ÷åò ïåðåñûëêè log-ôàéëîâ òðàíçàêöèé ìåæäó îñíîâíûì ñåðâåðîì áàç äàííûõ è âòîðè÷íûì (íà êîòîðûé âûïîëíÿåòñÿ çåðêàëüíàÿ êîïèÿ). Ýòî ïîçâîëÿåò îáîèì ñåðâåðàì âûïîëíèòü ñèíõðîíèçàöèþ ñîäåðæèìîãî. Çåðêàëèðîâàíèå ìîæåò áûòü íàñòðîåíî êàê â îòíîøåíèè îäíîé áàçû, òàê è â îòíîøåíèè íåñêîëüêèõ.  ïåðâîì ñëó÷àå êîïèðîâàíèå äàííûõ áóäåò âûïîëíÿòüñÿ ñ îñíîâíîãî ñåðâåðà íà çåðêàëüíûé. Ïðè ýòîì ïåðâûé áóäåò âûñòóïàòü â êà÷åñòâå ãëàâíîãî, à âòîðîé — â êà÷åñòâå âåäîìîãî. Âî âòîðîì ñëó÷àå âûïîëíÿåòñÿ çåðêàëüíîå êîïèðîâàíèå äàííûõ ìåæäó ðàçëè÷íûìè ñåðâåðàìè áàç äàííûõ.  êà÷åñòâå äðóãîãî ìåõàíèçìà äëÿ âîññòàíîâëåíèÿ ïðåäûäóùåãî ñîñòîÿíèÿ äàííûõ (àíàëîãè÷íî âîññòàíîâëåíèþ èç ðåçåðâíîé êîïèè) èñïîëüçóåòñÿ ìîìåíòàëüíûé ñíèìîê áàç äàííûõ. Ìîìåíòàëüíûé ñíèìîê — ýòî ñòàòèñòè÷åñêèé ñíèìîê áàçû äàííûõ (âêëþ÷àÿ òàáëèöû, òðèããåðû, õðàíèìûå ïðîöåäóðû è äð.) â îïðåäåëåííûé ìîìåíò âðåìåíè. Îí ïðåêðàñíî ïîäõîäèò äëÿ ôèêñàöèè ñîñòîÿíèÿ áàçû äàííûõ íà îïðåäåëåííûé ìîìåíò âðåìåíè ñ öåëüþ ïîñëåäóþùåãî ñðàâíåíèÿ ñ òåêóùèì èëè îòêàòà äî ïðåäûäóùåãî ñîñòîÿíèÿ. Ìîìåíòàëüíûé ñíèìîê áàç äàííûõ ÷àñòî èñïîëüçóåòñÿ íà îïåðàòèâíûõ ñèñòåìàõ, ãäå äèíàìèêà èçìåíåíèÿ äàííûõ äîñòàòî÷íî âåëèêà. Èñïîëüçîâàíèå ìåõàíèçìà ìîìåíòàëüíîãî ñíèìêà ìîæåò ñî÷åòàòüñÿ ñ èñïîëüçîâàíèåì òåõíîëîãèè çåðêàëèðîâàíèÿ ñ öåëüþ ñîçäàíèÿ ñåðâåðà îò÷åòîâ, êîòîðûé ñìîæåò ñðàâíèâàòü ìîìåíòàëüíûé ñíèìîê ãëàâíîé áàçû äàííûõ è òåêóùåå ñîñòîÿíèå çåðêàëèðîâàííîé. Ïðè ýòîì íåîáõîäèìî ïîìíèòü, ÷òî äàííûå íà çåðêàëå ìîãóò áûòü íåäîñòóïíû, ïîñêîëüêó äàííûé ñåðâåð âñåãäà íàõîäèòñÿ â ñîñòîÿíèè îæèäàíèÿ.  òîì ñëó÷àå, åñëè ñ îñíîâíûì ñåðâåðîì ÷òî-òî ïðîèçîéäåò, äàííûé ñåðâåð âñòóïèò â äåéñòâèå. Îäíàêî ïðè æåëàíèè äëÿ ïîäîáíûõ ñåðâåðîâ íàñòðàèâàåòñÿ ðåïëèêàöèÿ äàííûõ.  ýòîì ñëó÷àå äàííûå íà îáîèõ ñåðâåðàõ áóäóò äîñòóïíû. Áîëåå äåòàëüíî î òåõíîëîãèÿõ çåðêàëèðîâàíèÿ è ðåïëèêàöèè äàííûõ ìû ïîãîâîðèì â ðàçäåëå 9.1 «Ñïîñîáû ñîõðàíåíèÿ äàííûõ».
2.1.6. XML-ôàéë è çàãðóçêà äàííûõ  SQL Server 2005 çíà÷èòåëüíî ïåðåñìîòðåíà ôóíêöèîíàëüíîñòü ïîëíîé çàãðóçêè äàííûõ. Ýòî ïîçâîëèëî óâåëè÷èòü ñêîðîñòü ïîëíîé çàãðóçêè äàííûõ. Òåïåðü â ïðîöåññå çàãðóçêè äàííûõ èñïîëüçóåòñÿ XML-ôàéë, êîòîðûé áåðåò íà ñåáÿ âñþ ôóíêöèîíàëüíîñòü, ðàíåå äîñòóïíóþ ïðè ðàáîòå ñ BCP-ôàéëîì (Bulk Copy Program), îäíàêî îí äîáàâëÿåò è ñîáñòâåííóþ. Ïðè ýòîì â ñèñòåìå íà îñíîâå SQL Server 2005 ìîæåò èñïîëüçîâàòüñÿ êàê XML-ôàéë â îòäåëüíîñòè, òàê è âìåñòå ñ BCP-ôàéëîì (èñïîëüçóåòñÿ äëÿ îáðàòíîé ñîâìåñòèìîñòè áàç äàííûõ). Òåïåðü ñ ïîìîùüþ XML-ôàéëà áûñòðåå âûïîëíÿåòñÿ ÷òåíèå è ðàçáîðêà BCP-ôàéëà, ÷òî ïîëîæèòåëüíî ñêàçûâàåòñÿ íà îáùåé ïðîèçâîäèòåëüíîñòè ñåðâåðà. Èñïîëüçîâàíèå XML-ôàéëà ïîçâîëèëî ðåàëèçîâàòü î÷åíü âàæíóþ ôóíêöèîíàëüíóþ îñîáåííîñòü ïîëíîé çàãðóçêè äàííûõ. Òåïåðü çàãðóçêà äàííûõ ïîääåðæèâàåò çàïèñü log-ôàéëà ïðè ïîÿâëåíèè ïîâðåæäåííûõ ñòðîê òàáëèö. Ýòî ïîçâîëÿåò
50
Ãëàâà 2 • Àäìèíèñòðèðîâàíèå SQL Server 2005
áûñòðåå âûÿâèòü âîçíèêøèå îøèáêè è ìîìåíòàëüíî óñòðàíèòü èõ. Òàêæå áëàãîäàðÿ ýòîé ôóíêöèîíàëüíîñòè ïîëíàÿ çàãðóçêà äàííûõ ìîæåò áûòü çàâåðøåíà äàæå â ñëó÷àå âîçíèêíîâåíèÿ îøèáîê (÷òî ÷àñòî ñëó÷àåòñÿ ïðè ðàáîòå ñ «ñûðûìè» òàáëèöàìè äàííûõ). Äàííûå, ñîäåðæàùèå îøèáêè, à òàêæå ñîîáùåíèÿ îá îøèáêàõ çàïèñûâàþòñÿ â log-ôàéë. Ïîñëå òîãî êàê îøèáêè áóäóò óñòðàíåíû, àäìèíèñòðàòîð ìîæåò âûïîëíèòü â ðó÷íîì ðåæèìå çàãðóçêó íåäîñòàþùèõ äàííûõ.
2.1.7. Îáðàáîòêà HTTP-çàïðîñîâ  íîâîé âåðñèè SQL Server âñòðîåíà ïîääåðæêà HTTP (Hyper Text Transfer Protocol), ÷òî ïîçâîëÿåò ñåðâåðó îáðàáàòûâàòü HTTP-çàïðîñû, ïîñòóïàþùèå îò ñòîðîííèõ ïðèëîæåíèé. Ïðè ýòîì òàêæå ñòàíîâèòñÿ äîñòóïíûì èñïîëüçîâàíèå SOAP äëÿ óäàëåííîãî âûçîâà õðàíèìûõ ïðîöåäóð è âûïîëíåíèÿ SQL-çàïðîñîâ. Ýòî îçíà÷àåò, ÷òî SQL Server 2005 ìîæåò âûïîëíÿòü çàïðîñû îò ñòîðîííèõ âåá-ñåðâèñîâ áåç èñïîëüçîâàíèÿ êàêîãî-ëèáî âåá-ñåðâåðà. Ýòî ýêîíîìèò íå òîëüêî ðåñóðñû äëÿ óñòàíîâêè è íàñòðîéêè âåá-ñåðâåðà, íî è äåíüãè, ïîñêîëüêó íå òðåáóåòñÿ ïðèîáðåòàòü äîïîëíèòåëüíûå ëèöåíçèè. Ïîääåðæêà HTTP â SQL Server 2005 òàêæå ïîäðàçóìåâàåò íàñòðîéêó òàêèõ ïàðàìåòðîâ, êàê URL, ïîðò è çàïðîñ, êîòîðûé äîëæåí ïîääåðæèâàòüñÿ ñåðâåðîì. Ïðè ýòîì SQL Server 2005 ïîñòîÿííî îïðàøèâàåò âûáðàííûé ïîðò íà ïðåäìåò ïîëó÷åíèÿ êàêèõ-ëèáî çàïðîñîâ è ïðè ïîëó÷åíèè èõ âûïîëíÿåò. Ïîääåðæêà HTTP â SQL Server 2005 ïîäðàçóìåâàåò èñïîëüçîâàíèå ìåõàíèçìîâ àóòåíòèôèêàöèè Windows èëè SQL Server, à òàêæå èñïîëüçîâàíèå SSL äëÿ îáåñïå÷åíèÿ áåçîïàñíîñòè ïåðåäà÷è äàííûõ. Òàêæå ñðåäè ïðåèìóùåñòâ SQL Server ñòîèò âûäåëèòü âîçìîæíîñòü ïóáëèêàöèè âåá-ñåðâèñîâ ñ èñïîëüçîâàíèåì WSDL (Web Services Description Language). Ïðè ýòîì ïîääåðæèâàþòñÿ ñëåäóþùèå ñòàíäàðòû: WSDL 1.1, SOAP 1.0 è SOAP 1.2.
2.1.8. Ñîáûòèÿ ñåðâåðà è òðèããåðû DDL  ïðèëîæåíèÿõ, êîòîðûå ñîçäàþòñÿ ðàçðàáîò÷èêàìè äëÿ ðåøåíèÿ òåõ èëè èíûõ çàäà÷ â SQL Server, ÷àñòî ñóùåñòâóåò íåîáõîäèìîñòü îáðàáàòûâàòü êàêèå-ëèáî ñèñòåìíûå èëè ïîëüçîâàòåëüñêèå ñîáûòèÿ. Äëÿ ðåøåíèÿ ïîäîáíûõ çàäà÷ èñïîëüçóþòñÿ òðèããåðû DDL, à òàêæå îáðàáîò÷èêè ñîáûòèé ñåðâåðà. Íåñìîòðÿ íà òî ÷òî äàííûå ìåõàíèçìû âûïîëíÿþò ïðàêòè÷åñêè èäåíòè÷íûå ðîëè, èõ ðåàëèçàöèÿ çíà÷èòåëüíî îòëè÷àåòñÿ äðóã îò äðóãà. Òàê æå êàê è DML-òðèããåðû, DDLòðèããåðû ÿâëÿþòñÿ ñèíõðîííûìè ñîáûòèÿìè, êîòîðûå èñïîëüçóþòñÿ äëÿ çàïóñêà õðàíèìûõ ïðîöåäóð. Áîëåå äåòàëüíî âîïðîñû, êàñàþùèåñÿ DML- è DDL-òðèããåðîâ, ìû ðàññìîòðèì â ðàçäåëàõ 10.2.4 «Òðèããåðû DDL» è 10.2.5 «Ïåðåíàïðàâëåíèå âûâîäà».  îòëè÷èå îò DML- è DDL-òðèããåðîâ, ñîáûòèÿ ñåðâåðà ÿâëÿþòñÿ àñèíõðîííûìè ñîáûòèÿìè.  ñëó÷àå ñ àñèíõðîííûìè ñîáûòèÿìè SQL Server ïóáëèêóåò ñîáûòèå â î÷åðåäü äëÿ îáðàáîòêè áðîêåðîì ñåðâèñîâ SQL Server 2005. Ïîñëå ýòîãî êëèåíòñêîå ïðèëîæåíèå ìîæåò íåçàâèñèìî îò ðàáîòû ñèñòåìû ïîëó÷èòü è îáðàáîòàòü èíôîðìàöèþ î äàííîì ñîáûòèè. Ïðè ýòîì çàïèñü ñîáûòèé âûïîëíÿåòñÿ
2.1. ßäðî SQL Server 2005
51
â ôîðìàòå XML, ÷òî ïîçâîëÿåò âûïîëíèòü áûñòðóþ îáðàáîòêó äàííûõ. Íåâîçìîæíî âûïîëíèòü îòêàò äî ïðåäûäóùåãî ñîñòîÿíèÿ àñèíõðîííîãî ñîáûòèÿ, ïîñêîëüêó äàííûå ïîìåùàþòñÿ â î÷åðåäü, à íå ñ÷èòûâàþòñÿ èç òàáëèöû âûáðàííîãî îáúåêòà (êàê ýòî ïðîèñõîäèò â ñëó÷àå ñ òðèããåðîì). Áîëåå äåòàëüíóþ èíôîðìàöèþ î òîì, êàê ðàáîòàåò áðîêåð ñåðâèñîâ SQL Server 2005, âû íàéäåòå â ãëàâå 4 «Áðîêåð çàïðîñîâ SQL Server».
2.1.9. Âðåìåííàÿ áàçà äàííûõ  SQL Server 2005 ïîääåðæèâàåòñÿ âîçìîæíîñòü èçìåíèòü äèðåêòîðèþ, â êîòîðîé õðàíÿòñÿ äàííûå. Äëÿ ýòîãî ìîæåò áûòü èñïîëüçîâàíà êîìàíäà ALTER DATABASE. Ïðè ýòîì íåîáõîäèìî îãîâîðèòüñÿ, ÷òî ðàíåå âåðñèÿ SQL Server 2000 ïîçâîëÿëà ïåðåìåùàòü äàííûå â ñëóæåáíóþ áàçó äàííûõ ñ öåëüþ ðåçåðâíîãî êîïèðîâàíèÿ, ïåðåíîñà äàííûõ èëè öåëîé áàçû íà íîâûé ñåðâåð. Ïîäîáíàÿ áàçà îáû÷íî íîñèëà íàçâàíèå tempdb è èñïîëüçîâàëàñü èñêëþ÷èòåëüíî â ñëóæåáíûõ öåëÿõ.  SQL Server 2005 ðàçðàáîò÷èêè ïîøëè äàëüøå â ðàçâèòèè äàííîé êîíöåïöèè. Òåïåðü äàííûå ìîæíî ïåðåíåñòè â äðóãóþ ïàïêó. Îäíàêî ïåðåä òåì êàê âûïîëíèòü äàííóþ îïåðàöèþ, íåîáõîäèìî îñòàíîâèòü ñåðâåð, âûïîëíèòü ïåðåíîñ äàííûõ, à çàòåì çàïóñòèòü åãî çàíîâî. Äëÿ ïåðåíîñà äàííûõ ìîæíî âîñïîëüçîâàòüñÿ ñëåäóþùèì ñèíòàêñèñîì: ALTER DATABASE MODIFY FILE (name = , filename = )
2.1.10. Äåêîìïîçèöèÿ äàííûõ  SQL Server 2000 íå áûëî âîçìîæíîñòè âûïîëíÿòü äåêîìïîçèöèþ äàííûõ. Ýòî íåñêîëüêî îãðàíè÷èâàëî âîçìîæíîñòè àäìèíèñòðàòîðîâ âî âðåìÿ ïåðåíîñà äàííûõ â íîâóþ äèðåêòîðèþ èëè ïðè ðàáîòå ñ áîëüøèìè ìàññèâàìè äàííûõ è òðåáîâàëî âûïîëíåíèÿ ïðîñòåéøèõ äîðàáîòîê (íàïèñàíèå ïðîöåäóð, ñîçäàíèå íîâûõ òèïîâ è äð.) äëÿ äåêîìïîçèöèè äàííûõ.  íîâîé âåðñèè SQL Server äàííàÿ ôóíêöèîíàëüíîñòü áûëà ïåðåíåñåíà íà ñåðâåð è òåïåðü íå òðåáóåò ïðèâëå÷åíèÿ ðàçðàáîò÷èêîâ. ×òî ïîäðàçóìåâàåò ïîä ñîáîé äåêîìïîçèöèÿ äàííûõ? Ýòî ðàçáèåíèå áîëüøèõ ìàññèâîâ äàííûõ íà áîëåå ìåëêèå êóñêè, ñ êîòîðûìè ïðîùå ðàáîòàòü. Òàêæå ñòîèò îòìåòèòü, ÷òî ðàáîòà ñ ìåíüøèìè îáúåìàìè äàííûõ ïðåäúÿâëÿåò áîëåå íèçêèå òðåáîâàíèÿ â îòíîøåíèè àïïàðàòíîãî îáåñïå÷åíèÿ, ÷òî òàêæå íåìàëîâàæíî äëÿ ìíîãèõ ïðåäïðèÿòèé. Èñïîëüçóÿ äåêîìïîçèöèþ äàííûõ, ìîæíî ðàçáèâàòü íå òîëüêî áîëüøèå òàáëèöû íà áîëåå ìåëêèå, íî è âûïîëíèòü äåêîìïîçèöèþ èíäåêñîâ è ïðåäñòàâëåíèé. Ïîëó÷åííûå â ðåçóëüòàòå äåêîìïîçèöèè äàííûå äëÿ ïðèëîæåíèé ñòîðîííèõ ïðîèçâîäèòåëåé áóäóò ïðåäñòàâëåíû â âèäå åäèíîé òàáëèöû, òî åñòü äåêîìïîçèöèÿ ñêðûòà îò ïðèëîæåíèé è ÿâëÿåòñÿ âñòðîåííîé ôóíêöèîíàëüíîñòüþ SQL Server 2005. ×àñòè äàííûõ, ïîäâåðãøèõñÿ äåêîìïîçèöèè, íîñÿò íàçâàíèå ðàçäåëû (àíàëîãè÷íî íàçâàíèþ ëîãè÷åñêèõ ðàçäåëîâ ôèçè÷åñêîãî äèñêà êîìïüþòåðà). Ïðè ýòîì ñîçäàíèå îòäåëüíûõ ðàçäåëîâ èëè èõ óíè÷òîæåíèå àáñîëþòíî íå âëèÿåò íà ðàáîòîñïîñîáíîñòü áàçû äàííûõ. Ïðîñòåéøåå ïðåäñòàâëåíèå äåêîìïîçèöèè äàííûõ ïðèâåäåíî íà ðèñ. 2.1.
52
Ãëàâà 2 • Àäìèíèñòðèðîâàíèå SQL Server 2005
Ðèñ. 2.1. Äåêîìïîçèöèÿ äàííûõ
Ïðîñòåéøèì ïðåäñòàâèòåëåì ðàçäåëà ìîæåò âûñòóïàòü îäíà ñòðîêà òàáëèöû. Ïðè ýòîì ñîçäàíèå ðàçäåëîâ ìîæåò ïðîèñõîäèòü êàê ïî ïðèíöèïó ðàâíîìåðíîãî ðàçäåëåíèÿ ó÷àñòêîâ òàáëèöû íà îòäåëüíûå ðàçäåëû (íàïðèìåð, ïî 1000 ñòðîê â êàæäîì ðàçäåëå), òàê è ïî ïðèíöèïó ëîãè÷åñêîãî ðàçáèåíèÿ íà ó÷àñòêè (íàïðèìåð, íà îñíîâå çíà÷åíèé îïðåäåëåííîé ñòðîêè èëè ÿ÷åéêè). Òàêæå äîñòóïíî ñîçäàíèå îòäåëüíûõ ðàçäåëîâ íà îñíîâå ñèñòåìíîé èíôîðìàöèè, êîòîðàÿ äîñòóïíà ïðè ñ÷èòûâàíèè ïàðàìåòðîâ SQL Server èëè îïåðàöèîííîé ñèñòåìû, óñòàíîâëåííîé íà êîìïüþòåðå. Òàê, íàïðèìåð, ìîæíî íàñòðîèòü SQL Server òàêèì îáðàçîì, ÷òî ìîæíî áóäåò ñîçäàâàòü îòäåëüíûé ðàçäåë äëÿ âûáðàííîé òàáëèöû êàæäûé ãîä. Òàêîé ïîäõîä â îòíîøåíèè ðàçäåëîâ äàííûõ ìîæåò áûòü î÷åíü èíòåðåñåí äëÿ ìíîãèõ ðàçðàáîò÷èêîâ, ïîñêîëüêó äàííûå òàáëèöû íåò íåîáõîäèìîñòè ôèëüòðîâàòü è èçáèðàòåëüíî àðõèâèðîâàòü (íàïðèìåð, ïåðåíîñèòü íà áîëåå ìåäëåííûå íîñèòåëè) èëè óäàëÿòü. Ðàçðàáîò÷èê ìîæåò áûñòðî îïðåäåëèòü, êàêîé èìåííî ðàçäåë áûë ñîçäàí â òîì èëè èíîì ãîäó, è âûïîëíèòü ñ íèì íåîáõîäèìûå äåéñòâèÿ (àðõèâèðîâàíèå èëè óäàëåíèå). Çà ñ÷åò ýòîãî óïðîùàåòñÿ ðàáîòà àäìèíèñòðàòîðîâ è ðàçðàáîò÷èêîâ, à ôóíêöèè ýëåìåíòàðíîé ôèëüòðàöèè äàííûõ áåðåò íà ñåáÿ ÿäðî SQL Server. Îñíîâíûå ïðåèìóùåñòâà èñïîëüçîâàíèÿ äåêîìïîçèöèè äàííûõ äîñòèãàþòñÿ ïðè ðàáîòå ñ áîëüøèìè áàçàìè äàííûõ (VLDB — Very Large DataBases). Ìîæíî àðõèâèðîâàòü îòäåëüíûå ðàçäåëû òàêèõ áàç äàííûõ, âûïîëíèòü èõ ðåçåðâíîå êîïèðîâàíèå è äðóãèå äåéñòâèÿ. Òàêæå ñòîèò îòìåòèòü, ÷òî èñïîëüçîâàíèå äåêîìïîçèöèè äàííûõ íà ìíîãîïðîöåññîðíûõ ñèñòåìàõ ïîçâîëÿò çíà÷èòåëüíî óñêîðèòü îáðàáîòêó äàííûõ. Ýòî äîñòèãàåòñÿ çà ñ÷åò òîãî, ÷òî îòäåëüíûé ïðîöåññîð ïîçâîëÿåò âûïîëíÿòü êàæäîìó èç íèõ ðàáîòó ñ îòäåëüíûì ðàçäåëîì äàííûõ, à ýòî ìíîãîêðàòíî óâåëè÷èâàåò ñêîðîñòü îáðàáîòêè äàííûõ (îñîáåííî âî âðåìÿ ïîèñêà, èíäåêñèðîâàíèÿ èëè ñîñòàâëåíèÿ âûáîðêè). Ðåàëèçîâàòü äåêîìïîçèöèþ äàííûõ ìîæíî, èñïîëüçóÿ ñëåäóþùèå øàãè: 1. Îïðåäåëèòü, êàêèì îáðàçîì áóäåò âûïîëíÿòüñÿ äåêîìïîçèöèÿ äàííûõ è íà êàêîé îñíîâå; êàêèå óñëîâèÿ ïðè ýòîì äîëæíû âûïîëíÿòüñÿ äëÿ âíåñåíèÿ äàííûõ â îòäåëüíûå ðàçäåëû. 2. Âûïîëíèòü ñâÿçûâàíèå êàæäîãî ðàçäåëà ñ âûáðàííîé äèðåêòîðèåé íà äèñêå êîìïüþòåðà. Ïðè ýòîì íåîáõîäèìî ó÷èòûâàòü, ÷òî ðàçäåëû ìîãóò ðàñïîëàãàòüñÿ êàê â îäíîé äèðåêòîðèè, òàê è â îòäåëüíûõ.
2.1. ßäðî SQL Server 2005
53
3. Ñîçäàòü ôóíêöèþ, èñïîëüçóÿ ñëåäóþùèé øàáëîí: CREATE PARTITION FUNCTION PartFunc (int) AS RANGE LEFT FOR VALUES (0, 50) GO CREATE PARTITION SCHEME PartScheme AS PARTITION PartFunc TO (FileGrp) GO CREATE TABLE Tbl (clmn1 int, clmn2 varchar(100), clmn3 varchar(50)) ON PartScheme (clmn1) GO
Ðàññìîòðèì ïðèâåäåííûé ïðèìåð èñïîëüçîâàíèÿ ðàçäåëîâ áîëåå äåòàëüíî.  ïåðâîé ñòðîêå ìû ñîçäàåì ôóíêöèþ PartFunc, êîòîðàÿ áóäåò âûïîëíÿòü ðàçáèåíèå íà ðàçäåëû.  êà÷åñòâå ïàðàìåòðà äëÿ äàííîé ôóíêöèè èñïîëüçóåòñÿ öåëîå çíà÷åíèå äëÿ ïåðåäà÷è ÷èñëà êîëîíîê, íàä êîòîðûìè áóäåò âûïîëíÿòüñÿ ðàçáèåíèå íà ðàçäåëû. Ïðè ýòîì êîìàíäà RANGE èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ äèàïàçîíà äàííîãî ðàçäåëà. Ñ ïîìîùüþ êîìàíäû LEFT ìû îïðåäåëèëè, ÷òî òîëüêî òå êîëîíêè, êîòîðûå èìåþò çíà÷åíèÿ, óäîâëåòâîðÿþùèå óñëîâèþ, áóäóò ïîìåùåíû â ðàçäåë. Ïðè ýòîì ïîìåùåíèå íîâîé êîëîíêè áóäåò âûïîëíÿòüñÿ â ëåâóþ ÷àñòü òàáëèöû äàííîãî ðàçäåëà. Êîìàíäà VALUES èñïîëüçîâàëàñü íàìè äëÿ îïðåäåëåíèÿ äèàïàçîíà çíà÷åíèé, ïðîâåðêà êîòîðûõ áóäåò âûïîëíÿòüñÿ äëÿ ïîìåùåíèÿ çàïèñåé â òàáëèöó. Äèàïàçîí (0, 50) îçíà÷àåò, ÷òî áóäåò ñîçäàíî òðè ðàçäåëà.  ïåðâûé áóäóò ïîìåùåíû îòðèöàòåëüíûå çíà÷åíèÿ, âî âòîðîé — çíà÷åíèÿ â äèàïàçîíå îò 0 äî 50, à â òðåòèé — ïîëîæèòåëüíûå çíà÷åíèÿ áîëüøå 50. Âî âòîðîé ñòðîêå ìû ñîçäàåì ñõåìó PartScheme. Äëÿ ñõåìû îïðåäåëÿåòñÿ ôóíêöèÿ, êîòîðàÿ áóäåò èñïîëüçîâàòüñÿ äàííîé ñõåìîé. Êîìàíäà AS PARTITION îïðåäåëÿåò, ÷òî â êà÷åñòâå ïîäîáíîé ôóíêöèè áóäåò èñïîëüçîâàòüñÿ ðàíåå ñîçäàííàÿ íàìè ôóíêöèÿ PartFunc. Ñ ïîìîùüþ êîìàíäû TO ìû îïðåäåëèëè ãðóïïó ôàéëîâ FileGrp, êîòîðàÿ áóäåò èñïîëüçîâàòüñÿ äëÿ õðàíåíèÿ äàííûõ ñîçäàâàåìîãî ðàçäåëà. Äàëåå, â ñåäüìîé ñòðîêå ìû ñîçäàåì òàáëèöó, äëÿ êîòîðîé áóäåò âûïîëíÿòüñÿ ðàçáèåíèå íà ðàçäåëû. Äëÿ ýòîãî èñïîëüçóåòñÿ êîìàíäà CREATE TABLE. Ñ åå ïîìîùüþ ìû ñîçäàåì òàáëèöó Tbl, êîòîðàÿ ñîäåðæèò òðè êîëîíêè ñ íàçâàíèÿìè clmn1, clmn2, clmn3. Êîìàíäà ON èñïîëüçóåòñÿ äëÿ òîãî, ÷òîáû îïðåäåëèòü ñõåìó, êîòîðàÿ áóäåò èñïîëüçîâàòüñÿ äëÿ äàííîé òàáëèöû.  äàííîì ñëó÷àå ìû èñïîëüçóåì ðàíåå ñîçäàííóþ ñõåìó PartScheme.  êà÷åñòâå ïàðàìåòðîâ ïåðåäàåì åé çíà÷åíèÿ ïåðâîé êîëîíêè òàáëèöû, â ñîîòâåòñòâèè ñ êîòîðîé áóäåò âûïîëíÿòüñÿ ðàçáèåíèå íà ðàçäåëû. Òåïåðü ïîãîâîðèì îá îãðàíè÷åíèÿõ, êîòîðûå íàêëàäûâàåò SQL Server íà èñïîëüçîâàíèå ðàçäåëîâ: 1.  êà÷åñòâå òèïîâ äëÿ ïðîâåðêè çíà÷åíèé ïðè ðàçáèåíèè íà ðàçäåëû ìîãóò èñïîëüçîâàòüñÿ âñå òèïû, êðîìå text, ntext, timestamp, à òàêæå image. 2. Íåëüçÿ èñïîëüçîâàòü ïîëüçîâàòåëüñêèå òèïû äëÿ ñîçäàíèÿ óñëîâèé âûáîðêè ðàçäåëîâ. 3. Âñåãî ìîæåò áûòü ñîçäàíî íå áîëåå 1000 ðàçäåëîâ â ðàñ÷åòå íà îäíó òàáëèöó. 4. Âñå ðàçäåëû äîëæíû ðàñïîëàãàòüñÿ íà îòäåëüíî âçÿòîì óçëå â òîì ñëó÷àå, åñëè ñòðóêòóðà áàçû ïîäðàçóìåâàåò èñïîëüçîâàíèå òåõíîëîãèè êëàñòåðèçàöèè.
54
Ãëàâà 2 • Àäìèíèñòðèðîâàíèå SQL Server 2005
2.1.11. Ñèñòåìíûé êàòàëîã è ìåòàäàííûå  SQL Server 2000 è áîëåå ðàííèõ âåðñèÿõ èíôîðìàöèÿ î ñèñòåìíîì êàòàëîãå è ìåòàäàííûå õðàíèëèñü â êà÷åñòâå îòäåëüíîé ÷àñòè áàçû äàííûõ (â ãëàâíîé áàçå äàííûõ). ×òî êàñàåòñÿ SQL Server 2005, òî òåïåðü õðàíåíèå ìåòàäàííûõ âûïîëíÿåòñÿ â áàçå äàííûõ ðåñóðñîâ, êîòîðàÿ â ñâîþ î÷åðåäü õðàíèòñÿ â âèäå ñèñòåìíîãî îáúåêòà. Ïðè ýòîì â SQL Server 2005 çàêðûò ïðÿìîé äîñòóï ê ñèñòåìíûì òàáëèöàì, ÷òî íå ïîçâîëÿåò âûïîëíÿòü ïðÿìîå ðåäàêòèðîâàíèå ìåòàäàííûõ. Ýòî ïðèâåëî ê òîìó, ÷òî óëó÷øèëàñü áåçîïàñíîñòü ðàáîòû SQL Server, à òàêæå óïðîñòèëîñü âûïîëíåíèå îïåðàöèè îáíîâëåíèÿ ñåðâåðà, ïîñêîëüêó ìåòàäàííûå ãàðàíòèðîâàííî íå ìîãóò áûòü èçìåíåíû àäìèíèñòðàòîðîì, à ñëåäîâàòåëüíî, ïðåäñòàâëÿþò ïîëíóþ êàðòèíó ðàáîòû SQL Server. Áîëåå äåòàëüíî áåçîïàñíîñòü ñèñòåìû ìû ðàññìîòðèì â ðàçäåëå 2.3 «Áåçîïàñíîñòü». Ìåòàäàííûå SQL Server 2005 ïîëíîñòüþ îáðàòíî ñîâìåñòèìû, ÷òî óïðîùàåò ïðîöåññ ìèãðàöèè ñåðâåðîâ áàç äàííûõ áîëåå ðàííèõ âåðñèé íà âåðñèþ 2005.  òîì ñëó÷àå, åñëè â ïðåäûäóùèõ âåðñèÿõ SQL Server âàìè âûïîëíÿëèñü êàêèå-ëèáî ìîäèôèêàöèè ìåòàäàííûõ èëè èñïîëüçîâàëèñü íåäîêóìåíòèðîâàííûå âîçìîæíîñòè SQL Server â îòíîøåíèè ðàáîòû ñ ìåòàäàííûìè, âûïîëíÿéòå ìèãðàöèþ SQL Server ïðåäåëüíî àêêóðàòíî. Ïðîñìàòðèâàòü ñèñòåìíûå ìåòàäàííûå ìîæíî ñ ïîìîùüþ íàáîðà ïðåäñòàâëåíèé. Ïðåäñòàâëåíèÿ — ýòî âñòðîåííûå ôóíêöèè, âûçîâ êîòîðûõ ïîçâîëÿåò âûïîëíÿòü ïðîñòåéøèå îïåðàöèè ñ ñèñòåìíûìè ìåòàäàííûìè. Âñåãî â SQL Server 2005 ñóùåñòâóåò áîëåå 250 íîâûõ ïðåäñòàâëåíèé, äëÿ èñïîëüçîâàíèÿ êîòîðûõ íåîáõîäèìî âûçâàòü ñîîòâåòñòâóþùèå äèðåêòèâû â ñèñòåìíîé ñõåìå êàæäîé ïîëüçîâàòåëüñêîé áàçû äàííûõ. Äëÿ ïðîñìîòðà âñåãî ñïèñêà ñèñòåìíûõ ïðåäñòàâëåíèé âîñïîëüçóéòåñü Microsoft SQL Server Manager Studio. Äëÿ ýòîãî âûïîëíèòå ñëåäóþùèå äåéñòâèÿ: 1. Îòêðîéòå áðàóçåð îáúåêòîâ (Object Browser). 2. Âûáåðèòå óçåë Databases44Views4System Views. Ðàñêðûòûé óçåë áóäåò ñîäåðæàòü ïîëíûé ñïèñîê ñèñòåìíûõ ïðåäñòàâëåíèé. Òàêæå ìîæíî âîñïîëüçîâàòüñÿ çàïðîñîì äëÿ ïîëó÷åíèÿ ïîëíîãî ñïèñêà ñèñòåìíûõ ïðåäñòàâëåíèé, êîòîðûå â ñâîþ î÷åðåäü õðàíÿòñÿ â ñèñòåìíîì ïðåäñòàâëåíèè sys.system_views. Äëÿ ýòîãî âûïîëíèòå ñëåäóþùèé çàïðîñ: SELECT * FROM sys.system_views
2.1.12. Òåõíîëîãèÿ MARS Çíà÷èòåëüíûì óëó÷øåíèåì ôóíêöèîíàëüíîñòè SQL Server 2005 ïî ñðàâíåíèþ ñ ïðåäûäóùèìè âåðñèÿìè ÿâëÿåòñÿ âîçìîæíîñòü ïîëó÷åíèÿ íåñêîëüêèõ íàáîðîâ ðåçóëüòàòîâ â òå÷åíèå îäíîãî ñîåäèíåíèÿ. Äàííàÿ ôóíêöèîíàëüíîñòü íàçûâàåòñÿ «ìíîæåñòâåííûé íàáîð àêòèâíûõ ðåçóëüòàòîâ» (MARS — Multiple Active Results Set). MARS ïîçâîëÿåò îòêðûâàòü åäèíñòâåííîå ñîåäèíåíèå ñ áàçîé äàííûõ, âûïîëíÿòü çàïðîñ, à çàòåì, ïîëó÷èâ îïðåäåëåííûé íàáîð ðåçóëüòàòîâ, âûïîëíèòü ñëåäóþùèé çàïðîñ è òàê äàëåå. Ïðè ýòîì íå òðåáóåòñÿ êàæäûé ðàç äëÿ îòäåëüíîé ñåññèè îòêðûâàòü îòäåëüíîå ñîåäèíåíèå. Îäíî ñîåäèíåíèå ìîæåò ðàçäåëÿòüñÿ ìåæäó ðàçëè÷íûìè ñåññèÿìè ðàáîòû ñ SQL Server 2005. Ñ ó÷åòîì ýòîãî
2.2. SQL Server è íîâîå àïïàðàòíîå îáåñïå÷åíèå
55
òåïåðü ìîæíî ñîçäàâàòü ïðèëîæåíèÿ, êîòîðûå áóäóò ïîïåðåìåííî âûïîëíÿòü îïðåäåëåííûå çàïðîñû è îïåðèðîâàòü íàáîðàìè àêòèâíûõ äàííûõ, êîòîðûå ïîëó÷åíû â ðåçóëüòàòå âûïîëíåíèÿ êàæäîãî çàïðîñà. Áîëåå äåòàëüíî MARS ìû ðàññìîòðèì â ðàçäåëå 10.3.3 «Ïîääåðæêà MARS».
2.1.13. Ïðîöåññîð çàïðîñîâ T-SQL Èçìåíåíèÿ òàêæå êîñíóëèñü ïðîöåññîðà T-SQL.  ðàçäåëå 4.3.2 «Íîâûé íàáîð êîìàíä T-SQL» ìû áîëåå äåòàëüíî ðàññìîòðèì äàííûå óëó÷øåíèÿ è íîâûå âîçìîæíîñòè T-SQL è ïðîöåññîðà îáðàáîòêè çàïðîñîâ. Çäåñü æå ìû òîëüêî î÷åðòèì òå âîçìîæíîñòè, êîòîðûå ïîäâåðãëèñü èçìåíåíèþ.  T-SQL ïðîöåññîð áûëè âíåñåíû ñëåäóþùèå èçìåíåíèÿ: · äîáàâëåíà íîâàÿ êîìàíäà OUTPUT; · óëó÷øåí ìåõàíèçì CTE (Common Tables Expressions); · ðàñøèðåíû âîçìîæíîñòè èñïîëüçîâàíèÿ êîìàíäû WAITFOR; · ðàñøèðåíû âîçìîæíîñòè èñïîëüçîâàíèÿ êîìàíäû TOP.
2.1.14. Èíòåãðàöèÿ ñ .NET Framework Çíà÷èòåëüíûå èçìåíåíèÿ êîñíóëèñü SQL Server â îòíîøåíèè ïðîöåññà è ìåòîäîâ ðàçðàáîòêè ïðèëîæåíèé.  ïåðâóþ î÷åðåäü ýòî îòíîñèòñÿ ê âîçìîæíîñòè èñïîëüçîâàíèÿ ñðåäû Microsoft .NET Framework äëÿ ðàçðàáîòêè õðàíèìûõ ïðîöåäóð, ïîëüçîâàòåëüñêèõ ôóíêöèé, òðèããåðîâ, ïîëüçîâàòåëüñêèõ òèïîâ, ñåðâèñîâ è ðàçëè÷íûõ ïðèëîæåíèé. Òåïåðü ðàçðàáîò÷èêè ìîãóò ëåãêî èñïîëüçîâàòü äàííîå ðåøåíèå äëÿ ñîçäàíèÿ ïðèëîæåíèé ïîä SQL Server, ïðè ýòîì èì íåò íåîáõîäèìîñòè ïåðåó÷èâàòüñÿ. Îíè ìîãóò èñïîëüçîâàòü ÿçûêè ïðîãðàììèðîâàíèÿ C#, VB.NET èëè J#, âõîäÿùèå â ñîñòàâ ñðåäû ðàçðàáîòêè Microsoft .NET Framework. Òàêæå ñòîèò âûäåëèòü òî, ÷òî ðàçðàáîò÷èêàìè SQL Server áûëà âûïîëíåíà èíòåãðàöèÿ SQL Server ñ .NET CLR. Áîëåå äåòàëüíî äàííûé âîïðîñ è äðóãèå, ñâÿçàííûå ñ èíòåãðàöèåé Microsoft .NET Framework è SQL Server, ìû ðàññìîòðèì â ðàçäåëå 10.1 «Èíòåãðàöèÿ CLR».
2.2. SQL Server è íîâîå àïïàðàòíîå îáåñïå÷åíèå Îäíî èç îñíîâíûõ íîâîââåäåíèé, êîòîðûå ïîÿâèëèñü â Microsoft SQL Server 2005, — ýòî ïîääåðæêà íîâîãî àïïàðàòíîãî îáåñïå÷åíèÿ, ïîçâîëèâøàÿ äîáèòüñÿ ïðîèçâîäèòåëüíîñòè, äî ñèõ ïîð äîñòóïíîé òîëüêî ìîùíûì áàçàì äàííûõ, ðàáîòàþùèì ïîä óïðàâëåíèåì Unix.  ïåðâóþ î÷åðåäü ñòîèò âûäåëèòü ïîääåðæêó 64-ðàçðÿäíûõ ñèñòåì. Ýòî ïîçâîëèëî íå òîëüêî óâåëè÷èòü ñêîðîñòü ðàáîòû ïðîöåññîðîâ, íî, ÷òî ñàìîå ãëàâíîå, äîáèòüñÿ çíà÷èòåëüíîãî óâåëè÷åíèÿ îáúåìà äîñòóïíîé ïàìÿòè. Ïàìÿòü äëÿ òàêèõ ìîùíûõ ñèñòåì, êàê áàçû äàííûõ, îáÿçàííûõ îïåðèðîâàòü îãðîìíûìè îáúåìàìè äàííûõ, ÿâëÿåòñÿ êðèòè÷åñêèì ïàðàìåòðîì ïðîèçâîäèòåëüíîé ñèñòåìû, è åå óâåëè÷åíèå äîëæíî ïðèâåñòè ê çíà÷èòåëüíîìó óâåëè÷åíèþ ìîùíîñòè ïîäîáíûõ ñèñòåì. Áîëåå òîãî, â íàñòîÿùèé ìîìåíò ñóùåñòâóåò
56
Ãëàâà 2 • Àäìèíèñòðèðîâàíèå SQL Server 2005
îãðîìíîå ÷èñëî òðåõçâåííûõ ñèñòåì, â êîòîðûõ áàçà äàííûõ âûñòóïàåò îäíîâðåìåííî â êà÷åñòâå «ñåðäöà» è «ìîçãà» ñèñòåìû. Òàêèì îáðàçîì, óâåëè÷åíèå ïðîèçâîäèòåëüíîñòè áàç äàííûõ ïðèâåäåò ê óâåëè÷åíèþ ñêîðîñòè ðàáîòû ïîäîáíûõ ñèñòåì â öåëîì. Íå òàê äàâíî ñòàëà äîñòóïíà îïåðàöèîííàÿ ñèñòåìà (êëîí Windows), êîòîðàÿ ïîçâîëèëà áû ðàçâåðíóòü íà ñâîåé îñíîâå áîëåå ñëîæíûå è êîìïëåêñíûå ïðîäóêòû. Íåñìîòðÿ íà òî ÷òî 64-ðàçðÿäíûå ñèñòåìû óæå äîñòàòî÷íî äàâíî èçâåñòíû íà ðûíêå, îïåðàöèîííûå ñèñòåìû Windows äàííîé ìîäèôèêàöèè ïîÿâèëèñü ñðàâíèòåëüíî íåäàâíî. Êàê òîëüêî ñòàë äîñòóïåí Windows Server 2003, ñåðâåð SQL ñðàçó æå ìîæíî áûëî ïåðåâåñòè íà ðàáîòó ïîä óïðàâëåíèåì äàííîé ÎÑ. SQL Sever óíàñëåäîâàë âñå ïðåèìóùåñòâà 64-ðàçðÿäíîé ïëàòôîðìû, â òîì ÷èñëå è ïîääåðæêó àðõèòåêòóðû íåîäíîðîäíîé ïàìÿòè (NUMA — Non-Uniform Memory Architecture). Òàêæå ñòîèò çàìåòèòü, ÷òî SQL Server ïîçâîëÿåò ðåàëèçîâàòü óñòîé÷èâóþ ðàáîòó íà ñèñòåìàõ ñ ïðîöåññîðàìè ñåìåéñòâà Itanium IA-64 è AMD x64, ïîñêîëüêó äàííàÿ ïîääåðæêà âñòðîåíà â Windows Server 2003.
2.2.1. Ëîãè÷åñêèå ïðîöåññîðû Òåõíîëîãèÿ ëîãè÷åñêèõ ïðîöåññîðîâ (hyper-threading) áûëà ðàçðàáîòàíà è çàïàòåíòîâàíà ñîòðóäíèêàìè êîìïàíèè Intel. Íà ñèñòåìàõ ñ ïðîöåññîðàìè, ïîääåðæèâàþùèìè ýòó òåõíîëîãèþ, ìîæíî ïðîãðàììíî ñîçäàâàòü è èñïîëüçîâàòü íåñêîëüêî ëîãè÷åñêèõ ïðîöåññîðîâ. Áëàãîäàðÿ ýòîìó óâåëè÷èâàåòñÿ îáùàÿ ïðîèçâîäèòåëüíîñòü ñèñòåìû. Ïðîèñõîäèò ýòî çà ñ÷åò òîãî, ÷òî áîëüøóþ ÷àñòü âðåìåíè ïðîöåññîðû ïðîñòàèâàþò, à íàãðóçêà íà íèõ ÷àñòî íîñèò ïèêîâûé õàðàêòåð. Ïðè ýòîì ëîãè÷åñêèå ïðîöåññîðû èìåþò ñâîè ñîáñòâåííûå êîíâåéåðû êîìàíä, ÷òî ïîçâîëÿåò èì íåçàâèñèìî äðóã îò äðóãà îáðàáàòûâàòü ïîòîêè êîìàíä è îïåðèðîâàòü äàííûìè. Òàêèì îáðàçîì ïðîöåññîðû ðàçãðóæàþòñÿ âî âðåìÿ ïèêîâûõ âñïëåñêîâ âû÷èñëåíèé, à òàêæå óñêîðÿåòñÿ ðàáîòà ñèñòåìû çà ñ÷åò ðàçäåëåíèÿ ëîãè÷åñêîãî áëîêà êîìàíä äëÿ ïðåäñêàçàíèÿ õîäà âû÷èñëåíèé. Åñëè ïðåäñêàçàíèå âåòâëåíèÿ áûëî âûïîëíåíî íåïðàâèëüíî, ýòî ïðèâîäèò ê î÷èñòêå êîíâåéåðà êîìàíä, íà ÷òî òðàòèòñÿ ïðîöåññîðíîå âðåìÿ. Çà ñ÷åò òîãî, ÷òî äâà ïðîöåññîðà ðàáîòàþò íåçàâèñèìî äðóã îò äðóãà, âåðîÿòíîñòü îäíîâðåìåííîé î÷èñòêè êîíâåéåðîâ ïðè âûïîëíåíèè ïàðàëëåëüíûõ âû÷èñëåíèé ìåíüøå, ÷åì âåðîÿòíîñòü î÷èñòêè îäíîãî êîíâåéåðà êîìàíä. Ïîääåðæêà òåõíîëîãèè ëîãè÷åñêèõ ïðîöåññîðîâ âïåðâûå áûëà âñòðîåíà â Windows XP, à ïîçäíåå ñ âûõîäîì Windows Server 2003 îíà áûëà çàäåéñòâîâàíà íå òîëüêî â äîìàøíèõ ñèñòåìàõ, íî è â ñåðâåðíûõ. Èñïîëüçîâàíèå ïîäîáíûõ ñèñòåì ïîçâîëÿåò óâåëè÷èòü ïðîèçâîäèòåëüíîñòü ñèñòåì íåñìîòðÿ íà òî, ÷òî ëîãè÷åñêèå ïðîöåññîðû, òàê æå êàê è ôèçè÷åñêèå, êîíêóðèðóþò ìåæäó ñîáîé â îòíîøåíèè äîñòóïà ê ñèñòåìíûì ðåñóðñàì. Äëÿ SQL Server 2005 íåò ðàçíèöû, íà êàêîé ñèñòåìå ðàáîòàòü — ñ äâóìÿ ëîãè÷åñêèìè èëè ôèçè÷åñêèìè ïðîöåññîðàìè. Ëîãèêà ðàáîòû ïðè ýòîì íå èçìåíÿåòñÿ. Ïðè ýòîì ñåðâåðîì áàç äàííûõ àêòèâíî ýêñïëóàòèðóþòñÿ âîçìîæíîñòè ëîãè÷åñêîãî ðàçäåëåíèÿ êîìàíä â ñèñòåìå íà îñíîâå Windows Server 2003. Âî-ïåðâûõ, Windows Server 2003 ïîçâîëÿåò ðåàëèçîâàòü ðàñïèñàíèå êîìàíä, èäóùèõ íà îáðàáîòêó êîíâåéåðó êîìàíä, ÷òî çíà÷èòåëüíî óâåëè÷èâàåò ñêîðîñòü èõ îáðàáîòêè. Âî-âòîðûõ, ïîäîáíûé ïðîöåññîð (êîòîðûé
2.2. SQL Server è íîâîå àïïàðàòíîå îáåñïå÷åíèå
57
â îïåðàöèîííîé ñèñòåìå ïðåäñòàâëåí äâóìÿ ëîãè÷åñêèìè ïðîöåññîðàìè) íà ñàìîì äåëå ÿâëÿåòñÿ îäíèì ôèçè÷åñêèì, ÷òî ïîçâîëÿåò âîñïîëüçîâàòüñÿ ïðîãðàììîé ëèöåíçèðîâàíèÿ â ðàñ÷åòå íà îäèí ôèçè÷åñêèé, à íå äâà ëîãè÷åñêèõ ïðîöåññîðà. Ýòî ñýêîíîìèò ñðåäñòâà ïðåäïðèÿòèÿ.
2.2.2. Ïîääåðæêà NUMA Çíà÷èòåëüíîé ïåðåðàáîòêå è óëó÷øåíèþ ïîäâåðãëàñü òåõíîëîãèÿ âçàèìîäåéñòâèÿ SQL Server 2005 ñ îïåðàòèâíîé ïàìÿòüþ êîìïüþòåðà. Íîâàÿ òåõíîëîãèÿ íîñèò íàçâàíèå «àðõèòåêòóðà íåîäíîðîäíîé ïàìÿòè» (NUMA — Non-Uniform Memory Architecture). Ýòî òåõíîëîãèÿ ðàáîòû ïðèëîæåíèé â ìíîãîïðîöåññîðíîé ñðåäå, êîòîðàÿ ìîæåò èìåòü íåîäíîðîäíóþ àðõèòåêòóðó ïàìÿòè. Áëàãîäàðÿ èñïîëüçîâàíèþ äàííîé òåõíîëîãèè óâåëè÷èâàåòñÿ ñêîðîñòü ðàáîòû ñ ïàìÿòüþ, à òàêæå óïðîùàåòñÿ ìåõàíèçì àäðåñàöèè. Ýòà òåõíîëîãèÿ áûëà ðàçðàáîòàíà è çàïàòåíòîâàíà ñïåöèàëèñòàìè êîìïàíèè IBM. Ïðè ðàçðàáîòêå NUMA áûëè ïåðåñìîòðåíû è ïðîðàáîòàíû ñëàáûå ñòîðîíû òåõíîëîãèè SMP, ÷òî ïîçâîëèëî óìåíüøèòü êîíêóðåíöèþ ìåæäó îòäåëüíûìè ïðîöåññîðàìè â ìóëüòèïðîöåññîðíîé ñèñòåìå. Äåëî â òîì, ÷òî ïðè èñïîëüçîâàíèè òåõíîëîãèè äîñòóïà ê ïàìÿòè SMP ïðè óâåëè÷åíèè êîëè÷åñòâà ïðîöåññîðîâ óñèëèâàëàñü êîíêóðåíöèÿ ìåæäó íèìè â îòíîøåíèè îïåðàòèâíîé ïàìÿòè. Ýòî ïðèâîäèò ê òîìó, ÷òî óâåëè÷èâàåòñÿ âðåìÿ âûïîëíåíèÿ êîìàíä ïðè îïåðèðîâàíèè áîëüøèìè îáúåìàìè äàííûõ, êîòîðûå ÷àñòî íåîáõîäèìî êýøèðîâàòü (èìåííî òàêèå çàäà÷è ÷àñòî âîçíèêàþò ïåðåä SQL Server è ñåðâèñàìè àíàëèòèêè). Ïîäîáíûå çàäåðæêè îãðàíè÷èâàþò ìàñøòàáèðîâàíèå ñèñòåì, à òàêæå ïðèâîäÿò ê òîìó, ÷òî ñ óâåëè÷åíèåì ÷èñëà ïðîöåññîðîâ çàâèñèìîñòü ïðîèçâîäèòåëüíîñòè ðàáîòû ñèñòåìû ðàñòåò íå ëèíåéíî, à áîëåå ïîëîãî. Àðõèòåêòóðà NUMA ðàçðàáîòàíà òàêèì îáðàçîì, ÷òîáû ðåøèòü ïðîáëåìó àðõèòåêòóðû SMP è ïðåäîñòàâèòü ïðîöåññîðó âîçìîæíîñòü âûïîëíÿòü äîñòóï ê äàííûì îïåðàòèâíîé ïàìÿòè ñî ñêîðîñòüþ, ïðåâûøàþùåé ñêîðîñòü ðàáîòû ñèñòåìíîé øèíû. Íà ïåðâûé âçãëÿä àáñóðäíîå óòâåðæäåíèå íåîáõîäèìî àðãóìåíòèðîâàòü. Äåëî â òîì, ÷òî ñîãëàñíî àðõèòåêòóðå NUMA ïðîöåññîðû è ïàìÿòü ñãðóïïèðîâàíû â âèäå òàê íàçûâàåìûõ êîëëåêòîðîâ. Äàííûå êîëëåêòîðû ñîåäèíåíû äðóã ñ äðóãîì ñ ïîìîùüþ ñèñòåìíîé øèíû è ìîãóò âûïîëíÿòü îáðàáîòêó äàííûõ íåçàâèñèìî äðóã îò äðóãà. Ïîñðåäñòâîì ýòèõ ñîåäèíåíèé âûïîëíÿåòñÿ ïåðåäà÷à äàííûõ ìåæäó êëàñòåðàìè. Ñêîðîñòü ïåðåäà÷è äàííûõ ìåæäó êëàñòåðàìè ðàâíÿåòñÿ ñêîðîñòè ðàáîòû ñèñòåìíîé øèíû, ïðè ýòîì ïðèîðèòåòíûé äîñòóï ïðîöåññîðû èìåþò ê ïàìÿòè êîëëåêòîðà, â ñîñòàâ êîòîðîãî îíè âõîäÿò. Òàêèì îáðàçîì, óìåíüøàåòñÿ êîíêóðåíöèÿ ìåæäó ïðîöåññîðàìè â îòíîøåíèè îïåðàòèâíîé ïàìÿòè. Êàê äîñòèãàåòñÿ óâåëè÷åíèå ñêîðîñòè ñ÷èòûâàíèÿ è çàïèñè äàííûõ â ïàìÿòü? Çà ñ÷åò óìåíüøåíèÿ ìåæêëàñòåðíîãî âçàèìîäåéñòâèÿ è ïåðåäà÷è äàííûõ. Ïðîöåññîðû ïåðåäàþò ìåíüøèå îáúåìû êîìàíä è äàííûõ ìåæäó îòäåëüíûìè êëàñòåðàìè, ÷òî â êîíå÷íîì èòîãå ïîçâîëÿåò óìåíüøèòü êîíêóðåíöèþ ìåæäó íèìè â îòíîøåíèè äîñòóïà ê ðàçëè÷íûì ðåñóðñàì êîìïüþòåðà (è â ïåðâóþ î÷åðåäü ê îïåðàòèâíîé ïàìÿòè). Äëÿ òîãî ÷òîáû ðåøèòü ïîäîáíóþ ïðîáëåìó, íåîáõîäèìî ñïåöèàëüíûì îáðàçîì ñîçäàâàòü ïðèëîæåíèÿ (è ÷òî ñàìîå ãëàâíîå, îïåðàöèîííóþ ñèñòåìó).
58
Ãëàâà 2 • Àäìèíèñòðèðîâàíèå SQL Server 2005
Êîìïàíèÿ Microsoft îðèåíòèðîâàëàñü íà ðåøåíèå ïîäîáíûõ çàäà÷. À ïîòîìó ïðåäóñìîòðèòåëüíî ñîçäàëà îïåðàöèîííóþ ñèñòåìó Windows Server 2003 è SQL Server 2005 â ðàñ÷åòå íà óìåíüøåíèå ìåæêîëëåêòîðíîãî òðàôèêà. Ýòî ïîçâîëÿåò óñêîðèòü ðàáîòó ñèñòåì è äîñòè÷ü îáùåãî óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè ñèñòåìû, àêòèâíî ìàíèïóëèðóþùåé äàííûìè.
2.2.3. Ïîääåðæêà 64-ðàçðÿäíûõ ïðèëîæåíèé Äëÿ SQL Server 2005 ïîääåðæèâàåòñÿ ðàáîòà â ñèñòåìàõ íà îñíîâå ïðîöåññîðîâ Intel Itanium, Xeon è Intel Itanium II. Ïîìèìî ýòèõ ïðîöåññîðîâ ïîääåðæèâàåòñÿ ðàáîòà íà ñèñòåìàõ, êîòîðûå áàçèðóþòñÿ íà ïðîöåññîðàõ AMD Opteron è Athlon x64. Äëÿ òîãî ÷òîáû óñòàíîâèòü è íàñòðîèòü ðàáîòó SQL Server íà ïîäîáíûõ ñèñòåìàõ, íåîáõîäèìî óñòàíîâèòü 64-ðàçðÿäíóþ îïåðàöèîííóþ ñèñòåìó Windows Server 2003. Ïðè ýòîì âñå ñóùåñòâóþùèå â íîâîé ðåäàêöèè SQL Server ñåðâèñû ñóùåñòâóþò â âåðñèè äëÿ 64-ðàçðÿäíûõ ñèñòåì. Ýòî îçíà÷àåò, ÷òî ñåðâèñû àíàëèòèêè, îò÷åòîâ, ïðåîáðàçîâàíèÿ äàííûõ è äðóãèå ìîãóò áûòü óñòàíîâëåíû è íàñòðîåíû êàê íà 32-ðàçðÿäíûõ ñèñòåìàõ, òàê è íà 64-ðàçðÿäíûõ, ÷òî çíà÷èòåëüíî ðàñøèðÿåò îáëàñòè ïðèìåíåíèÿ ïîäîáíûõ ñèñòåì. Ïîìèìî óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè ðàáîòû êîìïîíåíòîâ SQL Server 2005 íà 64-ðàçðÿäíûõ ñèñòåìàõ çíà÷èòåëüíî ðàñøèðÿåòñÿ îáëàñòü çàäà÷, ðåøàåìûõ SQL Server 2005. Äîñòèãàåòñÿ ýòî çà ñ÷åò óâåëè÷åíèÿ ìîùíîñòè ïðîöåññîðîâ ñèñòåìû, à òàêæå óâåëè÷åíèÿ äîñòóïíîé ïàìÿòè äëÿ àäðåñàöèè (ðèñ. 2.2).
Ðèñ. 2.2. 64-ðàçðÿäíûå ñèñòåìû ìîãóò àäðåñîâàòü áîëüøèå îáúåìû ïàìÿòè
2.3. Áåçîïàñíîñòü Ïîæàëóé, íàèáîëüøèì èçìåíåíèÿì è óëó÷øåíèÿì ïîäâåðãëèñü ìåõàíèçìû îáåñïå÷åíèÿ áåçîïàñíîñòè â SQL Server. Ñïåöèàëèñòû Microsoft ìíîãî âðåìåíè ïîñâÿòèëè ïåðåñìîòðó è óëó÷øåíèþ ìåõàíèçìîâ ðàáîòû SQL Server, óïðàâëåíèþ ïðàâàìè äîñòóïà ê äàííûì, ðàçäà÷å ïðàâ è äðóãèì âîïðîñàì, êîòîðûå òàê èëè èíà÷å ñâÿçàíû ñ áåçîïàñíîñòüþ. Âî âðåìÿ ðàçðàáîòêè ñèñòåìû áåçîïàñíîñòè SQL Server 2005 Microsoft ïîëüçîâàëàñü öåëûì íàáîðîì ïðàâèë, ñîáëþäåíèå êîòîðûõ äîëæíî ãàðàíòèðîâàòü âûñîêèé óðîâåíü áåçîïàñíîñòè äàííûõ. Âî-ïåðâûõ, ñïåöèàëèñòû Microsoft õîòåëè, ÷òîáû áåçîïàñíîñòü SQL Server áûëà íà äîëæíîì óðîâíå ñðàçó ïîñëå óñòàíîâêè ñåðâåðà è ïîäêëþ÷åíèÿ ê ñåòè. Æåëàòåëüíî, ÷òîáû áåç êàêîé-ëèáî äîâîäêè ñî ñòîðîíû àäìèíèñòðàòîðà ñèñòåìà ïîëíîñòüþ îáåñïå-
2.3. Áåçîïàñíîñòü
59
÷èâàëà áåçîïàñíûé äîñòóï ê äàííûì. Äëÿ ðåàëèçàöèè äàííîãî ïëàíà áûëè îòêëþ÷åíû ïî óìîë÷àíèþ ìíîãèå ôóíêöèè SQL Server 2005, ÷òîáû îáåñïå÷èòü ñîîòâåòñòâóþùèé óðîâåíü áåçîïàñíîñòè. Ïðè íåîáõîäèìîñòè äîïîëíèòåëüíûå ìåõàíèçìû è ôóíêöèè SQL Server ìîãóò áûòü çàäåéñòâîâàíû, ÷òî ïîòðåáóåò âíèìàíèÿ àäìèíèñòðàòîðà, à ñëåäîâàòåëüíî, áóäåò îáåñïå÷åí äîëæíûé óðîâåíü áåçîïàñíîñòè. Âî-âòîðûõ, Microsoft õîòåëà îãðàíè÷èòü íàáîð êîìïîíåíòîâ, êîòîðûå ìîãóò áûòü èñïîëüçîâàíû â ñèñòåìå. Äëÿ ýòîãî îïðåäåëåí ñïèñîê ïîëüçîâàòåëåé, êîòîðûå ìîãóò èñïîëüçîâàòü òîëüêî îïðåäåëåííûå êîìïîíåíòû è íå ìîãóò âûïîëíÿòü óñòàíîâêó äîïîëíèòåëüíûõ. Â-òðåòüèõ, ïîëüçîâàòåëè â ñèñòåìå èìåþò òîëüêî òå ïðèâèëåãèè, êîòîðûå èì íåîáõîäèìû äëÿ âûïîëíåíèÿ çàäà÷. Ýòî ïîçâîëÿåò åùå áîëåå îãðàíè÷èòü ñâîáîäó äåéñòâèé ïîëüçîâàòåëÿ â ñèñòåìå, à ñëåäîâàòåëüíî, äîáèòüñÿ íåîáõîäèìîãî óðîâíÿ áåçîïàñíîñòè. Ïðàêòè÷åñêè âñå íîâîââåäåíèÿ, êîòîðûå ïîÿâèëèñü â ïîñëåäíåé âåðñèè SQL Server, áûëè äîáàâëåíû â ðåçóëüòàòå èññëåäîâàíèé, ïðîâîäèìûõ ñïåöèàëèñòàìè Microsoft â ïîñëåäíèå òðè ãîäà. Áîëåå äåòàëüíî âîïðîñû, êîòîðûå êàñàþòñÿ áåçîïàñíîñòè, ìû ðàññìîòðèì â ãëàâå 12 «Áåçîïàñíîñòü».  ýòîì æå ðàçäåëå ìû ðàññìîòðèì òîëüêî íåêîòîðûå èç íèõ â ñîêðàùåííîì îáúåìå.
2.3.1. Äîñòóï ê îáúåêòàì SQL Server 2005 Ïî ñðàâíåíèþ ñ SQL Server 2000 íîâàÿ âåðñèÿ ýòîãî ïðîãðàììíîãî ïðîäóêòà ïîçâîëÿåò ðåàëèçîâàòü áîëåå òîíêèé äîñòóï ê îáúåêòàì. Äëÿ ýòîãî ðåàëèçîâàíî íåñêîëüêî äîïîëíèòåëüíûõ óðîâíåé äîñòóïà. Òåïåðü äàííûå óðîâíè äîñòóïà ìîãóò áûòü ïðèìåíåíû ê áàçå äàííûõ, ñåðâåðó, îáúåêòó, ñõåìå èëè ïðèíöèïàëó. Ýòî ïîçâîëÿåò àäìèíèñòðàòîðó áàç äàííûõ ðåàëèçîâàòü áîëåå òîíêèé êîíòðîëü íàä îáúåêòàìè, áàçîé äàííûõ è äðóãèìè ýëåìåíòàìè áåçîïàñíîñòè SQL Server. Ïðè ýòîì ñóùåñòâóþùèå ðîëè ìîãóò â äàëüíåéøåì áûòü èñïîëüçîâàíû äëÿ îáåñïå÷åíèÿ áåçîïàñíîñòè ñèñòåìû è ðàçãðàíè÷åíèÿ óðîâíåé äîñòóïà. Íîâûå óðîâíè äîñòóïà äîëæíû èñïîëüçîâàòüñÿ, â ïåðâóþ î÷åðåäü, äëÿ îáåñïå÷åíèÿ ïðàâ àóäèòà èñïîëüçîâàíèÿ îáúåêòîâ.  ïðåäûäóùåé âåðñèè SQL Server òðåáîâàëîñü âõîäèòü â ñîñòàâ ãðóïïû sysadmins äëÿ òîãî, ÷òîáû èìåòü ïðàâà íà âûïîëíåíèå àóäèòà. Ïðè ýòîì äîáàâëåíèå ïîëüçîâàòåëÿ â äàííóþ ãðóïïó ïðèâîäèëî ê òîìó, ÷òî îí, ïîìèìî âîçìîæíîñòè àóäèòà, ïîëó÷àë äîïîëíèòåëüíûå âîçìîæíîñòè è ïðàâà äëÿ äåéñòâèÿ â ñèñòåìå. ×àñòî ïîäîáíàÿ ñâîáîäà ïîëüçîâàòåëÿ áûëà íåæåëàòåëüíà. Ïîýòîìó â SQL Server 2005 ïðàâà íà îñóùåñòâëåíèå àóäèòà áûëè îòäåëåíû îò äðóãèõ ïðàâ. Òåïåðü íåò íåîáõîäèìîñòè âêëþ÷àòü ïîëüçîâàòåëÿ â ñîñòàâ ãðóïïû sysadmins äëÿ òîãî, ÷òîáû îí ìîã âûïîëíÿòü àóäèò. Ïðè ýòîì ñóùåñòâóþùèå êîìàíäû REVOKE, DENY è GRANT äëÿ óïðàâëåíèÿ ïðàâàìè äîñòóïà ïîëüçîâàòåëÿ ê îáúåêòàì òàêæå ìîãóò áûòü èñïîëüçîâàíû àäìèíèñòðàòîðàìè è ðàçðàáîò÷èêàìè äëÿ ðàñøèðåíèÿ óðîâíÿ äîñòóïà âûáðàííîãî ïîëüçîâàòåëÿ ê îáúåêòàì áàçû äàííûõ. Îäíèì èç íîâîââåäåíèé SQL Server 2005 ÿâëÿåòñÿ òî, ÷òî óðîâíè äîñòóïà ìîãóò èñïîëüçîâàòüñÿ â ðàçëè÷íûõ öåëÿõ â çàâèñèìîñòè îò îáúåêòà, óðîâåíü äîñòóïà ê êîòîðîìó çàäàåòñÿ. Íàïðèìåð, åñëè âûïîëíÿåòñÿ ïðèñâîåíèå ïðàâ äîñòóïà â îòíîøåíèè áàçû äàííûõ, òî çàäàâàåìûé óðîâåíü äîñòóïà äëÿ âûáðàííîãî ïîëüçîâàòåëÿ áóäåò íàñòðîåí òàêæå íà âñå îáúåêòû, ñîäåðæàùèåñÿ â âûáðàííîé áàçå äàííûõ.
60
Ãëàâà 2 • Àäìèíèñòðèðîâàíèå SQL Server 2005
 òîì ñëó÷àå, åñëè ïðèñâîåíèå óðîâíÿ äîñòóïà âûïîëíÿåòñÿ â îòíîøåíèè ñõåìû, ïðèìåíåíèå óðîâíÿ äîñòóïà òàêæå âûïîëíÿåòñÿ â îòíîøåíèè îáúåêòîâ, âõîäÿùèõ â ñîñòàâ äàííîé ñõåìû. Áîëåå äåòàëüíîå îïèñàíèå óðîâíåé äîñòóïà ïðèâåäåíî â òàáë. 2.1. Òàáëèöà 2.1. Óðîâíè äîñòóïà â SQL Server 2005 ¹
Óðîâåíü äîñòóïà
Îïèñàíèå
1
ALTER
Ïîçâîëÿåò èçìåíÿòü ñâîéñòâà îáúåêòà. Òàêæå ïîçâîëÿåò âûïîëíÿòü â îòíîøåíèè äàííîãî îáúåêòà ñëåäóþùèå êîìàíäû: ALTER, CREATE, DROP
2
ALTER ANY 'X'
Ïîçâîëÿåò èçìåíÿòü ñâîéñòâà âñåõ îáúåêòîâ, èìåþùèõ òèï 'X', à òàêæå âûïîëíÿòü êîìàíäû ALTER, CREATE, DROP â îòíîøåíèè îáúåêòîâ îïðåäåëåííîãî òèïà
3
ALTER TRACE
Ïîçâîëÿåò âûïîëíÿòü àóäèò, à òàêæå çàïóñêàòü ïðîôàéëåð (Profiler)
4
CONTROL
Ïîçâîëÿåò çàäàâàòü âëàäåëüöà îáúåêòà
5
SELECT
Ïîçâîëÿåò âûïîëíÿòü äîñòóï ê îáúåêòó (êîìàíäó SELECT). Òåïåðü äàííûé óðîâåíü äîñòóïà òàêæå ìîæíî ïðèìåíÿòü â îòíîøåíèè áàç äàííûõ è ñõåì, à íå òîëüêî îáúåêòîâ
6
EXECUTE
Ïîçâîëÿåò çàäàâàòü ïðèíöèïàëó ïðàâà íà âûïîëíåíèå ïðîöåäóð, ôóíêöèé è ñáîðîê
7
IMPERSONATE
Ïðåäîñòàâëÿåò ïðàâà âõîäà â ñèñòåìó
8
TAKE OWNERSHIP
Ïîçâîëÿåò èçìåíÿòü ïðàâà âëàäåíèÿ îáúåêòîì
9
VIEW DEFINITION
Ïðåäîñòàâëÿåò âîçìîæíîñòü äëÿ ïðîñìîòðà ìåòàäàííûõ
Âñå óðîâíè äîñòóïà äëÿ ñåðâåðà õðàíÿòñÿ â ïðåäñòàâëåíèè sys.server_ permissions. Ïðàâà äîñòóïà äëÿ áàçû äàííûõ õðàíÿòñÿ â ïðåäñòàâëåíèè sys. database_permissions. Äëÿ èõ ïðîñìîòðà ìîæíî âîñïîëüçîâàòüñÿ ñëåäóþùèìè çàïðîñàìè: SELECT * FROM sys.server_permissions SELECT * FROM sys.database_permissions
2.3.2. Ïîëèòèêè áåçîïàñíîñòè â îòíîøåíèè ïàðîëåé Åùå îäíîé âàæíîé îñîáåííîñòüþ SQL Server 2005 ÿâëÿåòñÿ ïîääåðæêà ïîëèòèê â îòíîøåíèè ïàðîëåé ó÷åòíûõ çàïèñåé. Äàííàÿ ôóíêöèîíàëüíîñòü ïîçâîëÿåò ïîääåðæèâàòü ïîëèòèêè áåçîïàñíîñòè Windows â îòíîøåíèè ïàðîëåé. Òåïåðü äàííûå ïîëèòèêè ìîãóò áûòü ïðèìåíåíû òàêæå â îòíîøåíèè ñåðâåðîâ SQL. Ñ ïîìîùüþ ïîëèòèê áåçîïàñíîñòè òåïåðü ìîæíî íàñòðîèòü ìèíèìàëüíóþ äëèíó ïàðîëÿ, çàäàòü åãî ñëîæíîñòü, à ïðè íåîáõîäèìîñòè ñðîê èñòå÷åíèÿ. Ýòî ïîçâîëèò àäìèíèñòðàòîðàì íå áåñïîêîèòüñÿ î ïîñòîÿííîé ñìåíå ïàðîëÿ ïîëüçîâàòåëÿìè äëÿ îáåñïå÷åíèÿ äîëæíîãî óðîâíÿ áåçîïàñíîñòè, à òàêæå îáåçîïàñèòü ñåáÿ îò ïðîñòåéøèõ ñëó÷àåâ âçëîìà ñèñòåì â ñëó÷àå ýëåìåíòàðíîãî ïîäáîðà ïàðîëÿ. Ïîëèòèêà áëîêèðîâàíèÿ ó÷åòíîé çàïèñè ïîçâîëèò îáåñïå÷èòü ãàðàíòèðîâàííîå áëîêèðîâàíèå ó÷åòíîé çàïèñè â òîì ñëó÷àå, åñëè ïîëüçîâàòåëü îïðåäåëåííîå ÷èñëî ðàç íåïðàâèëüíî ââîäèë ïàðîëü. Ïîëèòèêè ïîääåðæèâàþòñÿ Windows Server 2003.
2.3. Áåçîïàñíîñòü
61
Îäíàêî â ñëó÷àå èñïîëüçîâàíèÿ ñâÿçêè Microsoft Windows 2000 è SQL Server 2005 ïîääåðæèâàåòñÿ òîëüêî ïîëèòèêà êîìïëåêñíîñòè ïàðîëÿ. Äðóãèå ïîëèòèêè ïîääåðæèâàþòñÿ òîëüêî íà óðîâíå îïåðàöèîííîé ñèñòåìû Windows Server 2003. Ïî óìîë÷àíèþ âñå ïîëèòèêè çàäåéñòâîâàíû ïîñëå óñòàíîâêè SQL Server 2005. Àäìèíèñòðàòîð ìîæåò çà íåíàäîáíîñòüþ îòêëþ÷èòü îäíó èëè íåñêîëüêî ïîëèòèê áåçîïàñíîñòè. Õðàíåíèå ïîëèòèê áåçîïàñíîñòè, à òàêæå äàííûõ îá èõ èñïîëüçîâàíèè âûïîëíÿåòñÿ â ïðåäñòàâëåíèè sys.sql_logins SQL Server 2005. Äëÿ ïðîñìîòðà ñïèñêà ïîëèòèê âîñïîëüçóéòåñü ñëåäóþùèì çàïðîñîì: SELECT * FROM sys.sql_logins
2.3.3. Óðîâåíü äîñòóïà VIEW DEFINITION  SQL Server 2005 òàêæå ïîäâåðãëàñü ïåðåñìîòðó è óëó÷øåíèþ áåçîïàñíîñòü êàòàëîãîâ. Òåïåðü âñå ñèñòåìíûå òàáëèöû, êîòîðûå ñóùåñòâîâàëè â SQL Server 2000, à òàêæå ãëàâíûå áàçû äàííûõ ñóùåñòâóþò â âèäå ïðåäñòàâëåíèé êàòàëîãîâ â SQL Server 2005. Âñå ìåòàäàííûå ñåðâåðà, êîòîðûå ðàíåå áûëè äîñòóïíû äëÿ ïîëüçîâàòåëåé, òåïåðü õðàíÿòñÿ â âèäå ïîäîáíûõ ïðåäñòàâëåíèé. Ïîëüçîâàòåëè èìåþò ìèíèìàëüíûé óðîâåíü äîñòóïà ê ïîäîáíûì äàííûì. Ïðåäñòàâëåíèÿ çàùèùåíû ñ ïîìîùüþ íàñòðîéêè óðîâíÿ äîñòóïà ê çàïèñÿì òàáëèö, à ñëåäîâàòåëüíî, òîëüêî îãðàíè÷åííîå ÷èñëî ïîëüçîâàòåëåé èìåþò äîñòóï äëÿ ÷òåíèÿ ýòèõ äàííûõ. Ñòîèò çàìåòèòü, ÷òî ïîëüçîâàòåëü SA, êàê è ðàíåå, èìååò äîñòóï êî âñåì ïîäîáíûì òàáëèöàì. Äëÿ òîãî ÷òîáû íàñòðîèòü óðîâåíü äîñòóïà äëÿ ïðèíöèïàëà ê ìåòàäàííûì, ñèñòåìíûé àäìèíèñòðàòîð äîëæåí óñòàíîâèòü äëÿ íåãî óðîâåíü äîñòóïà VIEW DEFINITION. Äàííûé óðîâåíü ðàçðåøàåò ïîëüçîâàòåëþ (êîòîðûé íå ÿâëÿåòñÿ âëàäåëüöåì îáúåêòà) âûïîëíÿòü ÷òåíèå ìåòàäàííûõ âûáðàííîãî îáúåêòà. Óðîâåíü äîñòóïà VIEW DEFINITION ìîæåò áûòü ïðèìåíåí â îòíîøåíèè ñëåäóþùèõ ýëåìåíòîâ: · áàçà äàííûõ; · ñåðâåð; · ñõåìà; · îáúåêò.
2.3.4. Êîíòåêñòíîå âûïîëíåíèå õðàíèìûõ ïðîöåäóð  íîâîé âåðñèè SQL Server ïîÿâèëîñü òîëüêî îäíî ïðåèìóùåñòâî â îáëàñòè ðàáîòû ñ õðàíèìûìè ïðîöåäóðàìè ïî ñðàâíåíèþ ñ ïðåäûäóùèìè âåðñèÿìè SQL Server. Ìîæíî ñêàçàòü, ÷òî äàííîå ïðåèìóùåñòâî ñêîðåå îòíîñèòñÿ ê ìîäóëÿì SQL Server, ÷åì ê ñàìîìó ìåõàíèçìó èñïîëüçîâàíèÿ õðàíèìûõ ïðîöåäóð. Òåïåðü äëÿ ìîäóëåé ìîæíî çàäàâàòü êîíòåêñò âûïîëíåíèÿ.  äàííîì ñëó÷àå â êà÷åñòâå ìîäóëåé ìîãóò âûñòóïàòü õðàíèìûå ïðîöåäóðû, ñáîðêè èëè ïîëüçîâàòåëüñêèå ôóíêöèè. Çàäàâàÿ êîíòåêñò âûïîëíåíèÿ ìîäóëÿ, ìîæíî äîáèòüñÿ òîãî, ÷òî âî âðåìÿ åãî âûïîëíåíèÿ áóäåò âûïîëíÿòüñÿ ïðîâåðêà óðîâíÿ äîñòóïà ïðè âûïîëíåíèè òîé èëè èíîé ôóíêöèè èëè õðàíèìîé ïðîöåäóðû. Èíûìè ñëîâàìè, ñ ïîìîùüþ ïàðàìåòðîâ èñïîëíåíèÿ ìîæíî äîáèòüñÿ òîãî, ÷òî ïðîöåäóðà èëè ôóíêöèÿ áóäóò âûïîëíÿòüñÿ îò èìåíè ïîëüçîâàòåëÿ, â îáùåì ñëó÷àå îòëè÷íîãî îò òîãî, êîòîðûé
62
Ãëàâà 2 • Àäìèíèñòðèðîâàíèå SQL Server 2005
âûïîëíÿåò ïðîöåäóðó èëè ôóíêöèþ. Òàêèì îáðàçîì, ìîæíî äîáèòüñÿ âûïîëíåíèÿ ìîäóëåé îò èìåíè äðóãèõ ïîëüçîâàòåëåé. Ýòî ïîçâîëÿåò äîáàâèòü äîïîëíèòåëüíûé óðîâåíü ñâîáîäû äëÿ ðàáîòû àäìèíèñòðàòîðà èëè ðàçðàáîò÷èêà. Ïîäîáíûé ìåõàíèçì î÷åíü ïîõîæ íà ðàáîòó ìåõàíèçìà öåïî÷êè âëàäåëüöåâ, êîòîðûé áûë ðåàëèçîâàí â ïðåäûäóùåé âåðñèè SQL Server. Íàïðèìåð, âû íå ñìîæåòå èçìåíèòü êîíòåêñò âûïîëíåíèÿ äëÿ äèíàìè÷åñêîãî çàïðîñà SQL, èñïîëüçóÿ ìåõàíèçì öåïî÷êè âëàäåëüöåâ â SQL Server 2000. Îäíàêî ýòà îïåðàöèÿ îñóùåñòâèìà â SQL Server 2005 áëàãîäàðÿ èñïîëüçîâàíèþ ìåõàíèçìà êîíòåêñòíîãî âûïîëíåíèÿ ìîäóëÿ.  ýòîì ñëó÷àå äëÿ SQL Server 2005 äèíàìè÷åñêèé SQL-çàïðîñ ïðàêòè÷åñêè íè÷åì íå îòëè÷àåòñÿ îò ñòàòè÷åñêîãî çàïðîñà è ïîçâîëÿåò ðåàëèçîâàòü ïðàêòè÷åñêè áåçãðàíè÷íûé íàáîð ñðåäñòâ, äîñòóïíûõ äëÿ ðàáîòû ñî ñòàòè÷åñêèì çàïðîñîì. Äëÿ òîãî ÷òîáû áîëåå äåòàëüíî ðàçîáðàòüñÿ â ðàçëè÷èè ìåõàíèçìîâ öåïî÷êè âëàäåëüöåâ â SQL Server 2000 è êîíòåêñòíîãî âûïîëíåíèÿ â SQL Server 2005, ðàññìîòðèì ïðèìåð (ðèñ. 2.3).
Ðèñ. 2.3. Öåïî÷êà âëàäåëüöåâ â SQL Server 2000
Íàïðèìåð, ïîëüçîâàòåëü User1 äëÿ òîãî, ÷òîáû âûïîëíÿòü ïðîöåäóðó DBO. Procedure1, äîëæåí èìåòü ïðàâà íà åå âûïîëíåíèå. Îäíàêî åñëè â ïðîöåäóðå DBO.Procedure1 âûïîëíÿåòñÿ äîñòóï (íàïðèìåð, èçìåíåíèå) ê òàáëèöå DBO.Table1, òî â ýòîì ñëó÷àå íå âûïîëíÿåòñÿ ïðîâåðêà óðîâíÿ äîñòóïà ïîëüçîâàòåëÿ User1 ê òàáëèöå DBO.Table1. Ïîäîáíàÿ ïðîâåðêà íå âûïîëíÿåòñÿ èç-çà òîãî, ÷òî ïîëüçîâàòåëü User1 ÿâëÿåòñÿ âëàäåëüöåì îáîèõ îáúåêòîâ (êàê ïðîöåäóðû, òàê è òàáëèöû). Ýòîò ïðèìåð äåìîíñòðèðóåò äåéñòâèå ìåõàíèçìà öåïî÷êè âëàäåëüöåâ. Ðàññìîòðèì äðóãîé ïðèìåð. Ïîëüçîâàòåëþ User1 äëÿ âûïîëíåíèÿ ïðîöåäóðû User2.Procedure1 íåîáõîäèìî ñíà÷àëà ïîëó÷èòü äîñòóï ê íåé.  ïðîöåäóðå User2.Procedure1 âûïîëíÿåòñÿ äîñòóï ê òàáëèöå User3.Table1.  ýòîì ñëó÷àå ïîëüçîâàòåëü User1 äîëæåí èìåòü äîñòóï ê äàííîé òàáëèöå, íàïðèìåð, íà óðîâíå WRITE, ïîñêîëüêó â ýòîì ñëó÷àå âëàäåëüöåì ïðîöåäóðû User2.Procedure1 ÿâëÿåòñÿ ïîëüçîâàòåëü User2 (â îáùåì ñëó÷àå îòëè÷íûé îò ïîëüçîâàòåëÿ, âûïîëíÿþùåãî äîñòóï). Ãîâîðÿ ÿçûêîì àäìèíèñòðàòîðà áàç äàííûõ, âî âòîðîì ñëó÷àå ìû íàáëþäàåì ðàçðûâ öåïî÷êè âëàäåëüöåâ. ×òî êàñàåòñÿ SQL Server 2005, òî â äàííîì ñëó÷àå äåéñòâèÿ ñåðâåðà íåñêîëüêî îòëè÷àþòñÿ îò ðàáîòû SQL Server 2000 (ðèñ. 2.4). Ðàññìîòðèì áîëåå äåòàëüíî äåéñòâèå äàííîãî ìåõàíèçìà íà ïðèìåðå. Ïóñòü ïîëüçîâàòåëü User1 âûïîëíÿåò ïðîöåäóðó User2.Procedure1, â êîòîðîé â ñâîþ î÷åðåäü âûïîëíÿåòñÿ äîñòóï ê òàá-
2.3. Áåçîïàñíîñòü
63
ëèöå User3.Table1. Âî âðåìÿ âûïîëíåíèÿ ïðîöåäóðû User2.Procedure1 ïîëüçîâàòåëåì User1 SQL Server 2005 âûïîëíèò ïðîâåðêó ïðàâ âûïîëíåíèÿ äàííîé ïðîöåäóðû äëÿ ïîëüçîâàòåëÿ User1. Åñëè âî âðåìÿ ñîçäàíèÿ ïðîöåäóðû User2.Procedure1 áûë îïðåäåëåí êîíòåêñò âûïîëíåíèÿ, â êîòîðîì áûëî îïðåäåëåíî, ÷òî èñïîëíèòåëåì ïðîöåäóðû áóäåò ÿâëÿòüñÿ User1, òî ïðîâåðêà áóäåò âûïîëíÿòüñÿ ñëåäóþùèì îáðàçîì: 1. Âíà÷àëå SQL Server 2005 âûïîëíèò ïðîâåðêó óðîâíÿ äîñòóïà ê òàáëèöå, âûçûâàåìîé èç ïðîöåäóðû (User3.Table1), äëÿ ïîëüçîâàòåëÿ, îïðåäåëåííîãî â êîíòåêñòå âûïîëíåíèÿ (íàïðèìåð, User1). 2. Åñëè äàííûé ïîëüçîâàòåëü èìååò ïðàâà äîñòóïà ê òàáëèöå (íàïðèìåð, íà óðîâíå Write), òî äîñòóï ê òàáëèöå åìó ðàçðåøàåòñÿ, è îí ìîæåò âûïîëíÿòü ïðîöåäóðó User2.Procedure1. Åñëè æå îí íå èìååò ïîäîáíûõ ïðàâ, òî äîñòóï ê ïðîöåäóðå îí íå ïîëó÷èò, à ñëåäîâàòåëüíî, íå ñìîæåò âûïîëíèòü ÷òåíèå èëè çàïèñü äàííûõ â òàáëèöó User3.Table1.
Ðèñ. 2.4. Êîíòåêñòíîå âûïîëíåíèå ìîäóëÿ â SQL Server 2005
Òàêèì îáðàçîì, èñïîëüçóÿ ìåõàíèçì êîíòåêñòíîãî âûïîëíåíèÿ ìîäóëÿ, ìîæíî îãðàíè÷èòü äîñòóï ïîëüçîâàòåëåé ê îáúåêòàì, ïðàâà íà èñïîëüçîâàíèå êîòîðûõ îíè íå èìåþò. Ïîìèìî ïîâûøåíèÿ áåçîïàñíîñòè ýòî ïîçâîëÿåò óïðîñòèòü ïðîöåññ ñîçäàíèÿ õðàíèìûõ ïðîöåäóð, ôóíêöèé è ñáîðîê. Äëÿ òîãî ÷òîáû íàñòðîèòü êîíòåêñò âûïîëíåíèÿ, âîñïîëüçóéòåñü ñëåäóþùåé êîìàíäîé: ALTER PROC User1Schema.Procedure1 WITH EXECUTE AS USER User2
Ñ ïîìîùüþ äàííîé êîìàíäû ìû íàñòðîèëè âîçìîæíîñòü êîíòåêñòíîãî âûïîëíåíèÿ ïðîöåäóðû User1Schema.Procedure1 äëÿ ïîëüçîâàòåëÿ User2. Çäåñü íåîáõîäèìî îãîâîðèòüñÿ, ÷òî â êà÷åñòâå êîíòåêñòà íåëüçÿ ïåðåäàâàòü ðîëü. Ðîëü íå ìîæåò âûñòóïàòü â êà÷åñòâå êîíòåêñòíîãî èñïîëíèòåëÿ ìîäóëÿ. Âñå íàñòðîéêè êîíòåêñòíîãî èñïîëíåíèÿ ìîäóëåé õðàíÿòñÿ â ïðåäñòàâëåíèè sys.sql_modules. Èõ ìîæíî ïðîñìîòðåòü, âûïîëíèâ çàïðîñ: SELECT * FROM sys.sql_modules
2.3.5. Áåçîïàñíîñòü ïîëüçîâàòåëüñêèõ ñõåì Ïîæàëóé, îäíèì èç íàèáîëåå ïðèìå÷àòåëüíûõ èçìåíåíèé, êîòîðûå êîñíóëèñü ìåõàíèçìîâ áåçîïàñíîñòè â SQL Server 2005, ÿâëÿåòñÿ ðàçäåëåíèå ïîëüçîâàòåëüñêèõ ñõåì. Òåïåðü ïðàêòè÷åñêè êàæäûé îáúåêò SQL Server ìîæåò áûòü çàùèùåí îò äåéñòâèé òîãî èëè èíîãî ïîëüçîâàòåëÿ. Ïðè ýòîì â êà÷åñòâå ïîëüçîâàòåëÿ ìîæåò
64
Ãëàâà 2 • Àäìèíèñòðèðîâàíèå SQL Server 2005
âûñòóïàòü êàê îòäåëüíûé ïîëüçîâàòåëü, ïðîøåäøèé àâòîðèçàöèþ Windows, òàê è ðîëü èëè ïîëüçîâàòåëü SQL Server. Â SQL Server 2000 èíôîðìàöèÿ îáî âñåõ ïîëüçîâàòåëÿõ è ðîëÿõ, ñóùåñòâîâàâøèõ â ñèñòåìå, õðàíèëàñü â ñèñòåìíîé òàáëèöå sys_users. Òåïåðü ïîäõîä íåñêîëüêî èçìåíèëñÿ. Âñå ïîëüçîâàòåëè SQL Server 2005 õðàíÿòñÿ â íîâîì ïðåäñòàâëåíèè sys.database_principals. Â íîâîé âåðñèè SQL Server âëàäåëüöàìè îáúåêòîâ ÿâëÿþòñÿ íå îòäåëüíûå ïîëüçîâàòåëè, à ñõåìû. Äëÿ õðàíåíèÿ äàííûõ ñõåì èñïîëüçóåòñÿ ñèñòåìíîå ïðåäñòàâëåíèå sys.schemas. Ïðîñìîòðåòü ñîäåðæèìîå äàííûõ ïðåäñòàâëåíèé ìîæíî, âûïîëíèâ çàïðîñû: SELECT * FROM sys.database_principals SELECT * FROM sys.schemas
Ïîäõîä ê ñõåìàì íå èçìåíèëñÿ. Ñõåìà ïðåäñòàâëÿåò ñîáîé êîíòåéíåð, âìåùàþùèé íåêîòîðûå îáúåêòû. Äëÿ îáîçíà÷åíèÿ ñõåìû, êàê è â ïðåäûäóùèõ âåðñèÿõ, èñïîëüçóåòñÿ òðåõñîñòàâíîé èëè ÷åòûðåõñîñòàâíîé èäåíòèôèêàòîð. Ïðèìåðîì èìåíè ñõåìû ìîæåò ñëóæèòü ñëåäóþùèé: SERVER_NAME.DATABASE_NAME.SCHEMA_NAME.OBJECT_NAME
 ïðåäûäóùèõ âåðñèÿõ SQL Server èìåíà ñõåìû è âëàäåëüöà ÷àñòî ñîâïàäàëè.  íîâîé âåðñèè ïîíÿòèå èìåíè ïîëüçîâàòåëÿ îòäåëåíî îò ïîíÿòèÿ èìåíè ñõåìû. Åñëè âû èñïîëüçóåòå SQL Server 2000 èëè áîëåå ðàííþþ âåðñèþ, òî âî âðåìÿ îïðåäåëåíèÿ èìåíè îáúåêòà ñåðâåð áóäåò ïðîñìàòðèâàòü ñîäåðæèìîå òàáëèöû Database_name.  òîì ñëó÷àå, åñëè ðàáîòà âåäåòñÿ ïîä óïðàâëåíèåì SQL Server 2005, âíà÷àëå ñåðâåð áóäåò ïðîñìàòðèâàòü ñîäåðæèìîå òàáëèöû Object_name, à åñëè äàííàÿ òàáëèöà íå áóäåò íàéäåíà, òî ñåðâåð âûïîëíèò ïðîñìîòð ñîäåðæèìîãî òàáëèöû Database_name.dbo.Object_name. Îñíîâíîé ïðè÷èíîé, êîòîðàÿ ïîáóäèëà ðàçðàáîò÷èêîâ SQL Server 2005 ê èçìåíåíèÿì, âèäèòñÿ òî, ÷òî ïðè èñïîëüçîâàíèè ñõåìû â êà÷åñòâå âëàäåëüöà îáúåêòà àäìèíèñòðàòîð âñåãäà ñìîæåò èçìåíèòü ñõåìó-âëàäåëüöà îáúåêòà íà äðóãóþ. Åñëè â êà÷åñòâå âëàäåëüöà èñïîëüçóåòñÿ ïîëüçîâàòåëü, òî áåç íåãî èíîãäà íåëüçÿ âûïîëíèòü ñìåíó ïðàâ âëàäåíèÿ îïðåäåëåííûì îáúåêòîì.  ñâÿçè ñ ýòèì â îðãàíèçàöèè âîçíèêàþò ñåðüåçíûå ïðîáëåìû, êîãäà îïðåäåëåííûé ñîòðóäíèê óâîëüíÿåòñÿ, è íåëüçÿ èçìåíèòü âëàäåëüöà îïðåäåëåííîãî îáúåêòà èëè öåëîé áàçû äàííûõ. Ïîìèìî ýòîãî ñóùåñòâóåò òàêæå ïðîáëåìà ñìåíû èìåíè îáúåêòà âî âðåìÿ ñìåíû åãî âëàäåëüöà. Ðàññìîòðèì ýòî íà ïðèìåðå. Âëàäåëüöåì òàáëèöû Table, ðàñïîëîæåííîé â áàçå DataBase, ÿâëÿåòñÿ ïîëüçîâàòåëü User1. Ïîëíîå èìÿ òàáëèöû â òàêîì ñëó÷àå èìååò ñëåäóþùèé âèä: DataBase.User1.Table. Åñëè âëàäåëåö îáúåêòà ñìåíèëñÿ è èì ñòàë, íàïðèìåð, User2, òî ñîîòâåòñòâóþùèì îáðàçîì ñìåíèëîñü òàêæå èìÿ äàííîé òàáëèöû íà DataBase.User2.Table. Òàêèì îáðàçîì, ïðèëîæåíèÿ, â êîòîðûõ âûïîëíåíà ïðèâÿçêà ê îïðåäåëåííîìó âëàäåëüöó äàííîé òàáëèöû, ìîãóò ïîïðîñòó íå ðàáîòàòü èëè ðàáîòàòü íåêîððåêòíî ââèäó òîãî, ÷òî èç-çà ñìåíû îáúåêòîâ ñìåíèëèñü ïîëíûå èìåíà îáúåêòîâ. Äëÿ ðåøåíèÿ ïîäîáíûõ ïðîáëåì ìíîãèì îðãàíèçàöèÿì ïðèõîäèëîñü ïðèáåãàòü ê ðàçðàáîòêå ñòàíäàðòîâ, êîòîðûõ äîëæíû áûëè ïðèäåðæèâàòüñÿ àäìèíèñòðàòîðû è ðàçðàáîò÷èêè áàç äàííûõ.  òàêèõ ñëó÷àÿõ îáû÷íî ñîçäàâàëñÿ êàêîé-ëèáî ïîëüçîâàòåëü (èëè èñïîëüçîâàëñÿ ñèñòåìíûé), îò èìåíè êîòîðîãî è âûïîëíÿëèñü ìíîãèå äåéñòâèÿ â
2.3. Áåçîïàñíîñòü
65
ñèñòåìå. Ýòîò æå ïîëüçîâàòåëü ÿâëÿëñÿ âëàäåëüöåì ïðàêòè÷åñêè âñåõ îáúåêòîâ áàçû äàííûõ. Èñïîëüçîâàíèå ñõåì â êà÷åñòâå âëàäåëüöåâ îáúåêòîâ â SQL Server 2005 äîáàâëÿåò äîïîëíèòåëüíûé óðîâåíü àáñòðàêöèè â îòíîøåíèè âëàäåëüöà îáúåêòà. Òàêèì îáðàçîì, ïîñðåäñòâîì ñõåìû îïðåäåëÿåòñÿ ïîëüçîâàòåëü, êîòîðûé áóäåò âëàäåòü îáúåêòîì (ðèñ. 2.5).
Ðèñ. 2.5. Ñõåìà äîáàâëÿåò äîïîëíèòåëüíûé óðîâåíü àáñòðàêöèè â îòíîøåíèè âëàäåíèÿ îáúåêòîì
Êàê ïîêàçàíî íà ðèñóíêå, âëàäåëüöåì îáúåêòà ÿâëÿåòñÿ ñõåìà, à ïîëüçîâàòåëü, â ñâîþ î÷åðåäü, ÿâëÿåòñÿ âëàäåëüöåì ñõåìû. Ïîäîáíûé óðîâåíü àáñòðàêöèè ïîçâîëÿåò ðåàëèçîâàòü äîïîëíèòåëüíûé óðîâåíü ñâîáîäû â ïðîöåññå ñìåíû âëàäåëüöà îáúåêòà.  ýòîì ñëó÷àå ìîæíî ñìåíèòü êàê ñõåìó-âëàäåëüöà, òàê è ïîëüçîâàòåëÿ, êîòîðûé ÿâëÿåòñÿ âëàäåëüöåì ñõåìû. Âòîðîé ñëó÷àé áîëåå ïðåäïî÷òèòåëåí, ïîñêîëüêó íå âëèÿåò íà èìÿ îáúåêòà. Ïîñëå òîãî êàê ñìåíà âëàäåëüöà ñõåìû áóäåò âûïîëíåíà óñïåøíî, ïîëüçîâàòåëÿ, ðàíåå âëàäåâøåãî îáúåêòàìè, ìîæíî óäàëèòü áåç êàêîãî-ëèáî íåãàòèâíîãî âëèÿíèÿ íà ðàáîòîñïîñîáíîñòü áàçû äàííûõ. Èç-çà òîãî ÷òî ïðîèçîøëà ñìåíà ïîäõîäà ê âëàäåíèþ îáúåêòàìè, èçìåíèëîñü è ïîëíîå èìÿ îáúåêòîâ. Òåïåðü êàæäûé ïîëüçîâàòåëü èìååò ñõåìó ïî óìîë÷àíèþ, êîòîðàÿ àññîöèèðîâàíà ñ äàííûì ïîëüçîâàòåëåì. Âî âðåìÿ îáðàùåíèÿ ê îáúåêòàì, êîòîðûå ñîäåðæàòñÿ â ñõåìå, ñåðâåð SQL ñíà÷àëà ïðîâåðÿåò èìÿ ñîãëàñíî íàèìåíîâàíèþ ñõåìû. Åñëè ïîäîáíîãî èìåíè íå ñóùåñòâóåò, òî âûïîëíÿåòñÿ ïðîâåðêà ñóùåñòâîâàíèÿ îáúåêòà, âëàäåëüöåì êîòîðîãî ÿâëÿåòñÿ ñõåìà, óñòàíîâëåííàÿ ïî óìîë÷àíèþ äëÿ ïîëüçîâàòåëÿ DBO. Ðàññìîòðèì äàííîå óòâåðæäåíèå íà ïðèìåðå. Ïîëüçîâàòåëü User1, äëÿ êîòîðîãî îïðåäåëåíà ñõåìà User1Schema ïî óìîë÷àíèþ, âûïîëíÿåò çàïðîñ íà ïîëó÷åíèå äàííûõ èç òàáëèöû Table1.  ýòîì ñëó÷àå äåéñòâèÿ SQL Server âî âðåìÿ îáðàáîòêè çàïðîñà áóäóò âûãëÿäåòü ñëåäóþùèì îáðàçîì: 1. Âíà÷àëå SQL Server âûïîëíèò ïîèñê òàáëèöû ïî àäðåñó User1Schema.Table1. 2. Åñëè òàêîãî îáúåêòà íå áóäåò íàéäåíî, òî SQL Server âûïîëíèò ïîèñê îáúåêòà ñ èìåíåì DBO.Table1. Ïîäîáíàÿ ôóíêöèîíàëüíîñòü SQL Server 2005 äàåò âîçìîæíîñòü äëÿ ïåðåíîñà ñòàðûõ áàç äàííûõ è ïðèëîæåíèé íà íîâóþ âåðñèþ ïðîäóêòà. Äëÿ ýòîãî äîñòàòî÷íî óñòàíîâèòü â êà÷åñòâå âëàäåëüöà âñåõ îáúåêòîâ ñõåìó DBO.
66
Ãëàâà 2 • Àäìèíèñòðèðîâàíèå SQL Server 2005
Òàê æå êàê SQL Server 2000 ìîã èìåòü íåñêîëüêî ïîëüçîâàòåëåé è ðîëåé, â SQL Server 2005 ìîæåò ñóùåñòâîâàòü íåñêîëüêî ñõåì. Äëÿ êàæäîé ñõåìû îïðåäåëÿåòñÿ ïîëüçîâàòåëü èëè ðîëü, êîòîðàÿ ÿâëÿåòñÿ âëàäåëüöåì äàííîé ñõåìû. Ïðè ýòîì êàæäûé ïîëüçîâàòåëü èìååò ñõåìó, óñòàíîâëåííóþ äëÿ íåãî ïî óìîë÷àíèþ. Âñå îáúåêòû, ïðèíàäëåæàùèå ñõåìå, ñîäåðæàòñÿ â ñõåìå. Äëÿ ñîçäàíèÿ íîâîãî îáúåêòà â êàêîé-ëèáî ñõåìå íåîáõîäèìî, ÷òîáû ïîëüçîâàòåëü èìåë ïðàâà íà ñîçäàíèå îáúåêòîâ (CREATE) â âûáðàííîé áàçå äàííûõ èëè ïðàâà ALTER, CONTROL â âûáðàííîé ñõåìå, â êîòîðîé ñîçäàåòñÿ íîâûé îáúåêò. Äëÿ ðàçãðàíè÷åíèÿ îïåðàöèé, âûïîëíÿåìûõ îò èìåíè ñõåìû èëè îò èìåíè ïîëüçîâàòåëÿ, â SQL Server 2005 ïîÿâèëîñü íåñêîëüêî íîâûõ êîìàíä äëÿ îáúåêòîâ òèïà schema, user, role. Ðàññìîòðèì ñîçäàíèå ñõåìû è åå ñâÿçûâàíèå ñ ïîëüçîâàòåëåì íà ñëåäóþùåì ïðèìåðå: CREAÒÅ LOGIN User1 WITH PASSWORD = 'qwerty7' GO CRÅÀÒÅ USER User1 FOR LOGIN User1 WITH DEFAULT_SCHEMA = User1Schema GO CREAÒÅ SCHEMA User1Schema AUTHORIZATION User1 GO CREAÒÅ TABLE User1Schema.Tablel (col1 int, col2 varchar (100)) GO
 ïåðâîé ñòðîêå ìû ñîçäàåì ó÷åòíóþ çàïèñü äëÿ ïîëüçîâàòåëÿ. Çàòåì ñîçäàåì ïîëüçîâàòåëÿ User1, êîòîðûé áóäåò ÿâëÿòüñÿ âëàäåëüöåì ñõåìû. Îïðåäåëÿåì äëÿ ýòîãî ïîëüçîâàòåëÿ ñõåìó, èñïîëüçóåìóþ ïî óìîë÷àíèþ. Äàííîé ñõåìîé áóäåò User1Schema. Îáðàòèòå âíèìàíèå íà òî, ÷òî ñõåìà åùå íå áûëà ñîçäàíà. Ïîñëå ýòîãî ñîçäàåì ñõåìó User1Schema, êîòîðàÿ áóäåò èñïîëüçîâàòüñÿ ïî óìîë÷àíèþ äàííûì ïîëüçîâàòåëåì.  êà÷åñòâå ïîëüçîâàòåëÿ, ÿâëÿþùåãîñÿ âëàäåëüöåì ñõåìû, îïðåäåëÿåì User1 (ñ ïîìîùüþ êîìàíäû AUTHORIZATION).  êîíöå ñîçäàåì òàáëèöó âíóòðè ïîëüçîâàòåëüñêîé ñõåìû User1Schema. Òåïåðü âëàäåëüöåì òàáëèöû Table1 ÿâëÿåòñÿ ñõåìà User1Schema, êîòîðîé, â ñâîþ î÷åðåäü, âëàäååò ïîëüçîâàòåëü User1. Òàêèì îáðàçîì, ïîëüçîâàòåëü User1 òàêæå ÿâëÿåòñÿ âëàäåëüöåì òàáëèöû Table1.
Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
3
 îòíîøåíèè ìåòîäîâ àäìèíèñòðèðîâàíèÿ c âûõîäîì SQL Server 2005 èçìåíèëîñü ìíîãîå. Ïîÿâèëîñü íåñêîëüêî íîâûõ ïîäñèñòåì è óòèëèò äëÿ óïðîùåíèÿ ïðîöåññà óïðàâëåíèÿ è ðàçðàáîòêè ïðèëîæåíèé. Íåêîòîðûå èç óòèëèò áûëè îáíîâëåíû, ñóùåñòâåííî ïåðåðàáîòàíû èëè çàìåíåíû íîâûìè.  ýòîé ãëàâå ìû ðàññìîòðèì íîâûå è óëó÷øåííûå èíñòðóìåíòû SQL Server, êîòîðûå ïîìîãàþò ïîâûñèòü ïðîèçâîäèòåëüíîñòü è óïðàâëÿåìîñòü ñèñòåì, ðàçðàáîòàòü íîâûå ïðèëîæåíèÿ è âûïîëíèòü òîíêóþ íàñòðîéêó ïðîèçâîäèòåëüíîñòè ñèñòåì íà îñíîâå SQL Server 2005. Íàìè áóäóò ðàññìîòðåíû ñëåäóþùèå èíñòðóìåíòû SQL Server: · SQL Server Configuration Manager; · SQL Server Management Studio; · Business Intelligence Management Studio, à òàêæå äðóãèå èíñòðóìåíòû äëÿ àäìèíèñòðèðîâàíèÿ è ðàçðàáîòêè ïðèëîæåíèé íà îñíîâå SQL Server 2005.
3.1. Óïðàâëåíèå áàçàìè äàííûõ è ñðåäñòâà ðàçðàáîòêè  SQL Server 2005 ïðèìåíÿåòñÿ îãðîìíîå êîëè÷åñòâî èíñòðóìåíòîâ, èñïîëüçóåìûõ àäìèíèñòðàòîðàìè âìåñòå ñ ïðåäûäóùèìè âåðñèÿìè ýòîãî ïðîãðàììíîãî ïðîäóêòà.  ýòîì ðàçäåëå ìû áîëåå äåòàëüíî ðàññìîòðèì íîâîââåäåíèÿ, êîòîðûå ïîÿâèëèñü â SQL Server 2005.
3.1.1. Óòèëèòà SQL Server Configuration Manager Îäíî èç îñíîâíûõ íîâîââåäåíèé SQL Server 2005 — ýòî òî, ÷òî òåïåðü íåò èíñòðóìåíòà Server Manager, ïîçâîëÿâøåãî àâòîìàòèçèðîâàòü ðàáîòó àäìèíèñòðàòîðà.  ïðåäûäóùèõ âåðñèÿõ SQL Server äàííûé èíñòðóìåíò óñòàíàâëèâàëñÿ âìåñòå ñ ñåðâåðîì. Îí ïîçâîëÿë ïðîñìàòðèâàòü â ãðàôè÷åñêîì ðåæèìå ñîñòîÿíèå ìíîãèõ
68
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
ñåðâèñîâ SQL Server, âêëþ÷àÿ ñåðâèñ SQL Server, ñåðâèñ ïðåîáðàçîâàíèÿ äàííûõ, à òàêæå ñòàòóñ àãåíòà ñåðâèñîâ. Èíñòðóìåíò Server Manager òàêæå èñïîëüçîâàëñÿ äëÿ çàïóñêà è îñòàíîâêè ïåðå÷èñëåííûõ ñåðâèñîâ. Òåïåðü ôóíêöèè Server Manager âûïîëíÿåò äðóãîé èíñòðóìåíò — SQL Server Configuration Manager. Äàííûé èíñòðóìåíò ïðåäñòàâëÿåò ñîáîé êîíñîëü, ê êîòîðîé ìîæíî ïîëó÷èòü äîñòóï ñ ïîìîùüþ MMC. Èíòåðôåéñ SQL Server Configuration Manager ïðèâåäåí íà ðèñ. 3.1.
Ðèñ. 3.1. Èíòåðôåéñ óòèëèòû SQL Server Configuration Manager
Òàê æå êàê èíñòðóìåíò Server Manager ïðåäûäóùèõ âåðñèé SQL Server, íîâûé èíñòðóìåíò SQL Server Configuration Manager ïîçâîëÿåò íàñòðàèâàòü ñåðâèñû SQL Server. Ñ ïîìîùüþ SQL Server Configuration Manager ìîæíî óïðàâëÿòü ðàáîòîé ñëåäóþùèõ ñåðâèñîâ: · SQL Server; · àãåíò ñåðâèñîâ SQL; · ñåðâèñû àíàëèòèêè; · ñåðâèñû îò÷åòîâ; · ñåðâèñû ïðåîáðàçîâàíèÿ äàííûõ; · ñåðâèñ ïîëíîòåêñòîâîãî ïîèñêà. Äëÿ òîãî ÷òîáû íà÷àòü ðàáîòó ñ îïðåäåëåííûì ñåðâèñîì (êîòîðûé áûë óñòàíîâëåí â ñèñòåìå), íåîáõîäèìî â ëåâîé ÷àñòè SQL Server Configuration Manager âûáðàòü äåðåâî ñîîòâåòñòâóþùåãî ñåðâèñà.  ýòî âðåìÿ â ïðàâîé ÷àñòè SQL Server Configuration Manager áóäåò îòîáðàæåíà èíôîðìàöèÿ î âûáðàííîì ñåðâèñå, âêëþ÷àÿ òåêóùèé ñòàòóñ ñåðâèñà è ðàñïèñàíèå çàïóñêà. Óïðàâëåíèå ñåðâèñàìè SQL Server
3.1. Óïðàâëåíèå áàçàìè äàííûõ è ñðåäñòâà ðàçðàáîòêè
69
íè÷åì íå îòëè÷àåòñÿ îò ïîäîáíûõ äåéñòâèé ñ äðóãèìè ñåðâèñàìè, çàïóùåííûìè íà êîìïüþòåðå. Âû ìîæåòå âûïîëíèòü ñ âûáðàííûì ñåðâèñîì ñëåäóþùèå äåéñòâèÿ: · çàïóñê; · îñòàíîâêà; · ïàóçà; · ïåðåçàïóñê; · ïðîäîëæåíèå âûïîëíåíèÿ. Äëÿ ýòîãî âûáåðèòå îäíó èç êîìàíä â êîíòåêñòíîì ìåíþ, êîòîðîå ïîÿâëÿåòñÿ ïðè ùåë÷êå ïðàâîé êíîïêîé ìûøè íà âûáðàííîì ñåðâèñå.
3.1.2. SQL Server Management Studio (SQL SMS) Server Manager — ýòî íå åäèíñòâåííûé èíñòðóìåíò, êîòîðûé ïîäâåðãñÿ êîðåííûì èçìåíåíèÿì â SQL Server 2005. Èíñòðóìåíò SQL Server Enterprise Manager, êîòîðûé ÿâëÿëñÿ, ïîæàëóé, îñíîâíûì èíñòðóìåíòîì àäìèíèñòðàòîðà ñåðâåðà SQL âåðñèé 7.0 è 2000, òåïåðü çàìåíåí íà SQL Server Management Studio (SQL SMS). Íîâûé èíñòðóìåíò â SQL Server 2005 âûïîëíÿåò íå òîëüêî ôóíêöèè SQL Server Enterprise Manager — îí òàêæå âûñòóïàåò â ðîëè àíàëèçàòîðà çàïðîñîâ, âçÿâ íà ñåáÿ ôóíêöèè Query Analyzer, ðàíåå àêòèâíî èñïîëüçîâàâøåãîñÿ â SQL Server âåðñèé 7.0 è 2000. Ïîìèìî SQL Server Management Studio â SQL Server 2005 èìååòñÿ äîïîëíèòåëüíûé íàáîð èíñòðóìåíòîâ, ïîçâîëÿþùèõ àâòîìàòèçèðîâàòü ðàáîòó àäìèíèñòðàòîðà áàç äàííûõ. Ñðåäè íèõ ñòîèò âûäåëèòü Profiler, Database Tuning Advisor è Administrative Console. Ñòîèò çàìåòèòü, ÷òî SQL Server Management Studio ðàäèêàëüíî îòëè÷àåòñÿ îò ñâîåãî ïðåäøåñòâåííèêà. Òåïåðü ýòîò èíñòðóìåíò âêëþ÷àåò â ñåáÿ áîëüøóþ ÷àñòü ôóíêöèîíàëüíîñòè, êîòîðàÿ áûëà ïðèñóùà SQL Server Enterprise Manager è Query Analyzer, ïðè ýòîì ðàçâèâàÿ åå â ñîîòâåòñòâèè ñ âîçðîñøèìè ïîòðåáíîñòÿìè àäìèíèñòðàòîðîâ SQL Server 2005. SQL Server Management Studio óñòàíàâëèâàåòñÿ âìåñòå ñ SQL Server 2005. Äëÿ òîãî ÷òîáû çàïóñòèòü äàííîå ïðèëîæåíèå, âûáåðèòå â ìåíþ Start4Programs4Microsoft SQL Server4 SQL Server Management Studio.  ðåçóëüòàòå ýòîãî áóäåò îòêðûòî îñíîâíîå îêíî SQL Server Management Studio (ðèñ. 3.2). Ñòîèò çàìåòèòü, ÷òî ñïåöèàëèñòû Microsoft ïîçàáîòèëèñü îá îáðàòíîé ñîâìåñòèìîñòè ñðåäñòâ ñîçäàíèÿ çàïðîñîâ è óïðàâëåíèÿ SQL Server. Ïîýòîìó óòèëèòà SQL Server Management Studio ìîæåò áûòü òàêæå èñïîëüçîâàíà ñ SQL Server âåðñèé 7.0 è 2000. Îäíàêî äàííûé èíñòðóìåíò íå ìîæåò èñïîëüçîâàòüñÿ ñ SQL Server 6.5 èëè áîëåå ðàííèìè ïðîãðàììíûìè ïðîäóêòàìè ýòîé ëèíåéêè. Ñîâìåñòèìîñòü áûëà áû íåïîëíîé, åñëè áû íåëüçÿ áûëî èñïîëüçîâàòü SQL Server Enterprise Manager äëÿ óïðàâëåíèÿ è íàñòðîéêè ðàáîòû SQL Server 2005. Ïîäîáíàÿ ñîâìåñòèìîñòü òàêæå ñóùåñòâóåò. SQL Server Enterprise Manager âåðñèé 7.0 è 2000 òàêæå ìîæåò èñïîëüçîâàòüñÿ äëÿ íàñòðîéêè ðàáîòû SQL Server 2005. Îäíàêî èç-çà çíà÷èòåëüíûõ àðõèòåêòóðíûõ ðàçëè÷èé ìåæäó äàííûìè âåðñèÿìè ïðîãðàììíûõ ïðîäóêòîâ ñïåöèàëèñòû Microsoft íå ðåêîìåíäóþò èñïîëüçîâàòü SQL Server
70
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
Enterprise Manager äëÿ íàñòðîéêè è óïðàâëåíèÿ ðàáîòîé SQL Server 2005. Ïðè ýòîì èñïîëüçîâàíèå SQL Server Enterprise Manager íå ïîçâîëèò çàäåéñòâîâàòü âñå íîâûå ïðåèìóùåñòâà SQL Server 2005, êîòîðûå ïîÿâèëèñü â ïîñëåäíèõ âåðñèÿõ ýòîãî ïðîãðàììíîãî ïðîäóêòà. Ïîìèìî ýòîãî âû íå ñìîæåòå ïðîñìàòðèâàòü ðÿä ñèñòåìíûõ òàáëèö, à ïðîñìîòð íåêîòîðûõ èç íèõ âîîáùå áóäåò ïðèâîäèòü ê âîçíèêíîâåíèþ îøèáîê â ñèñòåìå. Èìåííî ïîýòîìó ñïåöèàëèñòû Microsoft ðåêîìåíäóþò èñïîëüçîâàòü SQL Server Management Studio äëÿ óïðàâëåíèÿ ñèñòåìàìè, â êîòîðûõ ïðèñóòñòâóþò SQL Server ðàçëè÷íûõ âåðñèé (íàïðèìåð, 2000 è 2005), ïîñêîëüêó â ýòîì ñëó÷àå äîñòèãàåòñÿ îäíîðîäíîñòü óòèëèò óïðàâëåíèÿ SQL Server, à òàêæå âîçìîæíî èñïîëüçîâàòü âñå ïðåèìóùåñòâà, êîòîðûå ïðåäîñòàâëÿåò íîâàÿ âåðñèÿ ýòîãî ïðîãðàììíîãî ïðîäóêòà.
Ðèñ. 3.2. Èíòåðôåéñ SQL Server Management Studio
Èíñòðóìåíò SQL Server Management Studio ñòàë åùå áîëåå áëèçîê ê ñðåäå ðàçðàáîòêè Visual Studio. Ýòîò ïðîãðàììíûé ïðîäóêò ïîñòðîåí íà îñíîâå ñïåöèàëèçèðîâàííîé âåðñèè Visual Studio 2005 IDE (Interactive Development Environment). Òàê æå êàê è åãî ñòàðøèé áðàò, SQL Server Management Studio ïîääåðæèâàåò ñîçäàíèå ïðîãðàììíûõ ïðîåêòîâ, èõ îòëàäêó è èíñòàëëÿöèþ. Çà ñ÷åò èíòåãðàöèè ñ Visual Studio 2005 âû ìîæåòå èñïîëüçîâàòü ýòîò ïðîäóêò äëÿ ñîçäàíèÿ ïðîãðàììíîãî êîäà íà ðàçëè÷íûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ, âõîäÿùèõ â ñîñòàâ .NET Framework. Èíòåãðàöèÿ ñ èíñòðóìåíòîì Visual SourceSafe ïîçâîëèò äîáèòüñÿ ïîëíîãî êîíòðîëÿ íàä âåðñèÿìè ïðîãðàììíûõ ïðîäóêòîâ. Íåñìîòðÿ íà èíòåãðàöèþ ñ Visual Studio 2005, â SQL Server Management Studio âû íå ñìîæåòå êîìïèëèðîâàòü ïðèëîæåíèÿ, ñîäåðæàùèå âñòàâêè êîäà íà ÿçûêàõ C#, J#
3.1. Óïðàâëåíèå áàçàìè äàííûõ è ñðåäñòâà ðàçðàáîòêè
71
èëè VB.NET. Âàì íåîáõîäèìî èñïîëüçîâàòü äëÿ ýòèõ öåëåé Visual Studio 2005. SQL Server Management Studio ïîçâîëÿåò ñîçäàâàòü ïðèëîæåíèÿ ñ èñïîëüçîâàíèåì òåõíîëîãèé MX, MDX, T-SQL è XMLA. Èíñòðóìåíò SQL Server Management Studio èìååò ðÿä ïðåèìóùåñòâ ïî ñðàâíåíèþ ñ êîìáèíàöèåé èíñòðóìåíòîâ SQL Server Enterprise Manager è Query Analyzer. Îíè çàêëþ÷àþòñÿ â ñëåäóþùåì: 1.  SQL Server Management Studio ïî ñðàâíåíèþ ñ SQL Server Enterprise Manager óâåëè÷åíî êîëè÷åñòâî îáúåêòîâ, ñ êîòîðûìè ìîæåò ðàáîòàòü ýòîò èíñòðóìåíò.  ïðåäûäóùèõ âåðñèÿõ êîëè÷åñòâî îáúåêòîâ âñåãäà ïîäñ÷èòûâàëîñü. Äëÿ ìíîãèõ ïðèëîæåíèé, êîòîðûå ñîçäàâàëèñü äëÿ ðàáîòû íà ìàëûõ è ñðåäíèõ ïðåäïðèÿòèÿõ, ýòî íå ÿâëÿëîñü ïðîáëåìîé. Îäíàêî â îòíîøåíèè áîëüøèõ áàç äàííûõ ñ îãðîìíûì ÷èñëîì îáúåêòîâ äàííîå îãðàíè÷åíèå íå òîëüêî ðàçäðàæàëî, íî è ïðåïÿòñòâîâàëî ñîçäàíèþ ìíîãèõ äîñòàòî÷íî ñëîæíûõ ïðèëîæåíèé, êîòîðûå îïåðèðîâàëè áîëüøèì ÷èñëîì îáúåêòîâ áàç äàííûõ. SQL Server Enterprise Manager ðàíåå ìîã äîñòàòî÷íî äîëãî âûïîëíÿòü ñ÷èòûâàíèå îáúåêòîâ è èõ ñâîéñòâ â áàçå äàííûõ.  ýòîì îòíîøåíèè SQL Server Management Studio ðàáîòàåò çíà÷èòåëüíî áûñòðåå çà ñ÷åò òîãî, ÷òî âî âðåìÿ ñ÷èòûâàíèÿ îí íå âûâîäèò ïîëíóþ èíôîðìàöèþ îá îáúåêòàõ, à äåëàåò ýòî òîëüêî òîãäà, êîãäà ïîëüçîâàòåëü ïîñòàðàåòñÿ ðàçâåðíóòü ñïèñîê ñãðóïïèðîâàííûõ îáúåêòîâ. Ïîñëå ýòîãî âûïîëíÿåòñÿ äîïîëíèòåëüíîå ñ÷èòûâàíèå èç áàçû äàííûõ è äàííûå âûâîäÿòñÿ íà ýêðàí ñ ïîìîùüþ îáîçðåâàòåëÿ îáúåêòîâ. Ýòî ïîçâîëÿåò óâåëè÷èòü ñêîðîñòü ñ÷èòûâàíèÿ îáúåêòîâ è èõ ñâîéñòâ. 2. Äèàëîãîâûå îêíà, êîòîðûå îòîáðàæàþòñÿ â SQL Server Management Studio, íå ÿâëÿþòñÿ ìîäàëüíûìè. Ýòî ïîçâîëÿåò ðåàëèçîâàòü áîëüøóþ ñâîáîäó äëÿ ðàçðàáîò÷èêà, ïîñêîëüêó îò íåãî íå òðåáóåòñÿ îáÿçàòåëüíî çàâåðøèòü äèàëîã, íàæàâ êàêóþ-ëèáî êëàâèøó, ïåðåä òåì êàê ïðîäîëæèòü ðàáîòó. Ïðàêòè÷åñêè âñå äèàëîãîâûå îêíà, êîòîðûå ñóùåñòâîâàëè â SQL Server Enterprise Manager, áûëè ìîäàëüíûìè, ÷òî ÷àñòî ðàçäðàæàëî è ìåøàëî ïëîäîòâîðíîé ðàáîòå. Òåïåðü èñïîëüçîâàíèå íåìîäàëüíûõ îêîí ïîçâîëÿåò àäìèíèñòðàòîðó áàç äàííûõ ïðîäîëæàòü ñâîþ ðàáîòó äàæå òîãäà, êîãäà îäíî èç äèàëîãîâûõ îêîí îñòàåòñÿ îòêðûòûì. 3. Óòèëèòà SQL Server Management Studio âûñòóïàåò â êà÷åñòâå îñíîâíîãî èíñòðóìåíòà äëÿ óïðàâëåíèÿ SQL Server 2005, à òàêæå äëÿ ìíîãèõ äðóãèõ óòèëèò ýòîãî ïðîãðàììíîãî ïðîäóêòà. Äëÿ ïîëíîöåííîé ðàáîòû â SQL Server Management Studio èñïîëüçóåòñÿ íàáîð îêîí, ïîçâîëÿþùèõ àâòîìàòèçèðîâàòü ðàáîòó ïðèëîæåíèÿ: · îêíî Solutions Explorer ðåàëèçóåò äëÿ ðàçðàáîò÷èêà âîçìîæíîñòü ïðîñìàòðèâàòü èñõîäíûé êîä è ãðóïïèðîâàòü åãî â âèäå ëîãè÷åñêîé êîëëåêöèè, êîòîðàÿ ïðè íåîáõîäèìîñòè ìîæåò áûòü ïåðåíåñåíà íà äðóãóþ áàçó äàííûõ; · îêíî Registered Servers ïîçâîëÿåò âûáðàòü ñåðâåð SQL, ðàáîòà ñ êîòîðûì áóäåò âûïîëíÿòüñÿ;
72
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
· îêíî Object Explorer ïîçâîëÿåò âûïîëíÿòü ðàáîòó ñ îáúåêòàìè âûáðàííîãî ñåðâåðà, ïðîñìàòðèâàòü è èçìåíÿòü èõ ñâîéñòâà; · îêíî Report Designer ïîçâîëÿåò ñîçäàâàòü è íàñòðàèâàòü îò÷åòû SQL Server 2005. Áîëåå äåòàëüíî äðóãèå èíñòðóìåíòû è îêíà SQL Server Management Studio ìû ðàññìîòðèì â ðàçäåëàõ 3.1.3 «Îêíî Solution Explorer SQL SMS » — 3.1.6 «Îêíî Object Explorer SQL SMS».
3.1.3. Îêíî Solution Explorer SQL SMS Îêíî Solution Explorer — ýòî îñíîâíîå îêíî äëÿ ðàáîòû ñ îòäåëüíûìè êîìïîíåíòàìè ñîçäàâàåìîãî ïðèëîæåíèÿ. Îíî ïî óìîë÷àíèþ îòîáðàæàåòñÿ â ïðàâîì âåðõíåì óãëó SQL Server Management Studio (ðèñ. 3.3).  îêíå Solution Explorer îòîáðàæàåòñÿ â âèäå äðåâîïîäîáíîé ñòðóêòóðû íàáîð èñïîëüçóåìûõ îáúåêòîâ, ñîåäèíåíèé è çàïðîñîâ ê áàçå äàííûõ. Âñå ýòî ñîñòàâëÿåò ïðîåêò, íàä êîòîðûì âåäåòñÿ ðàáîòà. Êîðíåâîé ýëåìåíò äåðåâà íîñèò íàçâàíèå ðåøåíèÿ. Ïî óìîë÷àíèþ åìó ïðèñâàèâàåòñÿ çíà÷åíèå Solution 1, îäíàêî ðàçðàáîò÷èê ìîæåò èçìåíèòü ýòî èìÿ íà ëþáîå äðóãîå, èñïîëüçóÿ îêíî ñâîéñòâ ðåøåíèÿ.
Ðèñ. 3.3. Îêíà SQL Server Management Studio
Äàëåå â âèäå âåòâåé äåðåâà îòîáðàæàþòñÿ òåêóùèå ïðîåêòû. Ðåøåíèå ìîæåò âêëþ÷àòü â ñâîé ñîñòàâ îäèí èëè íåñêîëüêî ïðîåêòîâ. Ïðè ýòîì îáúåêòû, âûñòóïàþùèå â êà÷åñòâå ëèñòüåâ äåðåâà, ìîãóò áûòü ñâÿçàíû ñ îäíèì èç ïðîåêòîâ èëè íàïðÿìóþ ñ ðåøåíèåì. Ëèñòüÿ îáû÷íî ïðåäñòàâëÿþò ñîáîé ôàéëû, êîòîðûå
3.1. Óïðàâëåíèå áàçàìè äàííûõ è ñðåäñòâà ðàçðàáîòêè
73
ìîãóò ñîäåðæàòü èíôîðìàöèþ íå òîëüêî îá îïðåäåëåííîì îáúåêòå, íî è î öåëîì êëàññå ïîäîáíûõ îáúåêòîâ. Ýòè êëàññû ìîãóò ñîçäàâàòüñÿ ðàçðàáîò÷èêàìè íà îäíîì èç ñëåäóþùèõ ÿçûêîâ çàïðîñîâ: Analysis Server, XMLA èëè T-SQL. Óòèëèòà SQL Server Management Studio ïîääåðæèâàåò íåñêîëüêî ðàçëè÷íûõ òèïîâ ïðîåêòîâ: · SQL Server Scripts — ýòîò òèï ïðîåêòà èñïîëüçóåòñÿ â SQL Server äëÿ òîãî, ÷òîáû âûïîëíèòü ëîãè÷åñêóþ ãðóïïèðîâêó ñöåíàðèåâ T-SQL è ñîåäèíåíèé ê áàçå äàííûõ. Íàèáîëåå âàæíûì ïðèìåíåíèåì äàííîãî òèïà ïðîåêòà òàêæå âèäèòñÿ âîçìîæíîñòü âûïîëíåíèÿ ãðóïïèðîâêè DDL-ñöåíàðèåâ; · SQL Mobile Scripts — äàííûé òèï ïðîåêòà èñïîëüçóåòñÿ äëÿ ãðóïïèðîâêè çàïðîñîâ è ñîåäèíåíèé äëÿ áàç äàííûõ íà îñíîâå SQL Server CE Edition; · Analysis Server Scripts — äàííûé òèï ïðîåêòà èñïîëüçóåòñÿ äëÿ ëîãè÷åñêîé ãðóïïèðîâêè ñöåíàðèåâ T-SQL, ñîçäàííûõ äëÿ îáðàáîòêè ñåðâåðîì àíàëèòèêè. Òàêæå ìîæåò ñîäåðæàòü MDX- è XMLA-ñöåíàðèè. Äëÿ ñîçäàíèÿ íîâîãî ïðîåêòà âîñïîëüçóéòåñü îêíîì Add New Project (ðèñ. 3.4).
Ðèñ. 3.4. Ñîçäàíèå íîâîãî ïðîåêòà â SQL Server Management Studio
3.1.4. Îêíî Properties SQL SMS Îêíî Properties ðàñïîëàãàåòñÿ â ïðàâîì íèæíåì óãëó SQL Server Management Studio (ñì. ðèñ. 3.3) è ïîçâîëÿåò íàñòðàèâàòü è ïðîñìàòðèâàòü ñâîéñòâà îáúåêòà, âûáðàííîãî â îêíå Solution Explorer. Äàííîå îêíî ïîìèìî ïðîñìîòðà çíà÷åíèé ñâîéñòâ âûáðàííîãî îáúåêòà ïîçâîëÿåò ðåøàòü öåëûé ðÿä ðàçíîðîäíûõ çàäà÷.
74
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
Âî-ïåðâûõ, ñ åãî ïîìîùüþ âû ìîæåòå óñòàíàâëèâàòü íàèìåíîâàíèå ðåøåíèÿ, ïðîåêòà èëè îòäåëüíîãî îáúåêòà. Âî-âòîðûõ, ñ ïîìîùüþ îêíà Properties ìîæíî êîíòðîëèðîâàòü âûïîëíåíèå DTS-ïàêåòîâ. Íàêîíåö, îñíîâíàÿ çàäà÷à, äëÿ ðåøåíèÿ êîòîðîé èñïîëüçóåòñÿ îêíî Properties, — ýòî áûñòðîå èçìåíåíèå ñâîéñòâ äëÿ íåñêîëüêèõ îáúåêòîâ îäíîâðåìåííî. Äëÿ òîãî ÷òîáû ñäåëàòü ýòî, âûïîëíèòå ñëåäóþùèå äåéñòâèÿ: 1.  îêíå Solution Explorer âûäåëèòå îáúåêòû, äëÿ êîòîðûõ îäíîâðåìåííî íåîáõîäèìî èçìåíèòü çíà÷åíèå âûáðàííîãî ñâîéñòâà. Äëÿ ýòîãî ìîæíî âîñïîëüçîâàòüñÿ êëàâèøàìè Shift èëè Ctrl. 2. Èçìåíèòå âûáðàííîå ñâîéñòâî â îêíå Properties. Ïîñëå ýòîãî çíà÷åíèå ñâîéñòâà áóäåò èçìåíåíî äëÿ âñåõ âûäåëåííûõ îáúåêòîâ.
3.1.5. Îêíî Registered Servers SQL SMS  ñèñòåìå, â êîòîðîé âåäåòñÿ ðàçðàáîòêà ïðèëîæåíèé, ìîæåò èñïîëüçîâàòüñÿ íåñêîëüêî çàðåãèñòðèðîâàííûõ ñåðâåðîâ. Äëÿ ðàçðàáîòêè ïðèëîæåíèé è íàñòðîéêè íåñêîëüêèõ ñåðâåðîâ ìîæåò èñïîëüçîâàòüñÿ îäíà óòèëèòà SQL Server Management Studio. Äëÿ òîãî ÷òîáû àâòîìàòèçèðîâàòü ðàçðàáîòêó è äàòü ðàçðàáîò÷èêó âîçìîæíîñòü âûáèðàòü ñåðâåð, äëÿ êîòîðîãî âûïîëíÿþòñÿ ðàçðàáîòêè ïðèëîæåíèé, èñïîëüçóåòñÿ îêíî Registered Servers. Ýòî îêíî ñîäåðæèò ñïèñîê çàðåãèñòðèðîâàííûõ ñåðâåðîâ SQL è ïîçâîëÿåò âûïîëíÿòü ëîãè÷åñêóþ ãðóïïèðîâêó íåñêîëüêèõ ñåðâåðîâ äëÿ óïðîùåíèÿ ïðîöåññà âçàèìîäåéñòâèÿ ñ ãðóïïîé ñåâåðîâ. Ïåðåä òåì êàê íà÷àòü ðàáîòó ñ âûáðàííûì ñåðâåðîì, íåîáõîäèìî åãî çàðåãèñòðèðîâàòü â îêíå Registered Servers. Äëÿ ýòîãî ùåëêíèòå ïðàâîé êíîïêîé ìûøè íà âûáðàííîì ñåðâåðå â îêíå Registered Servers è âûáåðèòå â êîíòåêñòíîì ìåíþ êîìàíäó New4Server Registration. Ïîñëå ýòîãî ñåðâåð áóäåò çàðåãèñòðèðîâàí è äîñòóïåí äëÿ èñïîëüçîâàíèÿ. Ðàçðàáîò÷èêàìè ÷àñòî èñïîëüçóåòñÿ ëîãè÷åñêàÿ ãðóïïèðîâêà ñåðâåðîâ. Äëÿ òîãî ÷òîáû ñîçäàòü ëîãè÷åñêóþ ãðóïïó ñåðâåðîâ, âûïîëíèòå ñëåäóþùèå äåéñòâèÿ: 1. Ùåëêíèòå ïðàâîé êíîïêîé ìûøè â îêíå Registered Servers è âûáåðèòå â êîíòåêñòíîì ìåíþ êîìàíäó New4Server Group. Ðåçóëüòàòîì ýòîãî áóäåò ñîçäàíèå íîâîé ãðóïïû. 2. Ââåäèòå èìÿ ãðóïïû è ïåðåìåñòèòå â äàííóþ ãðóïïó íåîáõîäèìûå ñåðâåðû, èñïîëüçóÿ óêàçàòåëü ìûøè. Òàêæå ÷àñòî âîçíèêàåò íåîáõîäèìîñòü ïåðåíîñà ñïèñêà çàðåãèñòðèðîâàííûõ ñåðâåðîâ ìåæäó îòäåëüíûìè êîïèÿìè SQL Server Management Studio. Ýòî ïîçâîëèò âàì èçáåæàòü ðó÷íîãî ââîäà êàæäîãî ñåðâåðà è åãî ðåãèñòðàöèè, à òàêæå óñêîðèò ïðîöåññ ñîçäàíèÿ ñïèñêà çàðåãèñòðèðîâàííûõ ñåðâåðîâ â òîì ñëó÷àå, åñëè òàêèõ ñåðâåðîâ â ñèñòåìå äîñòàòî÷íî ìíîãî. Äî ðåãèñòðàöèè ñåðâåðà â ñèñòåìå âû íå ñìîæåòå óïðàâëÿòü åãî ñåðâèñàìè. Ïîñëå âûïîëíåíèÿ ðåãèñòðàöèè âñå ñåðâèñû ñåðâåðà ñòàíîâÿòñÿ äîñòóïíû äëÿ óïðàâëåíèÿ. Âû ìîæåòå çàïóñêàòü, îñòàíàâëèâàòü, ïðèîñòàíàâëèâàòü è îòêëþ÷àòü âûïîëíåíèå ñåðâèñà. Òàêæå ïîñëå âûïîëíåíèÿ ïðîöåäóðû ðåãèñòðàöèè ìîæíî ðàáîòàòü ñ îáúåêòàìè âûáðàííîãî ñåðâåðà. Äëÿ ýòîãî äîñòàòî÷íî äâàæäû ùåëê-
3.1. Óïðàâëåíèå áàçàìè äàííûõ è ñðåäñòâà ðàçðàáîòêè
75
íóòü íà âûáðàííîì ñåðâåðå. Ïîñëå ýòîãî áóäåò âûïîëíåíî ñîåäèíåíèå ñ ñåðâåðîì, è ñïèñîê äîñòóïíûõ îáúåêòîâ îòîáðàçèòñÿ â îêíå Object Explorer.
3.1.6. Îêíî Object Explorer SQL SMS Îêíî Object Explorer óòèëèòû SQL Server Management Studio ïîçâîëÿåò ðåàëèçîâàòü òàêîé æå íàáîð äåéñòâèé, ÷òî è óòèëèòà SQL Server Enterprise Manager â ïðåäûäóùèõ âåðñèÿõ SQL Server. Äàííîå îêíî îòîáðàæàåòñÿ â ëåâîé íèæíåé ÷àñòè îêíà óòèëèòû SQL Server Management Studio (ñì. ðèñ. 3.3) è ïîçâîëÿåò âûïîëíÿòü çàïóñê è îñòàíîâêó ñåðâåðà, ñîçäàíèå áàç äàííûõ, èõ ñîåäèíåíèå è îòêëþ÷åíèå, à òàêæå íàñòðîéêó ñâîéñòâ ñåðâåðà, ñîçäàíèå îáúåêòîâ áàç äàííûõ (òàêèõ, êàê ïðåäñòàâëåíèÿ, õðàíèìûå ïðîöåäóðû è òàáëèöû), ãåíåðàöèþ ñöåíàðèåâ T-SQL, óïðàâëåíèå ïðàâàìè äîñòóïà ê îáúåêòàì, ìîíèòîðèíã ðàáîòû ñåðâåðà, ïðîñìîòð ñèñòåìíûõ æóðíàëîâ, íàñòðîéêó ìåõàíèçìà ðåïëèêàöèè è ìíîãîå äðóãîå. Äëÿ òîãî ÷òîáû íà÷àòü ðàáîòó ñ îáúåêòàìè, êîòîðûå îòîáðàæàþòñÿ â îêíå Object Explorer, ùåëêíèòå íà âûáðàííîì îáúåêòå ïðàâîé êíîïêîé ìûøè è âûáåðèòå â êîíòåêñòíîì ìåíþ òðåáóåìûé ïóíêò.  êîíòåêñòíîì ìåíþ îòîáðàæàåòñÿ óíèêàëüíûé íàáîð ñâîéñòâ äëÿ êàæäîãî îáúåêòà. Òàêæå êîíòåêñòíîå ìåíþ ïîçâîëÿåò âûïîëíèòü îäíî èç ñëåäóþùèõ äåéñòâèé ñ îáúåêòîì: · óäàëåíèå; · ïåðåèìåíîâàíèå; · ñîçäàíèå íîâîé òàáëèöû; · ïîäêëþ÷åíèå; · ïðîñìîòð çàâèñèìîñòåé òàáëèöû; · îòêëþ÷åíèå; · íàñòðîéêà ñâîéñòâ îáúåêòà; · ñîêðàùåíèå; · èçìåíåíèå òàáëèöû; · ðåçåðâíîå êîïèðîâàíèå áàçû äàííûõ; · âîññòàíîâëåíèå áàçû äàííûõ èç ðåçåðâíîé êîïèè è äðóãèå äåéñòâèÿ. Ñîñòàâ êîíòåêñòíîãî ìåíþ è, ñîîòâåòñòâåííî, íàáîð äîñòóïíûõ äåéñòâèé çàâèñèò îò òèïà âûáðàííîãî îáúåêòà. Ïîæàëóé, ñàìûì ãëàâíûì ïðåèìóùåñòâîì îêíà Object Explorer ÿâëÿåòñÿ âîçìîæíîñòü ãåíåðèðîâàòü ñöåíàðèè ñîçäàíèÿ îòîáðàæàåìûõ â íåì îáúåêòîâ. Ýòî óïðîùàåò è óñêîðÿåò ïðîöåññ ñîçäàíèÿ ïðèëîæåíèé. Äëÿ àâòîìàòèçàöèè ýòîé îïåðàöèè ïðåäóñìîòðåíî èñïîëüçîâàíèå ìàñòåðà ñöåíàðèåâ (óòèëèòà Script Wizard). Ýòî ñðåäñòâî àâòîìàòèçàöèè ïîçâîëÿåò ñîçäàâàòü ðåçåðâíóþ êîïèþ áàçû äàííûõ, ñîçäàâàòü òåñòîâóþ áàçó äàííûõ èëè íåîáõîäèìûé îáúåêò. Èñïîëüçóÿ óòèëèòó Script Wizard äëÿ íåñêîëüêèõ îáúåêòîâ, ìîæíî ðàçðàáîòàòü ëèáî îòäåëüíûé ñöåíàðèé äëÿ ñîçäàíèÿ êàæäîãî îáúåêòà, ëèáî îáùèé ñöåíàðèé äëÿ ñîçäàíèÿ íåñêîëüêèõ îáúåêòîâ îäíîâðåìåííî. Ïðè ýòîì ðåçóëüòèðóþùèé ñöåíàðèé ìîæåò áûòü âûâåäåí â îòäåëüíûé ôàéë, â áóôåð îáìåíà èëè â ðåäàêòîð çàïðîñîâ SQL Server Management Studio.
76
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
3.1.7. Óòèëèòà Business Intelligence Development Studio (BIDS) Óòèëèòà Business Intelligence Development Studio (BIDS) èñïîëüçóåòñÿ äëÿ ñîçäàíèÿ ïðèëîæåíèé àíàëèòèêè. Èíòåðôåéñ ýòîãî ïðèëîæåíèÿ î÷åíü ïîõîæ íà ïðèëîæåíèå SQL Server Management Studio, îäíàêî èìååò ðÿä îòëè÷èé. Íàïðèìåð, SQL Server Management Studio ìîæåò èñïîëüçîâàòüñÿ íå òîëüêî äëÿ ðàçðàáîòêè ïðèëîæåíèé, íî è äëÿ ðåøåíèÿ àäìèíèñòðàòèâíûõ çàäà÷, â òî âðåìÿ êàê Business Intelligence Development Studio ìîæåò èñïîëüçîâàòüñÿ äëÿ ñîçäàíèÿ ïðèëîæåíèé àíàëèòè÷åñêîé îáðàáîòêè äàííûõ è ðåøåíèÿ äðóãèõ çàäà÷. Èíñòðóìåíò Business Intelligence Development Studio èñïîëüçóåòñÿ äëÿ ñîçäàíèÿ ïðèëîæåíèé, êîòîðûå â äàëüíåéøåì áóäóò âçàèìîäåéñòâîâàòü ñ ñåðâèñàìè àíàëèòèêè SQL Server 2005. C ïîìîùüþ ýòîé óòèëèòû ðàçðàáîò÷èêè ìîãóò ñîçäàâàòü ïðîåêòû, ñîçäàâàòü è ðàçâîðà÷èâàòü îò÷åòû äëÿ ñåðâèñîâ îò÷åòîâ, ðàçðàáàòûâàòü ïàêåòû äëÿ ñåðâèñîâ ïðåîáðàçîâàíèÿ äàííûõ, à òàêæå âûïîëíÿòü äðóãèå äåéñòâèÿ. BIDS óñòàíàâëèâàåòñÿ âìåñòå ñ SQL Server 2005 è äîñòóïíà èç ìåíþ. Äëÿ åå çàïóñêà âûáåðèòå êîìàíäó ìåíþ Start4Programs4Microsoft SQL Server4Business Intelligence Development Studio.  ðåçóëüòàòå ýòîãî îòêðîåòñÿ îêíî, ïîêàçàííîå íà ðèñ. 3.5.
Ðèñ. 3.5. Èíòåðôåéñ Business Intelligence Development Studio
3.1. Óïðàâëåíèå áàçàìè äàííûõ è ñðåäñòâà ðàçðàáîòêè
77
SQL Server Management Studio è Business Intelligence Development Studio èìåþò ìíîãî îáùåãî. Âî-ïåðâûõ, îáà ïðèëîæåíèÿ ñîçäàíû íà îñíîâå Visual Studio 2005 IDE. Ýòî ïîçâîëÿåò èñïîëüçîâàòü âñþ ìîùü ñðåäû ðàçðàáîòêè ïðèëîæåíèé Visual Studio 2005. Âî-âòîðûõ, êàæäûé ïðîåêò â îáåèõ óòèëèòàõ ïðåäñòàâëÿåò ñîáîé íàáîð ôàéëîâ, êîòîðûìè ìîæåò ìàíèïóëèðîâàòü ðàçðàáîò÷èê.  îáîèõ ñëó÷àÿõ ïðîåêò ïðåäñòàâëÿåò ñîáîé ëîãè÷åñêè ñãðóïïèðîâàííûé íàáîð ôàéëîâ. Â-òðåòüèõ, îáà ïðèëîæåíèÿ íå ìîãóò èñïîëüçîâàòüñÿ äëÿ êîìïèëÿöèè êîäà ÿçûêîâ ïðîãðàììèðîâàíèÿ .NET Framework (òàêèõ, êàê J#, C# è VB.NET). Òî÷íî òàê æå, êàê è SQL Server Management Studio, óòèëèòà BIDS èìååò ðÿä ñðåäñòâ äëÿ èíòåãðàöèè ñ Visual SourceSafe, ÷òî ïîçâîëÿåò ðåàëèçîâàòü ðÿä ïðåèìóùåñòâ óïðàâëåíèÿ ðàçëè÷íûìè âåðñèÿìè ôàéëîâ è ïðîåêòîâ. Îòëè÷èå ìåæäó ýòèìè äâóìÿ ïðèëîæåíèÿìè ñîñòîèò â òîì, ÷òî SQL Server Management Studio àâòîìàòè÷åñêè óñòàíàâëèâàåò ñîåäèíåíèå âî âðåìÿ ðàçðàáîòêè ïðèëîæåíèÿ èëè åãî çàïóñêà. ×òî êàñàåòñÿ BIDS, òî ðåæèì, èñïîëüçóåìûé ïî óìîë÷àíèþ äëÿ ýòîãî ïðèëîæåíèÿ, — ýòî îòêëþ÷åíèå îò áàçû. Ðàçðàáîò÷èêó íåîáõîäèìî â ðó÷íîì ðåæèìå óñòàíîâèòü ñîåäèíåíèå ñ âûáðàííîé áàçîé äàííûõ.
3.1.8. Íàáîð èíñòðóìåíòîâ BIDS Áîëüøàÿ ÷àñòü îêîí â Business Intelligence Development Studio âûïîëíÿåò òå æå ôóíêöèè, ÷òî è àíàëîãè÷íûå îêíà â SQL Server Management Studio. Ýòî îòíîñèòñÿ ê îêíàì Solution Explorer, Properties è ìíîãèì äðóãèì. Ïàíåëü èíñòðóìåíòîâ BIDS îòîáðàæàåòñÿ â âåðõíåé ÷àñòè îêíà (ñì. ðèñ. 3.5) è ñîäåðæèò íàáîð êîìïîíåíòîâ, êîòîðûå ìîæíî èñïîëüçîâàòü ïðè ñîçäàíèè ïðèëîæåíèÿ.
3.1.9. Îêíî Solution Explorer Óòèëèòà Business Intelligence Development Studio èìååò ñâîå ñîáñòâåííîå îêíî Solution Explorer, êîòîðîå âûïîëíÿåò ôóíêöèè, àíàëîãè÷íûå ôóíêöèÿì ñâîåãî ñîáðàòà â SQL Server Development Studio. Ðàñïîëîæåíèå äàííîãî îêíà àíàëîãè÷íî åãî ïîëîæåíèþ â îêíå SQL Server Development Studio: îíî íàõîäèòñÿ â ïðàâîì âåðõíåì óãëó (ñì. ðèñ. 3.5). Îêíî Solution Explorer ñîäåðæèò èåðàðõè÷åñêóþ ñòðóêòóðó ôàéëîâ ïðîåêòà. Êîðåíü äåðåâà ïðåäñòàâëÿåò ñîáîé íàèìåíîâàíèå ðåøåíèÿ, äàëåå èäóò ïðîåêòû è çàêàí÷èâàåòñÿ ñòðóêòóðà îòäåëüíûìè ôàéëàìè, êîòîðûå ïðèíàäëåæàò ëèáî îòäåëüíûì ïðîåêòàì, ëèáî âñåìó ðåøåíèþ. Ñ ïîìîùüþ Business Intelligence Development Studio ìîæíî ñîçäàâàòü ïðîåêòû ñëåäóþùèõ òèïîâ: · ïðîåêò ñåðâèñîâ àíàëèòèêè; · áàçà äàííûõ ñåðâèñîâ àíàëèòèêè 9.0; · ïðîåêò ñåðâèñîâ îò÷åòà; · ìàñòåð îò÷åòîâ; · ïðîåêò ïðåîáðàçîâàíèÿ äàííûõ. Ïîìèìî ïåðå÷èñëåííûõ ïðîåêòîâ ðàçðàáîò÷èê òàêæå ìîæåò çàãðóçèòü ëþáîé øàáëîí ïðîåêòà ñ ñàéòà Microsoft.
78
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
Òî÷íî òàê æå, êàê è â SQL Server Development Studio, â BIDS ìîæíî ñîçäàâàòü ðåøåíèÿ, êîòîðûå áóäóò ñîäåðæàòü íåñêîëüêî ïðîåêòîâ. Ðàçðàáîò÷èê íå îãðàíè÷åí ðàìêàìè îäíîãî ïðîåêòà. Âî âðåìÿ ñîçäàíèÿ ïðîåêòà ïåðåä âàìè îòêðîåòñÿ îêíî New Project (ðèñ. 3.6), â êîòîðîì âû ñìîæåòå âûáðàòü îäèí èç ïåðå÷èñëåííûõ òèïîâ ïðîåêòîâ.
Ðèñ. 3.6. Ñîçäàíèå íîâîãî ïðîåêòà â Business Intelligence Development Studio
Ðàññìîòðèì áîëåå äåòàëüíî êàæäûé òèï ïðîåêòà, êîòîðûé ìîæíî ñîçäàòü â BIDS. · Ïðîåêò ñåðâèñîâ àíàëèòèêè — äàííûé òèï ïðîåêòà ñîäåðæèò îïðåäåëåíèÿ îáúåêòîâ áàçû äàííûõ ñåðâèñîâ àíàëèòèêè. Ïîäîáíûå îïðåäåëåíèÿ îïèñûâàþò èñòî÷íèêè äàííûõ, ïðåäñòàâëåíèÿ, êóáû, èçìåðåíèÿ, ìîäåëè äàííûõ, ðîëè è ñáîðêè. Îäíà èç îñíîâíûõ óòèëèò äëÿ ðàáîòû ñ ñåðâèñàìè àíàëèòèêè — ýòî óòèëèòà Cube Designer. Îíà ïîçâîëÿåò ñîçäàâàòü, èíñòàëëèðîâàòü, íàñòðàèâàòü âñå ïåðå÷èñëåííûå îáúåêòû äëÿ ñåðâèñîâ àíàëèòèêè è óïðàâëÿòü èìè. Äàííàÿ óòèëèòà ïðåäñòàâëÿåò ñîáîé âèçóàëüíóþ ñðåäó ðàçðàáîòêè. Äëÿ åå çàïóñêà ùåëêíèòå äâàæäû íà ýëåìåíòå Cube â Solution Explorer è âûáåðèòå ïóíêò View Designer. Áîëåå äåòàëüíî íàáîð èíñòðóìåíòîâ äëÿ ðàáîòû ñ êóáàìè ìû ðàññìîòðèì â ðàçäåëàõ 5.3.4 «Óòèëèòà Cube Wizard» — 5.3.6 «Óòèëèòà Cube Browser». · Áàçà äàííûõ ñåðâèñîâ àíàëèòèêè 9.0 — äàííûé òèï ïðîåêòà ïîçâîëÿåò ñîçäàâàòü íîâûå ðåøåíèÿ äëÿ ñåðâèñîâ àíàëèòèêè, èñïîëüçóÿ ðàíåå ñîçäàííûå ðåøåíèÿ äëÿ áàç äàííûõ SQL Server âåðñèé 7.0 è 2000.
3.1. Óïðàâëåíèå áàçàìè äàííûõ è ñðåäñòâà ðàçðàáîòêè
79
· Ïðîåêò ñåðâèñîâ îò÷åòà — äàííûé øàáëîí èñïîëüçóåòñÿ äëÿ ñîçäàíèÿ ïðèëîæåíèé ñåðâèñîâ îò÷åòîâ. Îí ïîçâîëÿåò ðàçðàáîò÷èêàì ñîçäàâàòü îò÷åòû, íàñòðàèâàòü èõ ïàðàìåòðû, îòëàæèâàòü, à òàêæå óñòàíàâëèâàòü íà ðàáîòàþùèå ñåðâåðû. Ñ ïîìîùüþ èíñòðóìåíòà Reporting Services Designer ðàçðàáîò÷èê ìîæåò ñîçäàâàòü íàáîð äàííûõ, à çàòåì íàñòðàèâàòü èíòåðôåéñ îò÷åòà ñ ïîìîùüþ íàáîðà êîìïîíåíòîâ. Ïðîâàéäåð äàííûõ ìîæåò ïîëó÷àòü äàííûå íåïîñðåäñòâåííî èç áàçû äàííûõ SQL Server 2005 èëè èç ëþáîãî èñòî÷íèêà, ïîääåðæèâàþùåãî ñòàíäàðò OLE DB èëè ODBC. Áîëåå äåòàëüíî äàííûé èíñòðóìåíò ìû ðàññìîòðèì â ðàçäåëå 8.1.3 «Äèçàéíåð îò÷åòîâ». · Ìàñòåð îò÷åòîâ — äàííûé òèï ïðîåêòà ïîçâîëÿåò ñîçäàâàòü ìàñòåð îò÷åòîâ, êîòîðûé ñîäåðæèò íåñêîëüêî ýòàïîâ, àâòîìàòèçèðóþùèõ ñîçäàíèå îò÷åòîâ íà îñíîâå óñëîâèé, îïðåäåëåííûõ ïîëüçîâàòåëåì. Èíòåãðèðîâàííûé â äàííûé òèï ïðîåêòà, ðàçðàáîò÷èê çàïðîñîâ ïîçâîëÿåò ñîçäàâàòü SQL-çàïðîñû è âûïîëíÿòü èõ. Ïîñëå òîãî êàê âû ñîçäàäèòå îò÷åò ñ ïîìîùüþ øàáëîíà ïðîåêòîâ ñåðâèñà îò÷åòîâ, ìîæíî ïåðåéòè ê íàñòðîéêå ïàðàìåòðîâ, èñïîëüçóÿ ìàñòåð îò÷åòîâ. Ýòî ïîçâîëèò ñîêðàòèòü âðåìÿ íà ñîçäàíèå ïðèëîæåíèÿ, à ïîëüçîâàòåëþ óñêîðèò è óïðîñòèò ñîçäàíèå îò÷åòîâ. Áîëåå äåòàëüíî äàííûé òèï øàáëîíà áóäåò ðàññìîòðåí â ðàçäåëå 8.1.14 «Óòèëèòà Report Builder». · Ïðîåêò ïðåîáðàçîâàíèÿ äàííûõ — äàííûé òèï ïðîåêòà ïîçâîëÿåò ñîçäàâàòü èñòî÷íèêè äàííûõ, ïðåäñòàâëåíèÿ äàííûõ, DTS-ïàêåòû è äðóãèå îáúåêòû. Îñíîâíîé èíñòðóìåíò äëÿ âûïîëíåíèÿ ïîäîáíûõ äåéñòâèé — ýòî DTS Designer, êîòîðûé îòîáðàæàåòñÿ â ñðåäíåé ÷àñòè îêíà Business Intelligence Development Studio. Äëÿ òîãî ÷òîáû ñîçäàòü êàêîé-ëèáî îáúåêò, ïðîñòî âûáåðèòå åãî óêàçàòåëåì ìûøè íà ïàíåëè èíñòðóìåíòîâ è ïåðåòàùèòå íà ôîðìó. Ïîñëå ýòîãî ìîæíî íàñòðîèòü ïàðàìåòðû îáúåêòà è ñâÿçè ìåæäó íèìè, èñïîëüçóÿ óêàçàòåëü ìûøè. Áîëåå äåòàëüíî ðàáîòó ñ DTS Designer ìû ðàññìîòðèì â ðàçäåëå 6.2.2 «Äèçàéíåð ñåðâèñîâ èíòåãðàöèè».
3.1.10. Îêíî Properties Îêíî Properties îòîáðàæàåòñÿ â ïðàâîì íèæíåì óãëó îêíà Business Intelligence Development Studio (ñì. ðèñ. 3.5) è âûïîëíÿåò òå æå ôóíêöèè, ÷òî è ñîîòâåòñòâóþùåå îêíî â SQL Server Development Studio. Çäåñü âû ìîæåòå ïðîñìîòðåòü è íàñòðîèòü ñâîéñòâà îáúåêòîâ, êîòîðûå âûáðàíû â îêíå Solution Explorer.
3.1.11. Îêíî Dynamic Help Îêíî äèíàìè÷åñêîé ñïðàâêè èñïîëüçóåòñÿ äëÿ êîíòåêñòíîé ïîäñêàçêè. Åãî ñîäåðæèìîå èçìåíÿåòñÿ â çàâèñèìîñòè îò òåêóùåãî ïîëîæåíèÿ êóðñîðà èëè óêàçàòåëÿ ìûøè è ïîìîãàåò ïîëüçîâàòåëþ îñâîèòüñÿ ñ íîâûì ïðèëîæåíèåì.
3.1.12. Êîíòðîëü íàä âåðñèÿìè ðåøåíèé â BIDS Óòèëèòà Business Intelligence Development Studio òàêæå èíòåãðèðîâàíà ñ Visual SourceSafe, ÷òî ïîçâîëÿåò óïðîñòèòü è óñêîðèòü ïðîöåññ ñîçäàíèÿ ïðèëîæåíèé êîìàíäàìè ðàçðàáîò÷èêîâ. Òåïåðü âñå ïðîåêòû, ñîçäàâàåìûå ñ ïîìîùüþ Business
80
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
Intelligence Development Studio, ìîãóò áûòü ñîõðàíåíû â åäèíîì õðàíèëèùå, äëÿ íèõ ìîæåò âûïîëíÿòüñÿ êîíòðîëü è îòñëåæèâàíèå âåðñèé. Âî âðåìÿ ðàáîòû ñ îòäåëüíûì ôàéëîì èëè ïðîåêòîì ðàçðàáîò÷èêè ìîãóò âûïèñûâàòü ôàéëû, òåì ñàìûì ñîîáùàÿ äðóãèì ðàçðàáîò÷èêàì î òîì, ÷òî ñ äàííûìè ôàéëàìè âûïîëíÿþòñÿ ðàáîòû. Çàïèñü ðàíåå âûïèñàííîãî ôàéëà â õðàíèëèùå ìîæåò âûïîëíÿòüñÿ êàê ïîä òîé âåðñèåé, ïîä êîòîðîé îí áûë ðàíåå âûïèñàí, òàê è ïîä íîâîé âåðñèåé. Ïðè ýòîì ìîæåò áûòü ïðèñâîåí ëèáî íîâûé íîìåð âåðñèè (÷òî áóäåò ñâèäåòåëüñòâîâàòü î ñåðüåçíûõ èçìåíåíèÿõ â êîäå), ëèáî íîâûé íîìåð ïîäâåðñèè (÷òî ñâèäåòåëüñòâóåò î íåçíà÷èòåëüíûõ èçìåíåíèÿõ). Äëÿ òîãî ÷òîáû äîáàâèòü ðåøåíèÿ, ïðîåêòû èëè îòäåëüíûå ôàéëû â ñèñòåìó êîíòðîëÿ âåðñèé, âûáåðèòå â ìåíþ BIDS êîìàíäó File4Source Control.
3.1.13. Óòèëèòà Query Editor Óòèëèòà Query Editor ñîçäàíà äëÿ òîãî, ÷òîáû çàìåíèòü àêòèâíî èñïîëüçîâàâøèéñÿ ðàíåå èíñòðóìåíò Query Analyzer. Îíà ïîçâîëÿåò ñîçäàâàòü è çàïóñêàòü ñöåíàðèè T-SQL. Îêíî Query Editor îòîáðàæàåòñÿ â âåðõíåé ÷àñòè îêíà SQL Server Management Studio (ñì. ðèñ. 3.3). Äëÿ çàïóñêà ðåäàêòîðà çàïðîñîâ ìîæíî ëèáî íàæàòü â ïàíåëè èíñòðóìåíòîâ SQL Server Management Studio êíîïêó New Query, ëèáî âûáðàòü â ìåíþ ïóíêò File4New4SQL Server Query4SQL Server Query. Ïîìèìî ñîçäàíèÿ ñöåíàðèåâ íà T-SQL, ðåäàêòîð çàïðîñîâ ìîæíî èñïîëüçîâàòü òàêæå äëÿ ñîçäàíèÿ ñöåíàðèåâ íà îñíîâå òåõíîëîãèé SQL Mobile Queries, DMX, MDX è XMLA. Ïðåèìóùåñòâîì ðåäàêòîðà çàïðîñîâ ÿâëÿåòñÿ òî, ÷òî îí, â îòëè÷èå îò Query Analyzer, ìîæåò ðàáîòàòü êàê ïðè îòêðûòîì ñîåäèíåíèè, òàê è áåç íåãî. Ïî óìîë÷àíèþ ðåäàêòîð çàïðîñîâ íå ïîäêëþ÷åí ê ñåðâåðó, îäíàêî êàê òîëüêî ðàçðàáîò÷èê íà÷èíàåò ñîçäàíèå íîâîãî çàïðîñà, Query Editor ñàìîñòîÿòåëüíî îïðåäåëÿåò ïàðàìåòðû çàðåãèñòðèðîâàííîãî ñåðâåðà è óñòàíàâëèâàåò ñ íèì ñîåäèíåíèå. Åùå îäíèì ïðåèìóùåñòâîì ðåäàêòîðà çàïðîñîâ ÿâëÿåòñÿ òî, ÷òî îí ïîääåðæèâàåò âîçìîæíîñòü àâòîìàòè÷åñêîãî âûäåëåíèÿ öâåòîì ñîäåðæàùåãîñÿ â îêíå êîäà. Ýòî ïîçâîëÿåò âûäåëèòü â êîäå ïðèìå÷àíèÿ, îøèáêè è ôðàãìåíòû êîäà, ÷òî çíà÷èòåëüíî óïðîùàåò ðàáîòó ïðîãðàììèñòà. Áîëåå òîãî, Query Editor, â îòëè÷èå îò ñâîåãî ïðåäøåñòâåííèêà, ïîääåðæèâàåò ïîíÿòèå ïðîåêòà, â êîòîðîì ôàéëû ñãðóïïèðîâàíû ïî ëîãè÷åñêîìó ïðèíöèïó. Ïîìèìî ýòîãî â ðåäàêòîðå çàïðîñîâ ïîääåðæèâàåòñÿ âîçìîæíîñòü èñïîëüçîâàòü Visual SourceSafe äëÿ êîíòðîëÿ íàä âåðñèÿìè ñîçäàâàåìûõ ïðîåêòîâ è îòäåëüíûõ ôàéëîâ ñî ñöåíàðèÿìè. Ýòî ïîçâîëÿåò îòñëåæèâàòü èçìåíåíèÿ â îòäåëüíûõ âåðñèÿõ ôàéëîâ, à òàêæå ñîõðàíÿòü ñöåíàðèè T-SQL â âèäå îòäåëüíûõ ôàéëîâ, ÷òîáû îáåñïå÷èòü âîçìîæíîñòü äàëüíåéøåãî ïåðåíîñà. Ïåðåä òåì êàê ðàçðàáîò÷èê íà÷èíàåò èçìåíÿòü îòäåëüíûé ôàéë ïðîåêòà, åìó íåîáõîäèìî ñíà÷àëà âûïèñàòü åãî èç õðàíèëèùà Visual SourceSafe. Áëàãîäàðÿ ýòîìó äðóãèå ðàçðàáîò÷èêè ñìîãóò óçíàòü, ÷òî ñ äàííûì ôàéëîì âûïîëíÿåòñÿ ðàáîòà, è ôàéë áóäåò çàùèùåí îò ïåðåçàïèñè ðàçëè÷íûìè êîïèÿìè. Èñïîëüçîâàíèå ñïåöèàëüíîãî ïðîãðàììíîãî îáåñïå÷åíèÿ äëÿ êîíòðîëÿ âåðñèé ïîçâîëÿåò ðåàëèçîâàòü âîçìîæíîñòü õðàíåíèÿ èñõîäíûõ êîäîâ ïðîãðàìì, ïðîåêòîâ è îòäåëüíûõ ñöåíàðèåâ, àññîöèèðîâàííûõ ñ âûáðàííîé ñõåìîé áàçû äàííûõ. Ýòî ïîçâîëÿåò îäíîçíà÷íî
3.1. Óïðàâëåíèå áàçàìè äàííûõ è ñðåäñòâà ðàçðàáîòêè
81
èäåíòèôèöèðîâàòü àâòîðà èçìåíåíèé èëè îòäåëüíûõ ôðàãìåíòîâ êîäà, à òàêæå îãðàíè÷èòü ïðèìåíåíèå ïðîãðàììíîãî îáåñïå÷åíèÿ äëÿ ìîäèôèêàöèè êîäà.  ðåäàêòîðå çàïðîñîâ, êðîìå òîãî, äîáàâëåíî íåñêîëüêî íîâûõ ýëåìåíòîâ, êîòîðûõ íå ñóùåñòâîâàëî â àíàëèçàòîðå çàïðîñîâ. Query Editor ìîæåò îòîáðàæàòü ñöåíàðèé, ñ êîòîðûì ðàáîòàåò ïðîãðàììèñò, â âèäå äâóõ ïðåäñòàâëåíèé: · îáû÷íûé òåêñò; · òàáëèöà. Ïîìèìî ýòîãî â ðåäàêòîðå çàïðîñîâ îòîáðàæàåòñÿ õîä âûïîëíåíèÿ ñöåíàðèÿ â âèäå îòäåëüíûõ ýòàïîâ, ÷òî ïîçâîëÿåò áûñòðåå âûïîëíèòü îòëàäêó êîäà è ñîêðàòèòü ýíåðãèþ íà ïðîâåðêó êîäà. Ðåçþìèðóÿ âûøåñêàçàííîå, ñòîèò çàìåòèòü, ÷òî ðåäàêòîð çàïðîñîâ, ïî ñðàâíåíèþ ñî ñâîèì ìëàäøèì áðàòîì, ïðåäñòàâëÿåò ñîáîé áîëåå óäîáíîå ñðåäñòâî äëÿ ñîçäàíèÿ ïðîãðàììíîãî êîäà, åãî ñîõðàíåíèÿ è êîíòðîëÿ âåðñèé. Òåïåðü ñîçäàâàòü ñöåíàðèè è ïðîåêòû ñ ïîìîùüþ Query Editor íàìíîãî ïðîùå, ïîñêîëüêó äîáàâèëèñü òàêèå ïðåèìóùåñòâà, êàê âûäåëåíèå öâåòîì, ïëàí âûïîëíåíèÿ ïðîåêòà, à òàêæå âûäåëåíèå ôðàãìåíòà âûïîëíÿþùåãîñÿ êîäà.
3.1.14. Îêíî Results Window óòèëèòû Query Editor Ñîçäàíèå ñöåíàðèåâ ñ ïîìîùüþ ðåäàêòîðà çàïðîñîâ ïîäðàçóìåâàåò ÷àñòûå çàïðîñû ê áàçå äàííûõ è èõ îáðàáîòêó. Ðåçóëüòàòàìè îáðàáîòêè ïîäîáíûõ çàïðîñîâ ÿâëÿåòñÿ âûâîä äàííûõ íà ýêðàí êîìïüþòåðà. Âñå ðåçóëüòàòû âûïîëíåíèÿ çàïðîñîâ îòîáðàæàþòñÿ â îêíå Results Window. Ýòî îêíî íàõîäèòñÿ â íèæíåì ïðàâîì óãëó SQL Server Management Studio (ñì. ðèñ. 3.3). Îòîáðàæåíèå ðåçóëüòàòîâ ìîæåò âûïîëíÿòüñÿ êàê â òåêñòîâîì ôîðìàòå, òàê è â âèäå òàáëèöû. Ýòî óïðîùàåò ðàáîòó ñ ðåçóëüòàòàìè è èõ îòîáðàæåíèå íà ýêðàíå.
3.1.15. Îêíî Dynamic Help Îêíî äèíàìè÷åñêîé ïîäñêàçêè ïîçâîëÿåò ïðîñìàòðèâàòü ñïðàâî÷íûå ñâåäåíèÿ îá ýëåìåíòå, íà êîòîðûé óñòàíîâëåí êóðñîð èëè óêàçàòåëü ìûøè. Ýòî óñîâåðøåíñòâîâàíèå ïåðåøëî â SQL Server Management Studio èç Visual Studio 2005 IDE.
3.1.16. Êîíòðîëü íàä âåðñèÿìè ïðîãðàììíîãî êîäà Èíòåãðèðîâàííàÿ â SQL Server Management Studio ñèñòåìà êîíòðîëÿ è õðàíåíèÿ âåðñèé ïîçâîëÿåò ðåàëèçîâàòü ìíîãî ìåõàíèçìîâ êîíòðîëÿ íàä âåðñèÿìè ñîçäàâàåìûõ ïðèëîæåíèé. Ñèñòåìà êîíòðîëÿ îðèåíòèðîâàíà â ïåðâóþ î÷åðåäü íà êîìàíäû ðàçðàáîò÷èêîâ. Ýôôåêòèâíîñòü åå èñïîëüçîâàíèÿ äîñòèãàåòñÿ ïðè ðàáîòå íàä áîëüøèìè ïðîåêòàìè. Äëÿ òîãî ÷òîáû íà÷àòü èñïîëüçîâàòü äàííóþ èíòåãðèðîâàííóþ ñèñòåìó, íåîáõîäèìî ñíà÷àëà óñòàíîâèòü ïðèëîæåíèå Visual SourceSafe, êîòîðîå âõîäèò â ñîñòàâ Microsoft Visual Studio 2005.  ðåçóëüòàòå ñòàíóò äîñòóïíû ñëåäóþùèå ôóíêöèè â îòíîøåíèè ïðîãðàììíîãî êîäà: · âûïèñêà ôàéëîâ; · çàïèñü ôàéëîâ â õðàíèëèùå;
82
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
· êîíòðîëü íàä âåðñèÿìè ôàéëîâ; · îòîáðàæåíèå ðåçóëüòàòîâ ñðàâíåíèÿ âûáðàííûõ ôàéëîâ; · àðõèâèðîâàíèå «ñòàðûõ» âåðñèé ïðîåêòà. Âñå ýòè ïðåèìóùåñòâà ïðåäîõðàíÿþò ðàçðàáîò÷èêîâ îò ñëó÷àéíîãî ïåðåçàïèñûâàíèÿ ôàéëîâ ïðè ðàáîòå áîëüøèõ ïðîåêòíûõ êîìàíä.
3.1.17. Ïðîñìîòð ýòàïîâ âûïîëíåíèÿ çàïðîñà Äëÿ ïðîñìîòðà òåêóùåãî ýòàïà îáðàáîòêè çàïðîñà, âûâîäà îøèáîê, ñïèñêà ñîåäèíåíèé è äðóãèõ öåëåé â SQL Server Management Studio ñóùåñòâóåò îêíî Current Activity. Äëÿ îòêðûòèÿ ýòîãî îêíà âûáåðèòå â îêíå Object Explorer âåòâü äåðåâà Database4Management4Activity Monitor. Â ðåçóëüòàòå îòêðîåòñÿ îêíî Current Activity, â êîòîðîì ñîäåðæèòñÿ ñïèñîê òåêóùèõ çàïóùåííûõ ïðîöåññîâ. Ïîìèìî ñïèñêà ïðîöåññîâ â äàííîì îêíå ñîäåðæèòñÿ ñëåäóþùàÿ èíôîðìàöèÿ: · ñâåäåíèÿ î ïðîöåññå; · ñîåäèíåíèÿ ïîëüçîâàòåëåé; · áëîêèðîâàííûå ïðîöåññû; · ïîëüçîâàòåëüñêèå áëîêèðîâêè; · äðóãèå áëîêèðîâêè.
3.1.18. Ñðàâíåíèå SQL SMS è BIDS Íåñìîòðÿ íà òî ÷òî SQL Server Management Studio è Business Intelligence Development Studio íà ïåðâûé âçãëÿä ÿâëÿþòñÿ áðàòüÿìè-áëèçíåöàìè, îíè ñîçäàâàëèñü äëÿ ðåøåíèÿ ðàçíûõ çàäà÷. Îáà ýòè ïðèëîæåíèÿ ñîçäàâàëèñü íà îñíîâå Visual Studio 2005 IDE è èìåþò ïîõîæèé íàáîð îêîí è èíñòðóìåíòîâ äëÿ ðàáîòû ñ ïðîåêòàìè ðàçëè÷íûõ òèïîâ. Ïðè ýòîì SQL Server Management Studio èñïîëüçóåòñÿ äëÿ ðàçðàáîòêè ïðèëîæåíèé, êîòîðûå áóäóò ðàáîòàòü ñ ðåëÿöèîííîé áàçîé SQL Server, à Business Intelligence Development Studio ïîçâîëÿåò ñîçäàâàòü ïðèëîæåíèÿ äëÿ ðàáîòû ñ ñåðâèñàìè àíàëèòèêè. Îäíàêî íå ñòîèò çàáëóæäàòüñÿ, ïîëàãàÿ, ÷òî ïåðâîå ïðèëîæåíèå ìîæåò àêòèâíî èñïîëüçîâàòüñÿ äëÿ íàñòðîéêè ïàðàìåòðîâ áàçû äàííûõ, à âòîðîå — äëÿ íàñòðîéêè ïàðàìåòðîâ ñåðâèñîâ àíàëèòèêè. SQL Server Management Studio ïîçâîëÿåò óïðàâëÿòü êàê SQL Server, òàê è ñåðâèñàìè àíàëèòèêè, ïðè ýòîì âû ëåãêî ìîæåòå èñïîëüçîâàòü åãî äëÿ ñîçäàíèÿ MDXè SQL-çàïðîñîâ. Ïîìèìî SQL Server è ñåðâèñîâ àíàëèòèêè SQL Server Management Studio ìîæåò óñòàíàâëèâàòü ñîåäèíåíèå ñ ñåðâèñàìè îò÷åòîâ äëÿ âûïîëíåíèÿ èõ íàñòðîéêè. Òàêæå ñ åãî ïîìîùüþ ìîæíî çàïóñêàòü è îñòàíàâëèâàòü îòäåëüíûå ýêçåìïëÿðû ñåðâèñîâ è ñåðâåðîâ, íàñòðàèâàòü èíòåðôåéñ ïðèëîæåíèé èëè âûïîëíÿòü ñöåíàðèè äëÿ ïîëó÷åíèÿ è îáðàáîòêè íåîáõîäèìûõ äàííûõ. Íåñìîòðÿ íà áîëüøîå ñõîäñòâî ñ SQL Server Management Studio, Business Intelligence Development Studio íå ÿâëÿåòñÿ ñðåäñòâîì àäìèíèñòðèðîâàíèÿ ñåðâèñîâ SQL Server 2005. Îäíàêî ýòî ìîùíîå ïðèëîæåíèå ïîçâîëÿåò ñîçäàâàòü ïðèëîæåíèÿ äëÿ àíàëèòè÷åñêîé îáðàáîòêè äàííûõ, ñîñòàâëåíèÿ îò÷åòîâ è íàñòðîéêè
3.1. Óïðàâëåíèå áàçàìè äàííûõ è ñðåäñòâà ðàçðàáîòêè
83
ïàðàìåòðîâ ïðåîáðàçîâàíèÿ äàííûõ. Ñ åãî ïîìîùüþ ìîæíî íàñòðàèâàòü ñîåäèíåíèÿ, ñîçäàâàòü çàïðîñû â äèçàéíåðå çàïðîñîâ, âûïîëíÿòü èõ, ñîçäàâàòü DTS-ïàêåòû, XMLA- è MDX-çàïðîñû è äðóãèå ïðèëîæåíèÿ ñåðâèñîâ àíàëèòèêè. Òàêæå BIDS ïîçâîëÿåò ñîçäàâàòü ãðàôè÷åñêèé èíòåðôåéñ ïðèëîæåíèÿ è íàñòðàèâàòü åãî ïàðàìåòðû. Äëÿ ýòîãî èñïîëüçóåòñÿ íàáîð ðàíåå ñîçäàííûõ êîìïîíåíòîâ, êîòîðûå ðàñïîëàãàþòñÿ íà ïàíåëè èíñòðóìåíòîâ.
3.1.19. Óòèëèòà Sqlcmd Åùå îäèí íîâûé êîìïîíåíò SQL Server 2005, èñïîëüçóåìûé äëÿ àäìèíèñòðèðîâàíèÿ ñèñòåìû, — ýòî óòèëèòà Sqlcmd. Äàííàÿ óòèëèòà çàìåíÿåò ñîáîé óòèëèòû osql è isql, êîòîðûå èñïîëüçîâàëèñü àäìèíèñòðàòîðàìè â ïðåäûäóùèõ âåðñèÿõ SQL Server. Óòèëèòà isql èñïîëüçîâàëà áèáëèîòåêó SQL Server-DB äëÿ óñòàíîâêè ñîåäèíåíèÿ ñ SQL Server. Óòèëèòà osql, â ñâîþ î÷åðåäü, äëÿ óñòàíîâêè ñîåäèíåíèÿ ñ SQL Server èñïîëüçîâàëà ODBC. Äëÿ îáðàòíîé ñîâìåñòèìîñòè äàííûå óòèëèòû òàêæå ïîääåðæèâàþòñÿ â SQL Server 2005. Äëÿ çàïóñêà óòèëèòû Sqlcmd èñïîëüçóåòñÿ êîìàíäíàÿ ñòðîêà. Àäìèíèñòðàòîðû è ðàçðàáîò÷èêè ìîãóò âûïîëíÿòü çàïðîñû T-SQL, õðàíèìûå ïðîöåäóðû è ïàêåòû T-SQL ïðÿìî èç êîìàíäíîé ñòðîêè. Ýòî óïðîùàåò ïðîöåäóðó âûïîëíåíèÿ ïðîñòåéøèõ çàïðîñîâ è íå òðåáóåò äîïîëíèòåëüíûõ ïðîãðàììíûõ ñðåäñòâ. Îäíî èç îñíîâíûõ ïðåèìóùåñòâ, êîòîðîå áûëî ðåàëèçîâàíî â Sqlcmd, — ýòî âîçìîæíîñòü âûïîëíÿòü îòäåëüíûå êîìàíäû è õðàíèìûå ïðîöåäóðû ïðÿìî èç êîìàíäíîé ñòðîêè, èñïîëüçóÿ íàáîð êëþ÷åé. Äëÿ ýòîãî ñ áàçîé äàííûõ óñòàíàâëèâàåòñÿ ñîåäèíåíèå ñ ïîìîùüþ òåõíîëîãèè Dedicated Administrative Connection (DAC). Åñëè ñ SQL Server 2005 óñòàíàâëèâàåòñÿ ñîåäèíåíèå íà óðîâíå DAC, òî äëÿ äàííîãî ñîåäèíåíèÿ çàïðîñû è êîìàíäû âûïîëíÿþòñÿ ñ áîëüøèì ïðèîðèòåòîì, ÷åì SQL-çàïðîñû äðóãèõ ñîåäèíåíèé. Äëÿ òîãî ÷òîáû óñòàíîâèòü DAC-ñîåäèíåíèå ñ ïîìîùüþ Sqlcmd, âàì íåîáõîäèìî çàïóñòèòü ýòó óòèëèòó ñ êëþ÷îì –A. Ïîìèìî ýòîãî êëþ÷à óòèëèòîé ïîääåðæèâàåòñÿ öåëûé ðÿä äðóãèõ êëþ÷åé, ïîçâîëÿþùèõ àâòîìàòèçèðîâàòü âûïîëíåíèå íåêîòîðûõ îïåðàöèé. Íàïðèìåð, ðàçðàáîò÷èêè ìîãóò èñïîëüçîâàòü êëþ÷ –L äëÿ ïðîñìîòðà ïîëíîãî ñïèñêà çàðåãèñòðèðîâàííûõ ñåðâåðîâ SQL.  ýòîì ñëó÷àå ñèíòàêñèñ çàïóñêà óòèëèòû áóäåò âûãëÿäåòü ñëåäóþùèì îáðàçîì: Sqlcmd –L
Åùå îäèí ÷àñòî èñïîëüçóåìûé êëþ÷ — ýòî êëþ÷ –P. Îí ïîçâîëÿåò ïðîñìîòðåòü ñòàòèñòèêó ïðîèçâîäèòåëüíîñòè SQL Server 2005. Äëÿ òîãî ÷òîáû ïðîñìîòðåòü ïîëíûé ñïèñîê êëþ÷åé ñ èõ îïèñàíèåì, ââåäèòå â êîìàíäíîé ñòðîêå: Sqlcmd /?
3.1.20. Èñïîëüçîâàíèå ôàéëîâ ñöåíàðèåâ â Sqlcmd Ïîìèìî íàáîðà êëþ÷åé óòèëèòà Sqlcmd èìååò ðÿä âîçìîæíîñòåé äëÿ îáðàáîòêè ôàéëîâ, ñîäåðæàùèõ ñöåíàðèè. Ýòî ïîçâîëÿåò êîíòðîëèðîâàòü âûïîëíåíèå ôàéëà, à òàêæå èñïîëüçîâàòü ïåðåìåííûå. Äëÿ òîãî ÷òîáû îïðåäåëèòü ïåðåìåííûå
84
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
âî âðåìÿ âûïîëíåíèÿ ñöåíàðèÿ, èñïîëüçóåòñÿ êëþ÷ –V. Ïðèìåð îïðåäåëåíèÿ ïåðåìåííîé: sclcmd -v FIO="Petrenko P.I. "
Òàêæå äëÿ ðåøåíèÿ äàííîé çàäà÷è ìîæíî âîñïîëüçîâàòüñÿ êîìàíäîé –shell. Ðàññìîòðèì áîëåå äåòàëüíî ïðèìåð èñïîëüçîâàíèÿ êîìàíäû è çàïóñêà ôàéëà ñöåíàðèÿ ñ ïîìîùüþ óòèëèòû Sqlcmd: sclcmd -S NameOfSQLServer -D WorksDB -V FIO="Petrenko P.I." -I SQLScript.sql
 ýòîì ïðèìåðå èñïîëüçóåòñÿ öåëûé ðÿä êëþ÷åé: · -S — èñïîëüçóåòñÿ äëÿ òîãî, ÷òîáû çàäàòü èìÿ àêòèâíîãî çàðåãèñòðèðîâàííîãî ñåðâåðà; · -D — ïîçâîëÿåò îïðåäåëèòü èìÿ áàçû äàííûõ, ñ êîòîðîé áóäåò óñòàíîâëåíî ñîåäèíåíèå.  äàííîì ñëó÷àå â êà÷åñòâå áàçû äàííûõ èñïîëüçóåòñÿ áàçà WorksDB; · -V — èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ ïåðåìåííîé FIO. Òàêæå äëÿ íåå çàäàåòñÿ çíà÷åíèå ïî óìîë÷àíèþ; · -I — êëþ÷, óêàçûâàþùèé Sqlcmd, ÷òî âñå ðåçóëüòàòû íåîáõîäèìî âûâîäèòü â ôàéë SQLScript.sql. Ïîìèìî òîãî, ÷òî âû ìîæåòå çàäàâàòü ïåðåìåííûå ïðè çàïóñêå óòèëèòû Sqlcmd, ñóùåñòâóåò íåñêîëüêî ïðåäîïðåäåëåííûõ ïåðåìåííûõ, êîòîðûå òàêæå ìîãóò èñïîëüçîâàòüñÿ âìåñòå ñ óòèëèòîé Sqlcmd. Ïîëíûé ñïèñîê ïåðåìåííûõ è ñîîòâåòñòâóþùèõ êëþ÷åé â Sqlcmd ïðèâåäåí â òàáë. 3.1. Òàáëèöà 3.1. Ñïèñîê ïåðåìåííûõ è ñîîòâåòñòâóþùèõ èì êëþ÷åé Sqlcmd ¹
Ïåðåìåííàÿ
Êëþ÷ Sqlcmd
1
SQLCMDCOLSEP
–s
2
SQLCMDCOLWIDTH
–w
3
SQLCMDDBNAME
–d
4
SQLCMDERRORLEVEL
–m
5
SQLCMDHEADERS
–h
6
SQLCMDLOGINTIMEOUT
–l
7
SQLCMDPACKETSIZE
–a
8
SQLCMDPASSWORD
–P
9
SQLCMDSERVER
–S
10
SQLCMDSTATTIMEOUT
–t
11
SQLCMDUSER
–U
12
SQLCMDWORKSTATION
–H
Ïîìèìî íàáîðà ïðåäîïðåäåëåííûõ ïåðåìåííûõ óòèëèòà Sqlcmd èìååò íàáîð ðàñøèðåííûõ êîìàíä. Äàííûå êîìàíäû, à òàêæå èõ îïèñàíèå ïðèâåäåíû â òàáë. 3.2.
3.2. Íîâûå ñðåäñòâà óïðàâëåíèÿ
85
Òàáëèöà 3.2. Ñïèñîê ðàñøèðåííûõ êîìàíä è èõ îïèñàíèå ¹
Êîìàíäà
Îïèñàíèå
1
:Connect [timeout]
Èñïîëüçóåòñÿ äëÿ ñîåäèíåíèÿ ñ ýêçåìïëÿðîì SQL Server
2
:Error (filename)
Ïîçâîëÿåò ïåðåíàïðàâèòü âûâîä ñîîáùåíèé îá îøèáêàõ â îïðåäåëåííûé ôàéë
3
:List
Èñïîëüçóåòñÿ äëÿ îòîáðàæåíèÿ ñîäåðæèìîãî êýøà êîìàíä
4
:On error [exit/retry/ ignore]
Ïîçâîëÿåò îïðåäåëèòü êîìàíäó, êîòîðàÿ áóäåò âûïîëíÿòüñÿ âî âðåìÿ âîçíèêíîâåíèÿ îøèáêè
5
:Out
Ïîçâîëÿåò ïåðåíàïðàâèòü âûâîä ðåçóëüòàòîâ âûïîëíåíèÿ çàïðîñà
6
:Perftrace (filename)
Ïåðåíàïðàâëÿåò âûâîä ñòàòèñòèêè ïðîèçâîäèòåëüíîñòè ñèñòåìû â îïðåäåëåííûé ôàéë
7
:ServerList
Èñïîëüçóåòñÿ äëÿ îòîáðàæåíèÿ ïîëíîãî ñïèñêà äîñòóïíûõ ñèñòåì ñ SQL Server
8
:XML[ON/OFF]
Îïðåäåëÿåò ïàðàìåòðû âûâîäà ðåçóëüòàòîâ â ôîðìàòå XML
9
[:]!!
Èñïîëüçóåòñÿ äëÿ âûïîëíåíèÿ ñèñòåìíûõ êîìàíä
10
[:]ED
Âûïîëíÿåò ðåäàêòèðîâàíèå êîìàíäû êýøà
11
[:]EXIT (results)
Èñïîëüçóåò çíà÷åíèå (results) â êà÷åñòâå ïàðàìåòðîâ âûõîäà
12
[:]GO[count]
Èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ êîíöà âûïîëíåíèÿ ïàêåòà äëÿ êýøèðîâàííûõ êîìàíä. Äîáàâëåíèå ïàðàìåòðà [count] ïîçâîëÿåò âûïîëíÿòü äàííóþ êîìàíäó îïðåäåëåííîå ÷èñëî ðàç
13
[:]QUIT
Èñïîëüçóåòñÿ äëÿ âûõîäà èç óòèëèòû Sqlcmd
14
[:]r (filename)
Ïîçâîëÿåò îïðåäåëèòü íàáîð êîìàíä Sqlcmd äëÿ îïðåäåëåííîãî ôàéëà
15
[:]RESET
Èñïîëüçóåòñÿ äëÿ î÷èñòêè êýøà
Ðàññìîòðèì èñïîëüçîâàíèå ðàñøèðåííîãî íàáîðà êîìàíä íà ïðèìåðå.  ïðèâåäåííîì ïðèìåðå ìû, èñïîëüçóÿ óòèëèòó Sqlcmd, âûïîëíèëè ñîåäèíåíèå ñ ñåðâåðîì WorksDB, à çàòåì âîçâðàòèëè çíà÷åíèå, êîòîðîå ÿâëÿåòñÿ ðåçóëüòàòîì âûïîëíåíèÿ çàïðîñà (ïîäñ÷åòà êîëè÷åñòâà ñòðîê â òàáëèöå): Ñ:\>sqlcmd 1> use WorksDB 2> :EXTT(select count{*) from Table1) ----------------------------Changed database context to 'WorksDB'. 91 (1 rows affected)
3.2. Íîâûå ñðåäñòâà óïðàâëåíèÿ Â SQL Server 2005 ïîÿâèëèñü íå òîëüêî íîâûå ñðåäñòâà äëÿ óïðàâëåíèÿ, íî è ñðåäñòâà äëÿ ñîçäàíèÿ ïðèëîæåíèé è èíòåãðàöèè ñ ñóùåñòâóþùèìè ñèñòåìàìè ðàçðàáîòêè (òàêèìè, êàê .NET Framework). Äëÿ ýòèõ öåëåé â SQL Server áûë ñîçäàí íîâûé íàáîð îáúåêòîâ — System Management Objects (SMO), ïîçâîëÿþùèé àâòîìàòèçèðîâàòü è óñêîðèòü ñîçäàíèå íîâûõ ïðèëîæåíèé. Ïîìèìî ýòîãî â SQL
86
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
Server 2005 ðàñøèðåí íàáîð ôóíêöèé API äëÿ ðàáîòû ñ ñåðâèñàìè àíàëèòèêè è ðåïëèêàöèè, ÷òî ïîçâîëÿåò ðàçðàáîò÷èêàì ñîçäàâàòü íîâûå ïðèëîæåíèÿ äëÿ ðàáîòû ñ äàííûìè ôóíêöèÿìè SQL Server. Åùå îäíèì ïðåèìóùåñòâîì SQL Server 2005 ÿâëÿåòñÿ ïîääåðæêà êîíôèãóðàöèè è ñîáûòèé WMI. Äàëåå ìû áîëåå äåòàëüíî ðàññìîòðèì System Management Objects, Analysis Management Objects, Replication Management Objects, à òàêæå WMI.
3.2.1. SQL Server Management Objects (SMO) Òàê æå êàê è ïðåäøåñòâåííèê, Distributed Management Objects (DMO), íîâûé íàáîð îáúåêòîâ SQL Server Management Objects (SMO) ñîçäàí ñ ó÷åòîì âñåõ òîíêîñòåé ðàáîòû SQL Server 2005. Îäíàêî â îòëè÷èå îò DMO, êîòîðûé áàçèðîâàëñÿ íà óñòàðåâàþùåé òåõíîëîãèè COM, íîâûé íàáîð îáúåêòîâ SMO áàçèðóåòñÿ íà áèáëèîòåêå êëàññîâ .NET. Ïîìèìî âñåãî ïðî÷åãî ýòî ïîäðàçóìåâàåò, ÷òî äëÿ ðàáîòû ñ íàáîðîì SMO òðåáóåòñÿ ñíà÷àëà óñòàíîâèòü íà êîìïüþòåð .NET Framework. Êðîìå SQL Server 2005, SMO ìîæåò èñïîëüçîâàòüñÿ äëÿ ñîçäàíèÿ ïðèëîæåíèé è óïðàâëåíèÿ â ñèñòåìàõ SQL Server 7.0 è SQL Server 2000.  îòíîøåíèè íàáîðà îáúåêòîâ ïîääåðæèâàåòñÿ íå òîëüêî ïðÿìàÿ ñîâìåñòèìîñòü, íî è îáðàòíàÿ: DMO òàêæå ïîääåðæèâàåòñÿ SQL Server 2005, îäíàêî â ýòîì ñëó÷àå âû íå ñìîæåòå èñïîëüçîâàòü ðÿä ïðåèìóùåñòâ, ïðåäîñòàâëÿåìûõ íîâûì íàáîðîì îáúåêòîâ. Íàïðèìåð, DMO íåëüçÿ èñïîëüçîâàòü äëÿ óïðàâëåíèÿ áðîêåðîì ñåðâèñîâ, íîâûìè òèïàìè VARBINARY, XML è äðóãèìè ïðåèìóùåñòâàìè SQL Server 2005. Ïîìèìî ýòîãî â SMO ïîÿâèëîñü îêîëî 150 íîâûõ êëàññîâ äëÿ ðàáîòû ñ íîâûìè âîçìîæíîñòÿìè SQL Server 2005. Âñå îíè îêàæóòñÿ íåäîñòóïíûìè ïðè èñïîëüçîâàíèè DMO. Ïîìèìî ïåðå÷èñëåííûõ ïðåèìóùåñòâ â SMO ïîÿâèëèñü ñëåäóþùèå: · îïòèìèçèðîâàííàÿ èíèöèàëèçàöèÿ îáúåêòîâ — ðàçðàáîò÷èê ìîæåò ñîçäàâàòü ýêçåìïëÿð îáúåêòà, êîòîðûé íå áóäåò òðåáîâàòü îïðåäåëåíèÿ âñåõ ñâîéñòâ âî âðåìÿ åãî ñîçäàíèÿ. Ýòî îçíà÷àåò, ÷òî SMO íå òðåáóåòñÿ ïîëó÷èòü âñþ èíôîðìàöèþ îáî âñåõ áàçàõ äàííûõ äàííîãî ñåðâåðà âî âðåìÿ ñîçäàíèÿ ýòîãî îáúåêòà. Ïîëíàÿ èíèöèàëèçàöèÿ ìîæåò áûòü âûïîëíåíà â ëþáîé ìîìåíò ïîñëå òîãî, êàê âûïîëíèòñÿ ñ÷èòûâàíèå ïîëíîãî ñïèñêà îáúåêòîâ. Îïòèìèçèðîâàííàÿ èíèöèàëèçàöèÿ îáúåêòà èñïîëüçóåòñÿ â îñíîâíîì äëÿ óñêîðåíèÿ ðàáîòû ïðèëîæåíèé; · óëó÷øåííûå âîçìîæíîñòè ïî îáðàáîòêå ñöåíàðèåâ ðåàëèçîâàíû çà ñ÷åò èñïîëüçîâàíèÿ íîâîãî êëàññà Scripter. Íîâûé êëàññ ìîæåò èñïîëüçîâàòüñÿ äëÿ ñîçäàíèÿ ñöåíàðèåâ äëÿ îáúåêòîâ áàçû äàííûõ è ñâÿçåé ìåæäó íèìè. Äëÿ ýòîãî èñïîëüçóþòñÿ ñëåäóþùèå òàáëèöû: Microsoft.SqlServer. Microsoft.SqlServer.Management.Smo.Common è MicroManagement.Smo, soft.SqlServer.Management.Smo.Agent.
3.2.2. Èñïîëüçîâàíèå Windows Management Instrumentation (WMI) Äëÿ óïðàâëåíèÿ SQL Server 2005 òàêæå ìîæåò èñïîëüçîâàòüñÿ èíñòðóìåíòàðèé API Windows — Windows Management Instrumentation (WMI). WMI ïðåäñòàâëÿåò ñîáîé ñòàíäàðò Microsoft, êîòîðûé ïîääåðæèâàåòñÿ ìíîãèìè ïðîãðàììíûìè
3.2. Íîâûå ñðåäñòâà óïðàâëåíèÿ
87
ïðîäóêòàìè.  ïðåäûäóùèõ âåðñèÿõ SQL Server äàííûé API íå ìîã áûòü ýôôåêòèâíî èñïîëüçîâàí, ïîñêîëüêó îí íå áûë äîñòàòî÷íî ðàçâèò â ïðåäûäóùèõ âåðñèÿõ ýòîãî ïðîãðàììíîãî ïðîäóêòà. Äëÿ óïðàâëåíèÿ SQL Server â ýòîì ñëó÷àå èñïîëüçîâàëèñü DMO è SQL Server Enterprise Manager. Äëÿ ïðåäîñòàâëåíèÿ åùå îäíîãî äîïîëíèòåëüíîãî ìåõàíèçìà óïðàâëåíèÿ ôóíêöèÿìè SQL Server 2005 áûë ðåàëèçîâàí è ðàçâèò ìåõàíèçì WMI, à òàêæå ðàñøèðåíû âîçìîæíîñòè ïðîâàéäåðà WMI äëÿ îáðàáîòêè íîâûõ ñîáûòèé WMI.
3.2.3. Ïðîâàéäåð WMI Íîâûé ïðîâàéäåð WMI â SQL Server 2005 ïîçâîëÿåò ðåàëèçîâàòü âîçìîæíîñòè óäàëåííîãî óïðàâëåíèÿ ïðèëîæåíèÿìè è SQL Server. WMI ñîçäàâàëñÿ ñ òàêèì ðàñ÷åòîì, ÷òî îí ìîæåò ðàáîòàòü êàê â ïîäêëþ÷åííîì ðåæèìå, òàê è â àâòîíîìíîì, ïîçâîëÿÿ îáðàáàòûâàòü çàïðîñû è ñîçäàâàòü ïðèëîæåíèÿ, êîãäà ñîåäèíåíèå ñ çàðåãèñòðèðîâàííûì ñåðâåðîì îòñóòñòâóåò. Äëÿ ðàáîòû ïðîâàéäåðà WMI èñïîëüçóåòñÿ òàáëèöà Microsoft.SqlServer.Smo.WMI.
3.2.4. Ñîáûòèÿ WMI Ðàñøèðåíèå WMI áûëî äîñòèãíóòî çà ñ÷åò èñïîëüçîâàíèÿ íîâûõ ñîáûòèé WMI è èõ îáðàáîòêè. Äëÿ ìîíèòîðèíãà âîçíèêíîâåíèÿ ýòèõ ñîáûòèé èñïîëüçóåòñÿ Microsoft Operations Manager (MOM) — ñïåöèàëüíîå ïðèëîæåíèå, ðàçðàáîòàííîå äëÿ âûïîëíåíèÿ ïîäîáíûõ ôóíêöèé. Ñîáûòèÿ WMI âîçíèêàþò ïðè âûïîëíåíèè âñåõ îïåðàöèé ñ ïîìîùüþ ïðîôàéëåðà. Íàïðèìåð, ñîáûòèÿ WMI ãåíåðèðóþòñÿ âî âðåìÿ ñîçäàíèÿ áàçû äàííûõ, åå óäàëåíèè, äîáàâëåíèè çíà÷åíèé, à òàêæå âî âðåìÿ äðóãèõ îïåðàöèé, âûïîëíÿåìûõ ïîëüçîâàòåëåì â SQL Server. Ñîáûòèÿ WMI ãåíåðèðóþòñÿ íå òîëüêî ÿäðîì SQL Server, íî è ñåðâèñàìè îò÷åòîâ, àíàëèòèêè è ïðåîáðàçîâàíèÿ äàííûõ.
3.2.5. Íàáîð îáúåêòîâ Analysis Management Objects (AMO) Äëÿ ðàáîòû ñ ñåðâèñàìè àíàëèòèêè è ñîçäàíèÿ ïðèëîæåíèé íà èõ îñíîâå â SQL Server 2005 ïðåäóñìîòðåí êîìïîíåíò Analysis Management Objects (AMO) — íàáîð îáúåêòîâ äëÿ ñîçäàíèÿ ïðèëîæåíèé ñåðâèñîâ àíàëèòèêè. Ïîìèìî óïðàâëåíèÿ ñåðâèñàìè àíàëèòèêè AMO ìîæåò áûòü èñïîëüçîâàí äëÿ óïðàâëåíèÿ ñëåäóþùèìè îáúåêòàìè SQL Server 2005: · èñòî÷íèêè äàííûõ; · êóáû; · èçìåðåíèÿ; · ìîäåëè èíôîðìàöèîííîé ïðîõîäêè. Òàê æå êàê è SMO, AMO ïîñòðîåíî íà îñíîâå ñðåäû ðàçðàáîòêè .NET Framework è òðåáóåò åå óñòàíîâêè. AMO ïîñòðîåíî íà îñíîâå áèáëèîòåêè COM-îáúåêòîâ, êîòîðàÿ íîñèò íàçâàíèå Decision Support Objects (DSO). Äëÿ AMO ïîääåðæèâàåòñÿ îáðàòíàÿ ñîâìåñòèìîñòü. Ýòî îçíà÷àåò, ÷òî SQL Server 2005 ìîæåò èñïîëüçîâàòü â ñâîåé ðàáîòå áîëåå ðàííèå âåðñèè AMO.
88
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
Âî âðåìÿ ðàáîòû AMO ãåíåðèðóåò íàáîð XML-ñîîáùåíèé, êîòîðûå èñïîëüçóþòñÿ äëÿ ñîçäàíèÿ è èçìåíåíèÿ ïàðàìåòðîâ èëè óäàëåíèÿ îáúåêòîâ ñåðâèñîâ àíàëèòèêè. Ýòè ñîîáùåíèÿ ìîãóò áûòü ñîõðàíåíû â âèäå îòäåëüíûõ ôàéëîâ äëÿ äàëüíåéøåãî èñïîëüçîâàíèÿ. Äëÿ õðàíåíèÿ îáúåêòîâ èñïîëüçóåòñÿ òàáëèöà Microsoft.SqlServer.Management.AnalysisServices.
3.2.6. Áèáëèîòåêà Replication Management Objects (RMO) Íàáîð îáúåêòîâ SMO ñîçäàâàëñÿ äëÿ óïðàâëåíèÿ ïðàêòè÷åñêèìè âñåìè âîçìîæíûìè ïàðàìåòðàìè SQL Server 2005, îäíàêî îí íå îõâàòûâàåò âîçìîæíîñòè ýòîãî ïðîãðàììíîãî ïðîäóêòà â îòíîøåíèè ðåïëèêàöèè. Äëÿ ýòèõ öåëåé ñîçäàíà åùå îäíà áèáëèîòåêà — Replication Management Objects (RMO). Ýòà áèáëèîòåêà èñïîëüçóåòñÿ äëÿ íàñòðîéêè ïàðàìåòðîâ ðåïëèêàöèè è áàçèðóåòñÿ, òàê æå êàê è ñâîè ðîäñòâåííèêè AMO è SMO, íà îñíîâå ñðåäû ðàçðàáîòêè .NET Framework. RMO ñîäåðæèò íàáîð êëàññîâ, êîòîðûå ïîçâîëÿþò âûïîëíèòü ðåïëèêàöèþ, àäìèíèñòðèðîâàíèå, ñèíõðîíèçàöèþ è ìîíèòîðèíã ðàñïðåäåëåííûõ ñèñòåì ñ èñïîëüçîâàíèåì ìåõàíèçìà ðåïëèêàöèè. Äëÿ èñïîëüçîâàíèÿ RMO â SQL Server 2005 èñïîëüçóåòñÿ òàáëèöà Microsoft.SqlServer.Replication.
3.3. Ñðåäñòâà óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè Ïîìèìî íàáîðà èíñòðóìåíòîâ äëÿ ðàçðàáîòêè ïðèëîæåíèé SQL Server 2005, ñåðâèñîâ àíàëèòèêè, ñåðâèñîâ îò÷åòîâ è äðóãèõ ïðèëîæåíèé â SQL Server ñóùåñòâóåò ðÿä ïðèëîæåíèé è óòèëèò, èñïîëüçóþùèõñÿ ñïåöèàëüíî äëÿ îïòèìèçàöèè ðàáîòû ïðèëîæåíèé, áàç äàííûõ, ñåðâåðîâ è ò. ä. Îíè ïîçâîëÿþò ïðîàíàëèçèðîâàòü ðàáîòó ïðèëîæåíèé, âûÿâèòü ñëàáûå ìåñòà è óìåíüøèòü íàãðóçêó íà ñåðâåð çà ñ÷åò îïòèìèçàöèè åãî ðàáîòû. Ïî ñðàâíåíèþ ñ ïðåäûäóùèìè âåðñèÿìè SQL Server êîëè÷åñòâî ïîäîáíûõ óòèëèò óâåëè÷èëîñü. È ýòî íåóäèâèòåëüíî, ïîñêîëüêó âîçìîæíîñòè íîâîé âåðñèè SQL Server íåñðàâíèìû ñ âîçìîæíîñòÿìè ñòàðûõ âåðñèé, à ñëåäîâàòåëüíî, âîçðàñòàåò íàãðóçêà íà ñåðâåð è òðåáîâàíèÿ ê íåìó è åãî íàñòðîéêå.  äàííîì ðàçäåëå ìû ðàññìîòðèì íîâûå ñðåäñòâà äëÿ óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè SQL Server 2005. Äëÿ ýòîãî èñïîëüçóþòñÿ òàêèå óòèëèòû, êàê Showplan, Profiler è Database Tuning Advisor.
3.3.1. Óòèëèòà Profiler Ïðîôàéëåð ðàíåå èñïîëüçîâàëñÿ â ñèñòåìàõ SQL Server áîëåå ðàííèõ âåðñèé, ïîýòîìó îí íå ÿâëÿåòñÿ íîâûì ïðåäñòàâèòåëåì ïîäîáíîãî êëàññà óòèëèò. Îäíàêî â íîâîé âåðñèè ýòîãî ïðèëîæåíèÿ ïîÿâèëîñü íåñêîëüêî óëó÷øåíèé, íà êîòîðûõ õîòåëîñü áû çàîñòðèòü âàøå âíèìàíèå. Ðàíåå âî âðåìÿ îáíîâëåíèÿ SQL Server íåîáõîäèìî áûëî òàêæå âûïîëíÿòü ñîîòâåòñòâóþùåå îáíîâëåíèå ïðîôàéëåðà. Èíà÷å èíôîðìàöèÿ, îòîáðàæàåìàÿ ïðîôàéëåðîì, â ëó÷øåì ñëó÷àå áóäåò íåêîððåêòíà, à â õóäøåì ïðîôàéëåð íå áóäåò ðàáîòàòü. Ïîäîáíàÿ çàâèñèìîñòü âåðñèè óòèëèòû îò âåðñèè SQL Server òðåáîâàëà ïðèñòàëüíîãî âíèìàíèÿ ñî ñòîðîíû àäìèíèñòðàòîðîâ. Ñ âûõîäîì SQL Server 2005 ýòà çàâèñèìîñòü èñ÷åçëà, ïîñêîëüêó èíôîðìàöèÿ òåïåðü õðàíèòñÿ íå â òàáëèöàõ SQL Server, à â XML-ôàéëàõ. Áëàãîäàðÿ
3.3. Ñðåäñòâà óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè
89
ýòîìó íàñòðîå÷íàÿ èíôîðìàöèÿ íå çàâèñèò îò âåðñèè SQL Server, à ñëåäîâàòåëüíî, íå òðåáóåò îáíîâëåíèÿ ïðîôàéëåðà âìåñòå ñ îáíîâëåíèåì SQL Server. Ïðîôàéëåð ðàáîòàåò â ñëó÷àå îáíîâëåíèÿ ñëåäóþùèì îáðàçîì: âî âðåìÿ çàïóñêà îí èíèöèèðóåò ñîåäèíåíèå ñ ñóùåñòâóþùèì ñåðâåðîì SQL è ïðîâåðÿåò åãî âåðñèþ. Åñëè ýòî îêàçàëàñü ñòàðàÿ âåðñèÿ, ñ êîòîðîé ðàíåå ðàáîòàë ïðîôàéëåð, òî îí ïîëó÷àåò ñîîòâåòñòâóþùóþ èíôîðìàöèþ è ñòàíîâèòñÿ äîñòóïåí äëÿ âûïîëíåíèÿ äåéñòâèé. Åñëè æå âåðñèÿ SQL Server èçìåíèëàñü, òî ïðîôàéëåð âûïîëíÿåò çàãðóçêó íîâûõ íàñòðîåê â ôîðìàòå XML. Ïîñëå âûïîëíåíèÿ çàãðóçêè íàñòðîå÷íîé èíôîðìàöèè ïðîôàéëåð ñòàíîâèòñÿ äîñòóïåí äëÿ ðàáîòû.
3.3.2. Ïðîôèëè ñåðâèñîâ àíàëèòèêè Îäíèì èç íàèáîëåå çíà÷èìûõ èçìåíåíèé â íîâîé âåðñèè ïðîôàéëåðà ÿâëÿåòñÿ âîçìîæíîñòü âûïîëíåíèÿ MDX-çàïðîñîâ ê ñåðâèñó àíàëèòèêè. Âûïîëíåíèå ïîäîáíûõ çàïðîñîâ ñåðâèñîì àíàëèòèêè ïðîèñõîäèò òî÷íî òàêèì æå îáðàçîì, ÷òî è âûïîëíåíèå îáû÷íîãî SQL-çàïðîñà ÿäðîì SQL Server 2005.
3.3.3. Àãðåãèðîâàííûå ïðåäñòàâëåíèÿ Àãðåãèðîâàííûå ïðåäñòàâëåíèÿ ïðîôàéëåðà SQL Server 2005 ïîçâîëÿþò ðàçðàáîò÷èêàì è àäìèíèñòðàòîðàì âûïîëíÿòü ãðóïïèðîâêó ñîáûòèé äëÿ îòîáðàæåíèÿ èõ îáùåãî êîëè÷åñòâà è óïðîùåíèÿ ðàáîòû ñ íèìè. Íàïðèìåð, âû ìîæåòå ïðîñìîòðåòü ñîáûòèÿ ïðîôàéëåðà ñîãëàñíî êîäàì ïðîöåññîâ (SPID — system process ID), à òàêæå ñîáûòèÿì ñõîäà â ñèñòåìó. Ýòî ïîçâîëèò ñîïîñòàâèòü âõîä â ñèñòåìó ñ êîäîì ïðîöåññà. Òàêæå àãðåãèðîâàííûå ïðåäñòàâëåíèÿ ïðåäîñòàâëÿþò èíôîðìàöèþ äëÿ îöåíêè òåíäåíöèé è ñîáûòèé áåç íåîáõîäèìîñòè ïîñòðîåíèÿ ãðàôèêîâ è âûãðóçêè ðåçóëüòàòîâ ðàáîòû ïðîôàéëåðà â òàáëèöó ñ öåëüþ äàëüíåéøåãî àíàëèçà.
3.3.4. Íàáîð ðàçðåøåíèé äëÿ òðàññèðîâêè Åùå îäíî ïðåèìóùåñòâî, êîòîðîå ïîÿâèëîñü â ïðîôàéëåðå, — ýòî âîçìîæíîñòü òðàññèðîâêè çàïðîñîâ è óïðàâëåíèÿ ïðàâàìè íà âûïîëíåíèå ýòîé îïåðàöèè. Äëÿ òîãî ÷òîáû óïðàâëÿòü ïðàâàìè íà òðàññèðîâêó âûïîëíåíèÿ çàïðîñîâ ñ ïîìîùüþ ïðîôàéëåðà, íåîáõîäèìî èìåòü ïðèâèëåãèè ñèñòåìíîãî àäìèíèñòðàòîðà. Äëÿ âûïîëíåíèÿ òðàññèðîâêè çàïðîñîâ â SQL Server 2005 ïðåäóñìîòðåíà ðîëü Trace. Ýòó ðîëü ìîæíî ñâÿçàòü ñ ñîîòâåòñòâóþùåé ó÷åòíîé çàïèñüþ ïîëüçîâàòåëÿ, êîòîðûé áóäåò âûïîëíÿòü òðàññèðîâêó ñ ïîìîùüþ ïðîôàéëåðà.  ýòîì ñëó÷àå ïîëüçîâàòåëþ íåò íåîáõîäèìîñòè âõîäèòü â ñîñòàâ ãðóïïû ñèñòåìíûõ àäìèíèñòðàòîðîâ, ÷òîáû âûïîëíÿòü òðàññèðîâêó. Äëÿ ýòîãî íåîáõîäèìî òîëüêî äîáàâèòü åãî ó÷åòíóþ çàïèñü â ãðóïïó Trace.
3.3.5. Èçâëå÷åíèå äàííûõ ñîãëàñíî èõ òèïó Ïðîôàéëåð SQL Server 2005 èìååò îäíó èíòåðåñíóþ îñîáåííîñòü: îí ìîæåò âûïîëíÿòü çàïðîñû ïî-ðàçíîìó â çàâèñèìîñòè îò òèïà ñîáûòèÿ. Íàïðèìåð, ìîæåò ïîòðåáîâàòüñÿ èçâëå÷ü âñå êîìàíäû SQL èç îïðåäåëåííîé ñåññèè è çàïèñàòü
90
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
èõ â îòäåëüíûé SQL-ôàéë ñ öåëüþ äàëüíåéøåãî àíàëèçà â SQL Server Management Studio. Àíàëîãè÷íîå äåéñòâèå ìîæíî âûïîëíèòü òàêæå â îòíîøåíèè MDX- è DMXçàïðîñîâ. Ïîìèìî ýòîãî âû òàêæå ìîæåòå èçâëåêàòü èç ñåññèè áëîêèðîâî÷íûå çàïðîñû è àíàëèçèðîâàòü èõ äåéñòâèå íà ñèñòåìó. Ýòî ïðåäîñòàâëÿåò ðàçðàáîò÷èêàì è àäìèíèñòðàòîðàì äîïîëíèòåëüíûå ñðåäñòâà äëÿ àíàëèçà ðàáîòû SQL Server è îïòèìèçàöèè çàïðîñîâ.
3.3.6. Óòèëèòà Create Trace Wizard Ìàñòåð òðàññèðîâêè (óòèëèòà Create Trace Wizard) — ýòî åùå îäíî ïðåèìóùåñòâî SQL Server 2005. Îí ïðèñóòñòâîâàë â áîëåå ðàííèõ âåðñèÿõ SQL Server, íà÷èíàÿ ñ âåðñèè 7.0. Îäíàêî â SQL Server 2000 ðàçðàáîò÷èêè îòêàçàëèñü îò íåãî. Òåïåðü îíè ðåøèëè âåðíóòüñÿ íà êðóãè ñâîÿ è âîçðîäèòü äàííóþ óòèëèòó. Ìàñòåð òðàññèðîâêè ïîçâîëÿò óïðîñòèòü ïðîöåññ òðàññèðîâêè çàïðîñîâ, ïðåäîñòàâëÿÿ àäìèíèñòðàòîðó íàáîð ýòàïîâ, ïðîéäÿ êîòîðûå îí ñìîæåò íàñòðîèòü òðàññèðîâêó çàïðîñîâ SQL Server.
3.3.7. Ðåäàêòîð çàïðîñîâ SQL SMS  ïðåäûäóùèõ âåðñèÿõ SQL Server ðîëü ðåäàêòîðà çàïðîñîâ âûïîëíÿë àíàëèçàòîð çàïðîñîâ (Query Analyzer). Ýòî ïðèëîæåíèå èìåëî âîçìîæíîñòü â ãðàôè÷åñêîì âèäå îòîáðàæàòü ïëàí âûïîëíåíèÿ çàïðîñîâ, ÷òî óïðîùàëî ñîçäàíèå ñëîæíûõ çàïðîñîâ è èõ âûïîëíåíèå. Ñ ïîìîùüþ ãðàôè÷åñêîãî îòîáðàæåíèÿ ïëàíà çàïðîñîâ ìîæíî áûëî ëåãêî êîíòðîëèðîâàòü õîä èõ âûïîëíåíèÿ, à ïðè íåîáõîäèìîñòè îòëàæèâàòü. Íîâàÿ óòèëèòà òàêæå ïîçâîëÿåò àâòîìàòèçèðîâàòü âûïîëíåíèå çàïðîñîâ è ïðåäñòàâèòü èõ â ãðàôè÷åñêîì âèäå. Ïîìèìî ýòîãî ðåäàêòîð çàïðîñîâ SQL Server Management Studio ïîçâîëÿåò ñîçäàâàòü ïðåäïîëàãàåìûé ïëàí âûïîëíåíèÿ çàïðîñà, êîòîðûé â îáùåì ñëó÷àå ìîæåò îòëè÷àòüñÿ îò ðåàëüíîãî. Îáùèé âèä ðåäàêòîðà çàïðîñîâ SQL SMS ïðèâåäåí íà ðèñ. 3.7. Ïîìèìî âîçìîæíîñòè ñîçäàâàòü ïðåäïîëàãàåìûå ïëàíû âûïîëíåíèÿ çàïðîñîâ â ðåäàêòîðå çàïðîñîâ ïîÿâèëàñü âîçìîæíîñòü âûäåëåíèÿ öâåòîì êîìàíä, èìåí ïåðåìåííûõ, õðàíèìûõ ïðîöåäóð è ïîëüçîâàòåëüñêèõ ôóíêöèé. Ýòî çíà÷èòåëüíî óïðîùàåò ïðîöåññ ðàçðàáîòêè ïðèëîæåíèé.  ðåäàêòîðå çàïðîñîâ èñïîëüçóåòñÿ ñëåäóþùàÿ öâåòîâàÿ ïàëèòðà äëÿ âûäåëåíèÿ ðàçëè÷íûõ êîìàíä: · æåëòûé — äëÿ âûäåëåíèÿ êóðñîðà; · çåëåíûé — äëÿ âûäåëåíèÿ êîíñòðóêöèé íà SQL; · ñèíèé — äëÿ èòåðàòîðîâ. Çíà÷åíèÿ ïåðåìåííûõ, êîòîðûå èñïîëüçîâàëèñü äëÿ ïàðàìåòðèçàöèè çàïðîñîâ, áóäóò îòîáðàæàòüñÿ â îêíå Showplan. Ýòî ïîçâîëÿåò â èíòåðàêòèâíîì ðåæèìå ïðîñìàòðèâàòü ñîäåðæèìîå ïàðàìåòðîâ. Òàêæå äàííàÿ èíôîðìàöèÿ ìîæåò ñîäåðæàòü èíôîðìàöèþ î òîì, ÷òî ðàçðàáîò÷èêîì èñïîëüçóþòñÿ ðàñøèðåíèÿ (UDX) â êà÷åñòâå ÷àñòè çàïðîñà.  îòëè÷èå îò àíàëèçàòîðà çàïðîñîâ, ðåäàêòîð çàïðîñîâ ïîçâîëÿåò âûïîëíÿòü ýêñïîðò ñîçäàííûõ çàïðîñîâ è ïëàíîâ èõ âûïîëíåíèÿ. Äëÿ ñîõðàíåíèÿ ïëàíà âûïîëíåíèÿ çàïðîñà èñïîëüçóåòñÿ XML-äîêóìåíò. Ýòîò äîêóìåíò âïîñëåäñòâèè ìîæåò
3.3. Ñðåäñòâà óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè
91
áûòü îòïðàâëåí äðóãîìó ðàçðàáîò÷èêó äëÿ îáìåíà îïûòîì èëè èìïîðòèðîâàíèÿ â ñèñòåìó. Äëÿ òîãî ÷òîáû èìïîðòèðîâàòü äàííûé ôàéë â äðóãóþ ñèñòåìó, íå òðåáóåòñÿ èìåòü ïîäîáíóþ áàçó äàííûõ. Íåñìîòðÿ íà ïîÿâëåíèå íîâîãî ôîðìàòà äëÿ õðàíåíèÿ ïëàíîâ âûïîëíåíèÿ, ñòàðûé ôîðìàò (òåêñò ñ ãðàôèêîé) òàêæå ïîääåðæèâàåòñÿ.
Ðèñ. 3.7. Ïëàí âûïîëíåíèÿ çàïðîñà â SQL Server Management Studio
3.3.8. Óòèëèòà Database Tuning Advisor Åùå îäíèì íîâîââåäåíèåì SQL Server 2005 ÿâëÿåòñÿ óòèëèòà Database Tuning Advisor, êîòîðàÿ ïîçâîëÿåò íàñòðàèâàòü ïðîèçâîäèòåëüíîñòü ïðèëîæåíèé, ðàáîòàþùèõ ñ áàçîé äàííûõ Microsoft SQL. Íà ñàìîì äåëå ýòî íå íîâûé ïðîäóêò, à óëó÷øåííàÿ âåðñèÿ ïðîãðàììíîãî ïðîäóêòà, êîòîðûé ðàíåå áûë èçâåñòåí ïîä íàçâàíèåì «Index Tuning Wizard». Ýòà óòèëèòà ïîçâîëÿëà íàñòðàèâàòü èíäåêñû òàáëèö äëÿ óëó÷øåíèÿ îáùåé ïðîèçâîäèòåëüíîñòè ñèñòåìû. Database Tuning Advisor íè÷åì íå îòëè÷àåòñÿ îò ñâîåãî ïðåäêà, ïåðåíèìàÿ îñíîâíóþ ôóíêöèîíàëüíîñòü Index Tuning Wizard, îäíàêî ïîçâîëÿåò íå òîëüêî íàñòðàèâàòü èíäåêñû. Ñðåäè ôóíêöèé Database Tuning Advisor ñòîèò âûäåëèòü ñëåäóþùèå: · ñîçäàíèå è íàñòðîéêà ðàçäåëîâ; · âûïîëíåíèå èíäåêñèðîâàíèÿ ïî ðàñïèñàíèþ; · óëó÷øåííûå ôóíêöèè WHATIF-àíàëèçà. Òåïåðü óòèëèòà Database Tuning Advisor ïðåäñòàâëÿåò ñîáîé ïîëíîöåííîå ïðèëîæåíèå, à íå íàáîð ðàçíîðîäíûõ èíñòðóìåíòîâ è äèàëîãîâ, êàê ýòî áûëî ñ Index Tuning Wizard. Îáùèé âèä îêíà Database Tuning Advisor ïðèâåäåí íà ðèñ. 3.8.
92
Ãëàâà 3 • Óòèëèòû è ñðåäñòâà àäìèíèñòðèðîâàíèÿ áàç äàííûõ
Ðèñ. 3.8. Îáùèé âèä îêíà óòèëèòû Database Tuning Advisor
3.3.9. Óïðàâëåíèå ðàçäåëàìè â Database Tuning Advisor Ïîìèìî ïîääåðæêè èíäåêñîâ óòèëèòà Database Tuning Advisor ïîçâîëÿåò ñîçäàâàòü è íàñòðàèâàòü ðàçäåëû áàçû äàííûõ SQL Server 2005. Ïðè ýòîì â Database Tuning Advisor ìîæíî èñïîëüçîâàòü êàê íàñòðîåííûå ðàçäåëû, òàê è íåíàñòðîåííûå (íàñòðîåííûé ðàçäåë èñïîëüçóåò ãðóïïîâîé èíäåêñ, êîòîðûé èìååò òîò æå ïîðÿäîê ñòðîê, ÷òî è òàáëèöà; íåíàñòðîåííûé ðàçäåë èñïîëüçóåò íåãðóïïîâîé èíäåêñ, â êîòîðîì ïîðÿäîê çàïèñåé îòëè÷àåòñÿ îò ïîðÿäêà â èíäåêñèðóåìîé òàáëèöå). Ïîìèìî âîçìîæíîñòè ñîçäàíèÿ è íàñòðîéêè ðàçäåëà óòèëèòà Database Tuning Advisor ìîæåò áûòü èñïîëüçîâàíà äëÿ óäàëåíèÿ îòäåëüíûõ ðàçäåëîâ, â êîòîðûõ íåò íåîáõîäèìîñòè. Áîëåå äåòàëüíî äàííóþ óòèëèòó, à òàêæå ìåõàíèçì èñïîëüçîâàíèÿ ðàçäåëîâ ìû ðàññìîòðåëè â ðàçäåëå 3.3.8 «Óòèëèòà Database Tuning Advisor» äàííîé êíèãè.
3.3.10. Ïðèîñòàíîâêà ðàáîòû â Database Tuning Advisor Ïðåäîê óòèëèòû Database Tuning Advisor ðàáîòàë â îäíîîêîííîì ðåæèìå, ÷òî ïîçâîëÿëî çàïóñòèòü òîëüêî îäèí ìàñòåð íàñòðîéêè èíäåêñà. Â ýòîì ïðèëîæåíèè íå áûëî âîçìîæíîñòè ïðèîñòàíîâèòü ðàáîòó ìàñòåðà èëè çàïóñêàòü åãî çàíîâî. Â íîâîé âåðñèè ýòîãî ïðîäóêòà ïîÿâèëàñü âîçìîæíîñòü ïðèîñòàíàâëèâàòü ðàáîòó ìàñòåðà è çàïóñêàòü åãî çàíîâî. Ïîìèìî ýòîãî ïðîäîëæèòü âûïîëíåíèå ðàáîòû Database Tuning Advisor òàêæå ìîæíî íà äðóãîì êîìïüþòåðå, ÷òî óïðîùàåò ïðîöåññ àäìèíèñòðèðîâàíèÿ.
3.3. Ñðåäñòâà óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè
93
3.3.11. Íàñòðîéêà ïî ðàñïèñàíèþ Óòèëèòà Database Tuning Advisor ïîääåðæèâàåò íåñêîëüêî ðàñïðîñòðàíåííûõ ñöåíàðèåâ ðàáîòû ñ ðàñïèñàíèåì. Òàê æå êàê è Index Tuning Wizard, ýòà óòèëèòà ìîæåò ðàáîòàòü íà ïðîòÿæåíèè äëèòåëüíûõ ïåðèîäîâ âðåìåíè, êîòîðûå îáû÷íî òðåáóþòñÿ äëÿ íàñòðîéêè èíäåêñîâ. Íà ïðîòÿæåíèè ýòîãî âðåìåíè Database Tuning Advisor âûïîëíèò îïòèìàëüíîå èíäåêñèðîâàíèå âûáðàííûõ òàáëèö. Îäíàêî âîñïîëüçîâàòüñÿ ðàñïèñàíèåì òàêæå ìîæíî è â äðóãîì íàïðàâëåíèè. Ñ ïîìîùüþ ðàñïèñàíèÿ ìîæíî çàäàòü ïðîìåæóòîê âðåìåíè, íà ïðîòÿæåíèè êîòîðîãî áóäåò ðàáîòàòü Database Tuning Advisor. Ïî èñòå÷åíèè ýòîãî âðåìåíè óòèëèòà âûïîëíèò íàèëó÷øåå èíäåêñèðîâàíèå òàáëèö, êîòîðîå ìîæåò áûòü äîñòèæèìî çà ýòîò ïðîìåæóòîê âðåìåíè. Èíûìè ñëîâàìè, íàñòðàèâàÿ ðàñïèñàíèå, âû îãðàíè÷èâàåòå ðàáîòó óòèëèòû Database Tuning Advisor âî âðåìåíè è óõóäøàåòå ðåçóëüòàòû åå ðàáîòû.
3.3.12. Ïîääåðæêà ìåòîäèêè WHATIF Åùå îäíî ïðåèìóùåñòâî óòèëèòû Database Tuning Advisor — ýòî âîçìîæíîñòü íàñòðàèâàòü ïðèëîæåíèÿ, èñïîëüçóÿ ìåòîäèêó WHATIF. Ýòî ïîçâîëÿåò ðàçðàáîò÷èêàì âûïîëíÿòü òåñòèðîâàíèå ñîçäàííîãî ñöåíàðèÿ ñîãëàñíî óñòàíîâëåííûì ïàðàìåòðàì, à òàêæå èçìåíÿòü ýòè ïàðàìåòðû ñîãëàñíî ïîòðåáíîñòÿì ðåøàåìûõ áèçíåñ-çàäà÷. Ïóñòü, íàïðèìåð, ñîãëàñíî òðåáîâàíèÿì êëèåíòà, äëÿ êîòîðîãî ðàçðàáàòûâàåòñÿ ðåøåíèå, íåîáõîäèìî âûïîëíèòü èíäåêñèðîâàíèå òàáëèö, îäíàêî âàø îïûò ïîäñêàçûâàåò, ÷òî ïîäîáíîå èíäåêñèðîâàíèå íå óëó÷øèò ñêîðîñòü ðàáîòû áàçû äàííûõ è âûïîëíåíèå çàïðîñîâ. Èñïîëüçóÿ ìåòîäèêó WHATIF, âû ñìîæåòå ëåãêî ïðîòåñòèðîâàòü ðàáîòó ïðèëîæåíèÿ â ñëó÷àå èñïîëüçîâàíèÿ èíäåêñà, ïðè ýòîì íå íàñòðàèâàÿ åãî.
Áðîêåð çàïðîñîâ SQL Server
4
Áðîêåð ñåðâèñîâ Microsoft SQL Server — ýòî íîâàÿ ïîäñèñòåìà, êîòîðàÿ ïîçâîëÿåò ðåàëèçîâàòü ìåõàíèçì î÷åðåäè çàïðîñîâ ê îäíîìó èç ñåðâèñîâ è äîáàâèòü ôóíêöèîíàëüíîñòü óïðàâëåíèÿ äàííîé î÷åðåäüþ. Àñèíõðîííîå óïðàâëåíèå î÷åðåäüþ äîáàâëÿåò äîïîëíèòåëüíûé óðîâåíü ãèáêîñòè ïðèëîæåíèÿì Microsoft SQL Server 2005. Ðàíåå ïîäîáíûå ïîäñèñòåìû ñóùåñòâîâàëè â äðóãèõ ñèñòåìàõ óïðàâëåíèÿ áèçíåñ-ïðîöåññàìè è îáðàáîòêè çàïðîñîâ ïîëüçîâàòåëåé, âåá-ñåðâåðàõ, ñèñòåìàõ ââîäà-âûâîäà è äð.  íîâîé âåðñèè SQL Server ñïåöèàëèñòû Microsoft ðåøèëè äîáàâèòü ýòó ôóíêöèîíàëüíîñòü äàííîìó ïðîãðàììíîìó ðåøåíèþ. Äîáàâëåíèå ôóíêöèîíàëüíîñòè óïðàâëåíèÿ î÷åðåäÿìè â SQL Server 2005 ïîçâîëèëî îáðàáàòûâàòü àñèíõðîííî ïîñòóïàþùèå çàïðîñû è óïðàâëÿòü ïðîöåññîì èõ îáðàáîòêè. Ýòî, â ïåðâóþ î÷åðåäü, ïîçâîëÿåò áîëåå ãèáêî ðàñïðåäåëÿòü ïèêîâûå íàãðóçêè íà áàçó äàííûõ, òåì ñàìûì ïîâûøàÿ óðîâåíü óïðàâëÿåìîñòè â ïðèëîæåíèÿõ Microsoft SQL Server 2005. Óïðàâëåíèå î÷åðåäüþ ÿâëÿåòñÿ âàæíûì ïàðàìåòðîì, êîòîðûé ó÷èòûâàåòñÿ ïðè ìàñøòàáèðîâàíèè ñèñòåì. Îí ïîçâîëÿåò ïðèëîæåíèÿì îáðàáàòûâàòü áîëüøåå êîëè÷åñòâî ïîñòóïàþùèõ îò ïîëüçîâàòåëåé çàïðîñîâ, ÷åì ñèñòåìà ôèçè÷åñêè ìîæåò èõ îáðàáîòàòü. Äàííûå çàïðîñû êýøèðóþòñÿ è ïîìåùàþòñÿ â î÷åðåäü. Êîãäà ïðèëîæåíèå îñâîáîäèòñÿ è áóäåò ñïîñîáíî îáðàáîòàòü äàííûå çàïðîñû, îíè äîñòàþòñÿ èç êýøà è ïåðåäàþòñÿ íà îáðàáîòêó ñåðâèñó. Ïðîèëëþñòðèðóåì ïðåèìóùåñòâà î÷åðåäè çàïðîñîâ íà ïðèìåðå. Íàïðèìåð, èìååòñÿ âåá-ñåðâåð ñ äîñòàòî÷íî áîëüøèì êîëè÷åñòâîì ïîëüçîâàòåëåé. Êàæäûé èç ýòèõ ïîëüçîâàòåëåé ïûòàåòñÿ ïîëó÷èòü îïðåäåëåííóþ èíôîðìàöèþ ñ âåá-ñåðâåðà (âåá-ñòðàíèöû, ôàéëû è äðóãèå äàííûå). Êîëè÷åñòâî ïîäîáíûõ ïîëüçîâàòåëåé íàñòîëüêî âåëèêî, ÷òî âåá-ñåðâåð íå ìîæåò ôèçè÷åñêè îáñëóæèòü èõ çàïðîñû.  ýòîì ñëó÷àå áîëüøàÿ ÷àñòü ïîëüçîâàòåëåé, êîòîðûå íå ñìîãëè ïîäêëþ÷èòüñÿ ê ñåðâåðó, ïîëó÷èò ñîîáùåíèå î òîì, ÷òî ñåðâåð íåäîñòóïåí. Åñëè æå èñïîëüçóåòñÿ î÷åðåäü çàïðîñîâ, âåá-ñåðâåð ïîìåùàåò âñå ïîñòóïàþùèå çàïðîñû â î÷åðåäü è âûïîëíÿåò èõ îáðàáîòêó ñîãëàñíî ïîëîæåíèþ â î÷åðåäè. ×òî êàñàåòñÿ áðîêåðà
4.1. Îáçîð áðîêåðà çàïðîñîâ
95
îïðåäåëåííîãî ñåðâèñà, òî îí áóäåò âûïîëíÿòü ïîñòàíîâêó â î÷åðåäü çàïðîñîâ, ïîñòóïàþùèõ ñåðâèñó, ñ öåëüþ èõ ïîñëåäóþùåé îáðàáîòêè.  äàííîé ãëàâå ìû ðàññìîòðèì âîçìîæíîñòè, ðåàëèçóåìûå áðîêåðîì ñåðâèñîâ SQL Server 2005, èçó÷èì äàííóþ ïîäñèñòåìó, à òàêæå êîìïîíåíòû, âõîäÿùèå â åå ñîñòàâ, è âîçìîæíîñòè, ïðåäîñòàâëÿåìûå åþ äëÿ ðàçðàáîò÷èêîâ è ïîëüçîâàòåëåé. Ïîñëå òîãî êàê ìû âûïîëíèì îáçîð áðîêåðà çàïðîñîâ è èçó÷èì òàêèå áàçîâûå ïîíÿòèÿ áðîêåðà çàïðîñîâ SQL Server, êàê î÷åðåäè, äèàëîãè è ãðóïïû âçàèìîäåéñòâèÿ, ìû ðàññìîòðèì âîçìîæíîñòè àêòèâàöèè áðîêåðà çàïðîñîâ, èçó÷èì ïðîöåññ åãî àäìèíèñòðèðîâàíèÿ ñ öåëüþ íàñòðîéêè ïàðàìåòðîâ áåçîïàñíîñòè è ñèñòåìíûõ ïàðàìåòðîâ.  êîíöå ãëàâû ìû ðàññìîòðèì íåñêîëüêî ïðèìåðîâ ñîçäàíèÿ ïðèëîæåíèé ñ èñïîëüçîâàíèåì ôóíêöèîíàëüíîñòè áðîêåðà çàïðîñîâ SQL Server.
4.1. Îáçîð áðîêåðà çàïðîñîâ Áðîêåð ñåðâèñîâ SQL Server ïîçâîëÿåò âûïîëíÿòü îáðàáîòêó î÷åðåäåé. Ýòà âîçìîæíîñòü âñòðîåíà â ÿäðî SQL Server 2005 è âûïîëíÿåòñÿ íà îñíîâå òðàíçàêöèîííîé ìîäåëè. Ýòî îçíà÷àåò, ÷òî â òîì ñëó÷àå, åñëè òðàíçàêöèÿ îáðàáîòêè î÷åðåäè íå ìîæåò áûòü âûïîëíåíà äî êîíöà (íàïðèìåð, èç-çà âîçíèêíîâåíèÿ îøèáîê), îíà ôèêñèðóåòñÿ è îòêàòûâàåòñÿ äî ïðåäûäóùåãî ñîñòîÿíèÿ. Äëÿ äîñòóïà ê ôóíêöèîíàëüíîñòè áðîêåðà ñåðâèñîâ SQL Server èñïîëüçóåòñÿ íàáîð êîìàíä SQL. Äàëåå â äàííîì ðàçäåëå ìû ðàññìîòðèì íåñêîëüêî ïðèìåðîâ ñ èñïîëüçîâàíèåì ýòèõ êîìàíä. Áîëåå òîãî, áðîêåð ñåðâèñîâ òàêæå ïîääåðæèâàåò ìåõàíèçì äîñòàâêè ñîîáùåíèé äëÿ óäàëåííîé î÷åðåäè. Èíûìè ñëîâàìè, áðîêåð ñåðâèñîâ ìîæåò îáðàáàòûâàòü çàïðîñû î÷åðåäè, êîòîðûå áûëè äîáàâëåíû â íåå óäàëåííûì ïðèëîæåíèåì. Ïîäîáíàÿ ôóíêöèîíàëüíîñòü ìîæåò ïðèìåíÿòüñÿ â òîì ñëó÷àå, åñëè èìååòñÿ ðàñïðåäåëåííàÿ ñèñòåìà ñåðâåðîâ SQL. Ïðè ýòîì ðàçìåð ñîîáùåíèé, ïåðåñûëàåìûõ ÷åðåç ñåòü, ìîæåò áûòü äîñòàòî÷íî áîëüøèì ïî îáúåìó è äîñòèãàòü 2 Ãáàéò. Áðîêåð ñåðâèñîâ ñàìîñòîÿòåëüíî ðàçîáüåò ñîîáùåíèå áîëüøîãî îáúåìà íà áîëåå ìåëêèå êóñêè è ïîñëå ïåðåäà÷è ÷åðåç ñåòü ñîåäèíèò èõ, ÷òîáû ïîëó÷èòü èñõîäíîå ñîîáùåíèå. Ýòî ïîçâîëÿåò äîáàâèòü äîïîëíèòåëüíûé óðîâåíü íàäåæíîñòè â ñèñòåìó ïåðåäà÷è ñîîáùåíèé ÷åðåç ñåòü.  íîâîé âåðñèè SQL Server äîñòóïíû îáå ðåäàêöèè áðîêåðà ñåðâèñîâ — êàê 32-, òàê è 64-ðàçðÿäíàÿ.
4.1.1. Î÷åðåäè Èñïîëüçîâàíèå î÷åðåäåé â ïðèëîæåíèÿõ — ýòî äîñòàòî÷íî ñòàðàÿ èäåÿ, êîòîðàÿ ýêñïëóàòèðóåòñÿ ðàçðàáîò÷èêàìè âî ìíîãèõ ïðèëîæåíèÿõ ðàçëè÷íûõ òèïîâ. Òàêèå òèïû î÷åðåäåé, êàê FIFO (First-In-First-Out) è LIFO (Last-In-First-Out), ÷àñòî èñïîëüçóþòñÿ â ïðèëîæåíèÿõ íèçêîãî óðîâíÿ, à òàêæå â ïðèëîæåíèÿõ, ñîçäàííûõ íà îñíîâå îáúåêòíî-îðèåíòèðîâàííîé ìîäåëè. Ïîäîáíûé îïûò ðàçðàáîòêè ïîçâîëèò ìíîãèì ðàçðàáîò÷èêàì áûñòðåå ðàçîáðàòüñÿ ñ î÷åðåäÿìè ñîîáùåíèé áðîêåðà ñåðâèñîâ SQL Server. Äëÿ òîãî ÷òîáû ðàçîáðàòüñÿ ñ èäååé,
96
Ãëàâà 4 • Áðîêåð çàïðîñîâ SQL Server
çàëîæåííîé â ìåõàíèçìå óïðàâëåíèÿ î÷åðåäüþ áðîêåðà ñåðâèñîâ, ðàññìîòðèì ñëåäóþùèé ïðèìåð (ðèñ. 4.1).
Ðèñ. 4.1. Ïðèìåð î÷åðåäè
Íà ðèñóíêå ïîêàçàí ïðèìåð ãèïîòåòè÷åñêîãî ïðèëîæåíèÿ, êîòîðîå ïîçâîëÿåò îáñëóæèâàòü î÷åðåäü ñîîáùåíèé. Ñ ïîìîùüþ îáû÷íîãî ïðèëîæåíèÿ ìîæíî ïðåäîñòàâèòü êîíå÷íîìó ïîëüçîâàòåëþ âîçìîæíîñòü ñîçäàâàòü ïîäîáíûå ñîîáùåíèÿ, ïîñëå ýòîãî ñîîáùåíèÿ áóäóò óñòàíàâëèâàòüñÿ â î÷åðåäü è îáñëóæèâàòüñÿ ïî ìåðå ïîäõîäà î÷åðåäè èëè ñîãëàñíî óñòàíîâëåííîìó ïðèîðèòåòó ñîîáùåíèÿ. Ïîñëå òîãî êàê ïîëüçîâàòåëü ïîìåñòèò ñâîå ñîîáùåíèå â ñèñòåìó, îíà ñâÿæåòñÿ ñ äðóãîé ñèñòåìîé, êîòîðàÿ âûïîëíÿåò îáðàáîòêó ñîîáùåíèé, è ïåðåäàñò åé íåîáõîäèìûå äàííûå è ïàðàìåòðû ñîîáùåíèÿ. Ïîäîáíîå ïðèëîæåíèå äîëæíî ïîääåðæèâàòü íåïðåðûâíóþ îáðàáîòêó ïîñòóïàþùèõ ñîîáùåíèé. Èíûìè ñëîâàìè, ïîëüçîâàòåëè ìîãóò ðàçìåùàòü ñâîè ñîîáùåíèÿ â ñèñòåìå â ëþáîé ìîìåíò âðåìåíè, äàæå êîãäà ñèñòåìà çàíÿòà îáðàáîòêîé ðàíåå ïîñòóïèâøåãî ñîîáùåíèÿ. Ïîýòîìó íåîáõîäèìî îðãàíèçîâàòü ìåõàíèçì î÷åðåäè, â êîòîðóþ áóäóò ïîìåùàòüñÿ ñîîáùåíèÿ, ïîñòóïàþùèå â òî âðåìÿ, ïîêà ñèñòåìà îáðàáàòûâàåò äðóãîå ñîîáùåíèå.  êà÷åñòâå î÷åðåäè ìîæåò âûñòóïàòü òàáëèöà áàçû äàííûõ, â êîòîðóþ âíîñÿòñÿ íîâûå çàïèñè ïî ìåðå ïîñòóïëåíèÿ ñîîáùåíèé îò ïîëüçîâàòåëåé. Âî âðåìÿ âûïîëíåíèÿ êàêèõ-ëèáî äåéñòâèé íàä ðàíåå ïîñòóïèâøèì ñîîáùåíèåì ñîîòâåòñòâóþùàÿ åìó ñòðîêà â òàáëèöå äîëæíà áëîêèðîâàòüñÿ íà âíåñåíèå èçìåíåíèé. Îäíàêî áëîêèðîâêà ñòðîê ìîæåò â íåêîòîðûõ ñëó÷àÿõ çíà÷èòåëüíî ñêàçûâàòüñÿ íà ñêîðîñòè ðàáîòû ïðèëîæåíèÿ èëè åãî ãèáêîñòè. Äëÿ òîãî ÷òîáû èçáàâèòüñÿ îò ïîäîáíîé çàâèñèìîñòè, íåîáõîäèìî ðàçáèòü ñèñòåìó îáðàáîòêè î÷åðåäè ñîîáùåíèé íà äâå ïîäñèñòåìû: ñèñòåìó îáðàáîòêè çàïðîñîâ ïîëüçîâàòåëåé (front-end) è ñèñòåìó óïðàâëåíèÿ î÷åðåäüþ (back-end). Òàêèì îáðàçîì, íàñòðîèâ ìåæäó ýòèìè ñèñòåìàìè àñèíõðîííûé äîñòóï ê ñîîáùåíèÿì ïîëüçîâàòåëåé, ìîæíî èçáàâèòüñÿ
4.1. Îáçîð áðîêåðà çàïðîñîâ
97
îò áëîêèðîâêè çàïèñåé òàáëèöû ñèñòåìû back-end, òåì ñàìûì óñòðàíèâ çàäåðæêè â åå ðàáîòå. Ïîäîáíûå ñèñòåìû áóäóò ðàáîòàòü â ñâÿçêå ñëåäóþùèì îáðàçîì: · ñèñòåìà îáðàáîòêè çàïðîñîâ, ïîëó÷èâ ñîîáùåíèå îò ïîëüçîâàòåëÿ, ïîìåñòèò åãî â î÷åðåäü; · â î÷åðåäè ñîîáùåíèÿ íàõîäÿòñÿ äðóã çà äðóãîì ñîãëàñíî âðåìåíè èõ ïîñòóïëåíèÿ (ìû èìååì î÷åðåäü òèïà FIFO); · ñèñòåìà óïðàâëåíèÿ î÷åðåäüþ, ðàáîòàÿ â ñâîåì ðåæèìå íåçàâèñèìî îò ñèñòåìû îáðàáîòêè çàïðîñîâ, áóäåò ñ÷èòûâàòü ñîîáùåíèÿ èç î÷åðåäè äðóã çà äðóãîì è âûïîëíÿòü èõ îáðàáîòêó. Òàêèì îáðàçîì, îáå ñèñòåìû íå èìåþò ïðÿìîãî äîñòóïà ê òàáëèöàì äðóã äðóãà, à ñëåäîâàòåëüíî, íå ìåøàþò ðàáîòå äðóã äðóãà.
4.1.2. Äèàëîãè Äèàëîã — ýòî îäèí èç îñíîâíûõ êîìïîíåíòîâ áðîêåðà ñåðâèñîâ SQL Server. Äèàëîã ïðåäîñòàâëÿåò ïîëüçîâàòåëþ âîçìîæíîñòü âûïîëíÿòü îáìåí ñîîáùåíèÿìè ìåæäó äâóìÿ êîíå÷íûìè ñèñòåìàìè íåñêîëüêèìè ñïîñîáàìè.  êà÷åñòâå êîíå÷íûõ òî÷åê, ìåæäó êîòîðûìè âûïîëíÿåòñÿ îáìåí ñîîáùåíèÿìè, ìîãóò âûñòóïàòü ïðèëîæåíèÿ, êîòîðûå îïèñàíû â ðàçäåëå 4.1.1 «Î÷åðåäè». Ïðèìåð äèàëîãà ìåæäó äâóìÿ êîíå÷íûìè òî÷êàìè ïîêàçàí íà ðèñ. 4.2.  ýòîì ñëó÷àå â êà÷åñòâå êîíå÷íûõ òî÷åê âûñòóïàþò äâà ñåðâèñà, îáìåíèâàþùèåñÿ ñîîáùåíèÿìè. Êàæäûé èç ñåðâèñîâ èìååò ñâîþ ñîáñòâåííóþ î÷åðåäü îáðàáîòêè ñîîáùåíèé, îäíàêî îí ìîæåò ïåðåäàâàòü ñîîáùåíèÿ äðóãîìó ñåðâèñó äëÿ èõ îáðàáîòêè.  êà÷åñòâå ñîîáùåíèé, íàïðèìåð, ìîãóò âûñòóïàòü íàáîðû äàííûõ î ñîáûòèÿõ, ïðîèçîøåäøèõ â ñèñòåìå. Òàêèì îáðàçîì, áðîêåð ñåðâèñîâ, óïðàâëÿþùèé äèàëîãîì, ìîæåò ðàñïðåäåëÿòü ñîáûòèÿ, âîçíèêøèå â ñèñòåìå, ìåæäó ðàçëè÷íûìè ñåðâèñàìè, êîòîðûå èìåþòñÿ â åãî ðàñïîðÿæåíèè.  òîì ñëó÷àå, åñëè îäíî èç ïðèëîæåíèé áóäåò îñòàíîâëåíî ïî êàêîé-ëèáî ïðè÷èíå, äðóãîå ïðèëîæåíèå ìîæåò ïðîäîëæàòü îáðàáîòêó ñîîáùåíèé. Äèàëîã ìîæåò áûòü íàñòðîåí íà ïåðåäà÷ó ñîîáùåíèé êàê â äóïëåêñíîì ðåæèìå, òàê è â ïîëóäóïëåêñíîì.
Ðèñ. 4.2. Ïðèìåð äèàëîãà ìåæäó äâóìÿ ñåðâèñàìè
98
Ãëàâà 4 • Áðîêåð çàïðîñîâ SQL Server
4.1.3. Àêòèâàöèÿ áðîêåðà çàïðîñîâ SQL Server Àêòèâàöèÿ áðîêåðà çàïðîñîâ SQL Server — ýòî èíòåðåñíàÿ îñîáåííîñòü äàííîé ïîäñèñòåìû. Àêòèâàöèÿ ïîäðàçóìåâàåò ñîçäàíèå õðàíèìîé ïðîöåäóðû è åå ñâÿçûâàíèå ñ îïðåäåëåííîé î÷åðåäüþ áðîêåðà ñåðâèñîâ.  ýòîì ñëó÷àå õðàíèìàÿ ïðîöåäóðà áóäåò âûïîëíÿòü îáðàáîòêó ñîîáùåíèé, íàõîäÿùèõñÿ â äàííîé î÷åðåäè. Êàê òîëüêî íîâîå ñîîáùåíèå áóäåò ïîìåùàòüñÿ â î÷åðåäü, ñâÿçàííàÿ ñ î÷åðåäüþ ïðîöåäóðà áóäåò àâòîìàòè÷åñêè âûïîëíÿòüñÿ äëÿ îáðàáîòêè ïîñòóïèâøåãî ñîîáùåíèÿ.  òîì ñëó÷àå, åñëè âûïîëíåíèå õðàíèìîé ïðîöåäóðû ïðîèçîéäåò ñ îøèáêîé, âûïîëíèòñÿ ãåíåðàöèÿ èñêëþ÷èòåëüíîé ñèòóàöèè è ñîîáùåíèå áóäåò îáðàáîòàíî ïîâòîðíî. Áðîêåð ñåðâèñîâ SQL Server ïåðèîäè÷åñêè âûïîëíÿåò ïðîâåðêó ñîñòîÿíèÿ î÷åðåäè. Âî âðåìÿ äàííîé ïðîâåðêè ïðîâåðÿåòñÿ ñòàòóñ õðàíèìîé ïðîöåäóðû íà ïðåäìåò òîãî, îáðàáàòûâàåò ëè îíà ïîñòóïàþùèå ñîîáùåíèÿ. Åñëè áðîêåð ñåðâèñîâ SQL Server îïðåäåëèò, ÷òî â î÷åðåäè íàõîäèòñÿ îäíî èëè íåñêîëüêî ñîîáùåíèé, îæèäàþùèõ îáðàáîòêè, òî îí â àâòîìàòè÷åñêîì ðåæèìå çàïóñòèò äîïîëíèòåëüíûé ýêçåìïëÿð ïðîöåäóðû ñ öåëüþ îáðàáîòêè ñîîáùåíèé, íàõîäÿùèõñÿ â î÷åðåäè. Ýòî ïîçâîëèò óñêîðèòü ïðîöåññ îáðàáîòêè ïîñòóïàþùèõ ñîîáùåíèé è ñïðàâèòüñÿ ñ ïèêîâûìè íàãðóçêàìè. Êîëè÷åñòâî îäíîâðåìåííî âûïîëíÿþùèõñÿ ýêçåìïëÿðîâ ïðîöåäóð îïðåäåëÿåòñÿ ñèñòåìíîé ïåðåìåííîé MAX QUEUEREADERS. Äî òåõ ïîð ïîêà âñå ñîîáùåíèÿ, íàõîäÿùèåñÿ â î÷åðåäè, íå áóäóò îáðàáîòàíû èëè íå áóäåò äîñòèãíóòî çíà÷åíèå MAX QUEUEREADERS, áðîêåð ñåðâèñîâ SQL Server áóäåò çàïóñêàòü äîïîëíèòåëüíûå ýêçåìïëÿðû ïðîöåäóð îáðàáîòêè. Îäíàêî íå ñòîèò óñòàíàâëèâàòü ýòî çíà÷åíèå ñëèøêîì áîëüøèì, ïîñêîëüêó çàïóñê äîïîëíèòåëüíîãî ïðîöåññà ïðîöåäóðû ñêàçûâàåòñÿ íà îáùåé ïðîèçâîäèòåëüíîñòè ñèñòåìû, à ñëåäîâàòåëüíî, çàïóñê áîëüøîãî ÷èñëà îäíîòèïíûõ ïðîöåññîâ ìîæåò ïðèâåñòè ê çíà÷èòåëüíîìó çàìåäëåíèþ ðàáîòû ñåðâåðà. Òàêèì îáðàçîì, íåîáõîäèìî ñáàëàíñèðîâàòü êîëè÷åñòâî îäíîâðåìåííî âûïîëíÿåìûõ ýêçåìïëÿðîâ â ðàñ÷åòå íà ïèêîâûå íàãðóçêè íà ñåðâåð SQL. Äëÿ îïðåäåëåííûõ î÷åðåäåé áðîêåðà ñåðâèñîâ SQL Server íå òðåáóåòñÿ óñòàíàâëèâàòü ñâÿçü ñ õðàíèìûìè ïðîöåäóðàìè. Ýòî äîáàâëÿåò äîïîëíèòåëüíûé óðîâåíü íåçàâèñèìîñòè â îòíîøåíèè ìîäåðíèçàöèè è äîðàáîòêè õðàíèìûõ ïðîöåäóð, êîòîðûå âûïîëíÿþò îáðàáîòêó ñîîáùåíèé î÷åðåäè.  íåêîòîðûõ ñëó÷àÿõ ìîæåò ïîòðåáîâàòüñÿ èñïîëüçîâàòü âíåøíèå ïðîöåäóðû äëÿ îáðàáîòêè ñëîæíûõ ñîîáùåíèé èëè âûïîëíèòü êîìïëåêñíûå äåéñòâèÿ (òàêèå, êîòîðûå íåëüçÿ âûïîëíèòü ñ ïîìîùüþ õðàíèìûõ ïðîöåäóð SQL Server). Ïîäîáíûå âíåøíèå ïðîöåäóðû òðåáóþò ñëîæíîãî ïîäõîäà â îòíîøåíèè êàê ñîçäàíèÿ ïðîöåäóð, òàê è âûðàáîòêè äîïîëíèòåëüíûõ òðåáîâàíèé ê ôîðìàòó ñîîáùåíèé è ñàìîé î÷åðåäè. Ïîìèìî ýòîãî òðåáóåòñÿ, ÷òîáû áðîêåð ñåðâèñîâ SQL Server ìîã â àâòîìàòè÷åñêîì ðåæèìå çàïóñêàòü îòäåëüíûå ýêçåìïëÿðû âíåøíèõ ïðîöåäóð. Äëÿ ðåøåíèÿ ýòîé äîñòàòî÷íî ñëîæíîé ïðîáëåìû îáû÷íî èñïîëüçóåòñÿ îáðàáîòêà ñîáûòèé SQL Server. Îáðàáîòêà ñîáûòèé SQL Server ìîæåò âûïîëíÿòüñÿ, íàïðèìåð, ñ èñïîëüçîâàíèåì WMI (Windows Management Instrumentation).  ýòîì ñëó÷àå âî âðåìÿ ïîñòóïëåíèÿ íîâîãî ñîáûòèÿ SQL Server âûïîëíÿåòñÿ åãî ÷òåíèå ñ èñïîëüçîâàíèåì ïîäïèñ÷èêà WMI.  ñâîþ î÷åðåäü ïîäïèñ÷èê WMI çàïóñêàåò âíåøíþþ ïðîöåäóðó, êîòîðàÿ îòâå÷àåò çà îáðàáîòêó ñîîáùåíèé î÷åðåäè.
4.1. Îáçîð áðîêåðà çàïðîñîâ
99
4.1.4. Ãðóïïû âçàèìîäåéñòâèÿ Åùå îäíèì êëþ÷åâûì ïîíÿòèåì áðîêåðà ñåðâèñîâ SQL Server ÿâëÿåòñÿ ãðóïïà âçàèìîäåéñòâèÿ. Ãðóïïà âçàèìîäåéñòâèÿ — ýòî íàáîð ñâÿçàííûõ äðóã ñ äðóãîì äèàëîãîâ áðîêåðà ñåðâèñîâ. Ãðóïïà âçàèìîäåéñòâèÿ èñïîëüçóåòñÿ â òåõ ñëó÷àÿõ, êîãäà â ñèëó àðõèòåêòóðû ïðèëîæåíèþ òðåáóåòñÿ èñïîëüçîâàòü íåñêîëüêî äèàëîãîâ äëÿ îáìåíà ñîîáùåíèÿìè. Èñïîëüçóÿ ãðóïïó âçàèìîäåéñòâèÿ, âû ñìîæåòå ëîãè÷åñêè ñãðóïïèðîâàòü ïîäîáíûå äèàëîãè, ÷òî ïîçâîëèò âûïîëíÿòü îäíîòèïíûå îïåðàöèè íàä íèìè. Íàïðèìåð, â ñëó÷àå ïîñòóïëåíèÿ ñîîáùåíèé ïðèëîæåíèå äîëæíî îáðàáàòûâàòü èõ ñîãëàñíî ïàðàìåòðàì îòäåëüíî âçÿòîãî äèàëîãà.  ïåðâîì ñëó÷àå ýòî ìîæåò áûòü îáðàáîòêà ñîîáùåíèé ïîëüçîâàòåëÿ, â äðóãîì — îáðàáîòêà ïëàòåæíûõ ïîðó÷åíèé, à â òðåòüåì — ñêëàäñêèõ äîêóìåíòîâ î äîñòàâêå êàêîãî-ëèáî òîâàðà. Âñå àíàëîãè÷íûå äèàëîãè ìîãóò áûòü ñîáðàíû â îäíó ãðóïïó âçàèìîäåéñòâèÿ.  ýòîì ñëó÷àå ãðóïïà âçàèìîäåéñòâèÿ áóäåò ïðåäñòàâëÿòü ñîáîé ëîãè÷åñêè ñãðóïïèðîâàííûå äèàëîãè òðåõ òèïîâ. Íà ðèñ. 4.3 ïîêàçàíà ãðóïïà âçàèìîäåéñòâèÿ, ñîäåðæàùàÿ â ñâîåì ñîñòàâå òðè äèàëîãà.
Ðèñ. 4.3. Ãðóïïà âçàèìîäåéñòâèÿ
Îñíîâíîå ïðåèìóùåñòâî, êîòîðîå ðåàëèçóåòñÿ ñ ïîìîùüþ ãðóïï âçàèìîäåéñòâèÿ, — ýòî ìåõàíèçì áëîêèðîâàíèÿ ñâÿçàííûõ î÷åðåäåé.  ýòîì ñëó÷àå áëîêèðîâàíèå âûïîëíÿåòñÿ íå íà óðîâíå áàç äàííûõ, èñïîëüçóþùèõñÿ äëÿ îáìåíà ñîîáùåíèÿìè, à áëîêèðóþòñÿ ñàìè î÷åðåäè ñ èìåþùèìèñÿ â íèõ ñîîáùåíèÿìè. Òàêèì îáðàçîì, èñïîëüçóÿ ãðóïïó âçàèìîäåéñòâèÿ, ìîæíî áûñòðî âûïîëíÿòü áëîêèðîâêó î÷åðåäåé, âõîäÿùèõ â åå ñîñòàâ.  ñëó÷àå áëîêèðîâàíèÿ î÷åðåäè íè îäèí ïðîöåññ íå ñìîæåò âûïîëíÿòü ÷òåíèå ñîîáùåíèé èç íåå, ïîêà áëîêèðîâêà íå áóäåò ñíÿòà.
100
Ãëàâà 4 • Áðîêåð çàïðîñîâ SQL Server
Ïîìèìî âîçìîæíîñòè áëîêèðîâàòü î÷åðåäü ïîñðåäñòâîì ãðóïïû âçàèìîäåéñòâèÿ òàêæå ðåàëèçóåòñÿ âîçìîæíîñòü óñòàíîâèòü êàêîå-ëèáî ñîñòîÿíèå äëÿ ñèñòåìû. Óñòàíîâêà êàêîãî-ëèáî ñîñòîÿíèÿ äëÿ ñèñòåìû — ýòî îäíà èç íàèáîëåå ñëîæíûõ çàäà÷ â àñèíõðîííîé ñèñòåìå. Ñëîæíîñòü ðåøåíèÿ äàííîé çàäà÷è çàêëþ÷àåòñÿ â òîì, ÷òî â àñèíõðîííîì ðåæèìå îáìåíà ñîîáùåíèÿìè äîñòàòî÷íî ñëîæíî ïîäîáðàòü äëÿ àíñàìáëÿ ïåðåäàò÷èêîâ ìîìåíò, êîãäà îíè áóäóò íàõîäèòüñÿ â îäíîì ñîñòîÿíèè. Äëÿ èäåíòèôèêàöèè ãðóïïû âçàèìîäåéñòâèÿ èñïîëüçóåòñÿ ID. Îí ÿâëÿåòñÿ ïåðâè÷íûì êëþ÷îì, êîòîðûé ïîçâîëÿåò èäåíòèôèöèðîâàòü ñïèñîê î÷åðåäåé, âõîäÿùèõ â ñîñòàâ ãðóïïû.
4.1.5. Ïîääåðæèâàåìûå ïðîòîêîëû Êàê óïîìèíàëîñü â ðàçäåëå 4.1.2 «Äèàëîãè», ñîîáùåíèÿ ðàçëè÷íûõ î÷åðåäåé ìîãóò ïåðåñûëàòüñÿ ÷åðåç ñåòü äëÿ èõ îáðàáîòêè äðóãèì ñåðâèñîì ñ öåëüþ óâåëè÷åíèÿ ñêîðîñòè îáðàáîòêè. Äëÿ ïåðåñûëêè ïîäîáíûõ ñîîáùåíèé èñïîëüçóåòñÿ ñïåöèàëüíûé ïðîòîêîë ïåðåñûëêè ñîîáùåíèé áðîêåðà ñåðâèñîâ SQL Server. Äàííûé ïðîòîêîë îòíîñèòñÿ ê ñòåêó ïðîòîêîëîâ TCP/IP. Ñèñòåìà ïåðåñûëêè ñîîáùåíèé áðîêåðà ñåðâèñîâ SQL Server ïðàêòè÷åñêè íè÷åì íå îòëè÷àåòñÿ îò ñèñòåìû ïåðåäà÷è èíôîðìàöèè, áàçèðóþùåéñÿ íà ïðîòîêîëàõ TCP/IP è FTP. Ïðîòîêîë áðîêåðà ñåðâèñîâ ìîæíî ïðåäñòàâèòü â âèäå äâóõ áîëüøèõ ïîäñèñòåì (ïðîòîêîëîâ): · Binary Adjacent Protocol — ïðîòîêîë íèçêîãî óðîâíÿ (ïîñòðîåííûé íà îñíîâå ïðîòîêîëà TCP); · Dialog Protocol — ïðîòîêîë âûñîêîãî óðîâíÿ, êîòîðûé èñïîëüçóåò â ñâîåé ðàáîòå Binary Adjacent Protocol. Ðàññìîòðèì îáà ýòèõ ïðîòîêîëà áîëåå äåòàëüíî. Binary Adjacent Protocol — ýòî ïðîòîêîë íèçêîãî óðîâíÿ, ïîçâîëÿþùèé âûïîëíÿòü ïåðåäà÷ó ñîîáùåíèé áðîêåðà ñåðâèñîâ. Ýòîò ïðîòîêîë îòíîñèòñÿ ê êëàññó äâóíàïðàâëåííûõ ìóëüòèïëåêñèðîâàííûõ ïðîòîêîëîâ, ïîýòîìó îí ìîæåò ýôôåêòèâíî èñïîëüçîâàòüñÿ äëÿ îäíîâðåìåííîé ïåðåäà÷è ñîîáùåíèé âî âðåìÿ íåñêîëüêèõ äèàëîãîâ áðîêåðà ñåðâèñîâ.  Binary Adjacent Protocol íå èìååòñÿ ìåõàíèçìîâ äëÿ îòñëåæèâàíèÿ î÷åðåäè ïåðåäàâàåìûõ ñîîáùåíèé, à òàêæå ñ åãî ïîìîùüþ âû íå ñìîæåòå ïîäòâåðäèòü äîñòàâêó ñîîáùåíèé. Âñå ýòè ôóíêöèè âîçëîæåíû íà ïðîòîêîë âûñîêîãî óðîâíÿ (Dialog Protocol). Òàêèì îáðàçîì, Binary Adjacent Protocol èñïîëüçóåòñÿ ëèøü äëÿ ïåðåäà÷è ñîîáùåíèé ÷åðåç ñåòü ñîãëàñíî çàäàííûì äèàëîãàì ñ íàèáîëåå äîñòèæèìîé ñêîðîñòüþ. Íà Dialog Protocol âîçëîæåíû ôóíêöèè áîëåå âûñîêîãî óðîâíÿ, ÷åì íà Binary Adjacent Protocol. Ñ åãî ïîìîùüþ âûïîëíÿåòñÿ îáðàáîòêà ñîîáùåíèé ñîãëàñíî çàäàííîìó äèàëîãó. Ïðè ýòîì ó÷èòûâàåòñÿ ïîðÿäîê ñîîáùåíèé, ïðèîðèòåò èõ ïåðåäà÷è, à òàêæå ïîääåðæêà ïåðåäà÷è â îòêðûòîì âèäå. Ïîìèìî ýòîãî ïîääåðæèâàåòñÿ ñèììåòðè÷íàÿ îáðàáîòêà âîçíèêàþùèõ âî âðåìÿ ïåðåäà÷è îøèáîê. Âî âðåìÿ ïîäîáíîé ñèììåòðè÷íîé îáðàáîòêè îáå ñòîðîíû (ïåðåäàþùàÿ è ïðèíèìàþùàÿ) ïîëó÷àþò èíôîðìàöèþ î òîì, ÷òî â ñåòè âî âðåìÿ ïåðåäà÷è ñîîáùåíèÿ âîçíèêëà îøèáêà (íàïðèìåð, êîëëèçèÿ), è ïåðåäà÷ó äàííîãî ïàêåòà èëè âñåãî ñîîáùåíèÿ íåîáõîäèìî ïîâòîðèòü. Åùå îäíîé âàæíîé ôóíêöèåé, êîòîðóþ âûïîëíÿåò Dialog
4.2. Íàñòðîéêà è àäìèíèñòðèðîâàíèå áðîêåðà çàïðîñîâ
101
Protocol, ÿâëÿåòñÿ àóòåíòèôèêàöèÿ ïåðåäàþùåé è ïðèíèìàþùåé ñòîðîíû, à òàêæå øèôðîâàíèå ñîîáùåíèé. Ýòî ïîçâîëÿåò äîáàâèòü íåîáõîäèìûé óðîâåíü áåçîïàñíîñòè â ñèñòåìû ïåðåäà÷è ñîîáùåíèé ÷åðåç ñåòü.
4.2. Íàñòðîéêà è àäìèíèñòðèðîâàíèå áðîêåðà çàïðîñîâ Áðîêåð ñåðâèñîâ SQL Server èìååò íàáîð ïàðàìåòðîâ äëÿ íàñòðîéêè.  äàííîì ðàçäåëå ìû êðàòêî ðàññìîòðèì íåñêîëüêî îñíîâíûõ ïàðàìåòðîâ äëÿ íàñòðîéêè áðîêåðà ñåðâèñîâ SQL Server. Òàêæå ìû ðàññìîòðèì ïàðàìåòðû áåçîïàñíîñòè áðîêåðà çàïðîñîâ è íåñêîëüêî ñèñòåìíûõ ïðåäñòàâëåíèé, ïîçâîëÿþùèõ ïîëó÷èòü äåòàëüíóþ èíôîðìàöèþ îá îáúåêòàõ áðîêåðà ñåðâèñîâ, ïîëüçîâàòåëüñêèõ ïðèëîæåíèÿõ è èõ ïàðàìåòðàõ.
4.2.1. Íàñòðîéêà ïàðàìåòðîâ áðîêåðà çàïðîñîâ Äëÿ íàñòðîéêè áðîêåðà ñåðâèñîâ SQL Server ñóùåñòâóåò íåñêîëüêî ïàðàìåòðîâ. Äëÿ óñòàíîâêè çíà÷åíèé ýòèõ ïàðàìåòðîâ èñïîëüçóåòñÿ ñèñòåìíàÿ õðàíèìàÿ ïðîöåäóðà Sp_configure. Äàíàÿ ïðîöåäóðà èìååò íåñêîëüêî ïàðàìåòðîâ, èñïîëüçóÿ êîòîðûå ìîæíî óñòàíîâèòü íåêîòîðûå ïàðàìåòðû áðîêåðà ñåðâèñîâ SQL Server. Îïèñàíèå ýòèõ ïàðàìåòðîâ ïðèâîäèòñÿ â òàáë. 4.1. Òàáëèöà 4.1. Ïàðàìåòðû õðàíèìîé ïðîöåäóðû Sp_configure ¹
Ïàðàìåòð
Îïèñàíèå
1
Broker authentication port
Ïîçâîëÿåò óñòàíîâèòü ïàðàìåòðû àóòåíòèôèêàöèè ïðè óäàëåííîì ñîåäèíåíèè. Äîïóñêàþòñÿ ñëåäóþùèå çíà÷åíèÿ: 1 — èñïîëüçóåòñÿ àóòåíòèôèêàöèÿ; 2 — àóòåíòèôèêàöèÿ ïîääåðæèâàåòñÿ; 3 — òðåáóåòñÿ àóòåíòèôèêàöèÿ. Ïî óìîë÷àíèþ óñòàíîâëåíî çíà÷åíèå 3
2
Broker forwarding size limit
Ïîçâîëÿåò óñòàíîâèòü ìàêñèìàëüíûé ðàçìåð äèñêîâîãî ïðîñòðàíñòâà â Ìáàéò, êîòîðîå áóäåò èñïîëüçîâàòüñÿ äëÿ õðàíåíèÿ ïåðåñûëàåìûõ ñîîáùåíèé. Ïî óìîë÷àíèþ èñïîëüçóåòñÿ çíà÷åíèå 10 Ìáàéò
3
Broker message forwarding
Ïîçâîëÿåò óñòàíîâèòü òèï ïåðåñûëêè ñîîáùåíèé. Ïîääåðæèâàþòñÿ ñëåäóþùèå çíà÷åíèÿ: 1 — ïåðåñûëêà ñîîáùåíèé íå ðàçðåøåíà; 2 — ïåðåñûëêà ñîîáùåíèé ðàçðåøåíà âíóòðè äîìåíà; 3 — ïåðåñûëêà ñîîáùåíèé ðàçðåøåíà âíåøíåìó ïîëó÷àòåëþ. Ïî óìîë÷àíèþ óñòàíîâëåíî çíà÷åíèå 1
4
Broker tcp listen port
Ïîçâîëÿåò óñòàíîâèòü ïîðò, êîòîðûé áóäåò èñïîëüçîâàòüñÿ áðîêåðîì ñåðâèñîâ SQL Server äëÿ ïåðåäà÷è äàííûõ. Ïî óìîë÷àíèþ èñïîëüçóåòñÿ ïîðò 4022
102
Ãëàâà 4 • Áðîêåð çàïðîñîâ SQL Server
4.2.2. Áåçîïàñíîñòü áðîêåðà çàïðîñîâ  ñèñòåìå èñïîëüçóþòñÿ íåñêîëüêî ïàðàìåòðîâ, êîòîðûå ïîçâîëÿþò îïðåäåëèòü óðîâåíü áåçîïàñíîñòè èñïîëüçîâàíèÿ áðîêåðà ñåðâèñîâ. Äàííûå ïàðàìåòðû óñòàíàâëèâàþòñÿ ñ ïîìîùü õðàíèìîé ïðîöåäóðû Sp_configure. Ïåðå÷åíü ïàðàìåòðîâ, âëèÿþùèõ íà áåçîïàñíîñòü èñïîëüçîâàíèÿ áðîêåðà çàïðîñîâ SQL Server, à òàêæå èõ îïèñàíèå ïðèâîäèòñÿ â òàáë. 4.2. Òàáëèöà 4.2. Ïàðàìåòðû õðàíèìîé ïðîöåäóðû Sp_configure äëÿ íàñòðîéêè áåçîïàñíîñòè ¹
Ïàðàìåòð
Îïèñàíèå
1
Sys.conversation_endpoints
Îòîáðàæàåò ñïèñîê òî÷åê âçàèìîäåéñòâèÿ, êîòîðûå ÿâëÿþòñÿ àêòèâíûìè â äàííûé ìîìåíò
2
Sys.remote_service_bindings
Îòîáðàæàåò ñïèñîê ñåðâèñîâ è ñîîòâåòñòâóþùèõ ïîëüçîâàòåëåé, êîòîðûå áóäóò âûïîëíÿòü ñåðâèñû
3
Sys.routes
Îòîáðàæàåò ïîëíûé ñïèñîê ñîçäàííûõ ñâÿçåé
4
Sys.service_contract_ message_usages
Îòîáðàæàåò ïîëíûé ñïèñîê ñâÿçåé ìåæäó êîíòðàêòàìè è òèïàìè ñîîáùåíèé
5
Sys.service_contract_usage
Îòîáðàæàåò ñâÿçü ìåæäó êîíòðàêòàìè è ñåðâèñàìè
6
Sys.service_contracts
Îòîáðàæàåò ïîëíûé ñïèñîê êîíòðàêòîâ, êîòîðûå áûëè ñîçäàíû â ñèñòåìå
7
Sys.service_instances
Îòîáðàæàåò ïîëíûé ñïèñîê ñåðâèñîâ, àêòèâíûõ â äàííûé ìîìåíò
8
Sys.service_message_types
Ïîçâîëÿåò ïðîñìîòðåòü âñå òèïû ñîîáùåíèé, êîòîðûå áûëè ñîçäàíû â ñèñòåìå. Ñèñòåìíûå òèïû ñîîáùåíèé îòîáðàæàþòñÿ â âåðõíåé ÷àñòè òàáëèöû ðåçóëüòàòîâ. Òèïû ñîîáùåíèé, ñîçäàííûå ïîëüçîâàòåëåì, ñëåäóþò çà ñèñòåìíûìè
Sys.service_queue
Îòîáðàæàåò ïîëíûé ñïèñîê î÷åðåäåé, êîòîðûå áûëè ñîçäàíû
10
9
Sys.services
Îòîáðàæàåò ïîëíûé ñïèñîê ñîçäàííûõ ñåðâèñîâ
11
Sys.transmission_queue
Îòîáðàæàåò ïîëíûé ñïèñîê ñîîáùåíèé, êîòîðûå íàõîäÿòñÿ â î÷åðåäè è îæèäàþò îòïðàâêè
Âî âðåìÿ ñîçäàíèÿ äèàëîãà ìîæíî îïðåäåëèòü åãî óðîâåíü áåçîïàñíîñòè, èñïîëüçóÿ ïàðàìåòð WITH ENCRYPTION. Åñëè âûïîëíÿåòñÿ ñîçäàíèå äèàëîãà ñ äàííûì ïàðàìåòðîì, òî ñîçäàåòñÿ êëþ÷, êîòîðûé â äàëüíåéøåì èñïîëüçóåòñÿ äëÿ øèôðîâàíèÿ âñåõ ñîîáùåíèé, ïåðåñûëàåìûõ âî âðåìÿ ýòîãî äèàëîãà. Ïîìèìî ñàìîé ïåðåäà÷è ñîîáùåíèé â çàøèôðîâàííîì âèäå äëÿ îáåñïå÷åíèÿ ïîëíîé áåçîïàñíîñòè òàêæå òðåáóåòñÿ ñîçäàíèå áåçîïàñíûõ òî÷åê îáìåíà ñîîáùåíèÿìè. Èíûìè ñëîâàìè, íåîáõîäèìî ïîáåñïîêîèòüñÿ î òîì, ÷òî ñîîáùåíèå îòïðàâëÿåòñÿ èç îäíîé êîíå÷íîé òî÷êè â çàøèôðîâàííîì âèäå è ïðèõîäèò â äðóãóþ òî÷êó òàêæå â çàøèôðîâàííîì âèäå. Ñîîáùåíèå íå äîëæíî áûòü äåøèôðîâàíî ïðè ïðîõîæäåíèè ïðîìåæóòî÷íûõ òî÷åê ïóòè ïåðåñûëêè. Äëÿ îáåñïå÷åíèÿ ïîäîáíîãî óðîâíÿ áåçîïàñíîñòè áðîêåð ñåðâèñîâ SQL Server èñïîëüçóåò ìåõàíèçì, ïîñòðîåííûé íà îñíîâå ñåðòèôèêàòîâ. Ïðè ýòîì ñåðòèôèêàò îòïðàâèòåëÿ îòïðàâëÿåòñÿ âìåñòå ñ ñîîáùåíèåì, ÷òîáû ïîëó÷àòåëü ìîã ðàñøèôðîâàòü ïîëó÷åííîå ñîîáùåíèå. Ïîëó÷èâ òàêîé ñåðòèôèêàò, ïîëó÷àòåëü ñîîáùåíèÿ ãåíåðèðóåò çàêðûòûé êëþ÷ íà îñíîâå èìåþùåéñÿ ó íåãî èíôîðìàöèè è âûïîëíÿåò äåøèôðàöèþ ñîîáùåíèÿ.
4.3. Ðàçðàáîòêà ïðèëîæåíèé è áðîêåð çàïðîñîâ
103
4.2.3. Ñèñòåìíûå ïðåäñòàâëåíèÿ Â SQL Server ñóùåñòâóþò íåñêîëüêî ñèñòåìíûõ ïðåäñòàâëåíèé, êîòîðûå ïîçâîëÿþò ïðîñìîòðåòü èíôîðìàöèþ îá îáúåêòàõ áðîêåðà ñåðâèñîâ SQL Server, à òàêæå äîïîëíèòåëüíûå ïàðàìåòðû äàííîé ïîäñèñòåìû. Äàííûé íàáîð ñèñòåìíûõ ïðåäñòàâëåíèé ñîáðàí è îïèñàí â òàáë. 4.3 (ñì. ðàçäåë 4.3.2 «Íîâûé íàáîð êîìàíä T-SQL»).
4.3. Ðàçðàáîòêà ïðèëîæåíèé è áðîêåð çàïðîñîâ  ïåðâîì ðàçäåëå ýòîé ãëàâû ìû ïîïûòàëèñü ðàçîáðàòüñÿ ñ àðõèòåêòóðîé áðîêåðà ñåðâèñîâ SQL Server, à òàêæå ñ âîçìîæíîñòÿìè äàííîé ïîäñèñòåìû â îòíîøåíèè ðàçðàáîòêè è âíåäðåíèÿ ðåøåíèé íà åå îñíîâå. Òåïåðü ïðèøëî âðåìÿ ðàçðàáîòàòü ãîòîâîå ïðîãðàììíîå ðåøåíèå íà îñíîâå äàííîãî ñåðâèñà.  ýòîì ðàçäåëå ìû ðàññìîòðèì ïðîãðàììíóþ ìîäåëü, êîòîðàÿ ïðèìåíÿåòñÿ ïðè ñîçäàíèè ïðèëîæåíèé äàííîãî êëàññà, ñðåäñòâà, ïðèìåíÿåìûå äëÿ ñîçäàíèÿ òàêèõ ïðèëîæåíèé, à òàêæå ðàññìîòðèì ïðèìåð ñîçäàííîãî ïðèëîæåíèÿ íà îñíîâå ôóíêöèîíàëüíîñòè áðîêåðà çàïðîñîâ SQL Server.  ýòîì ïðèìåðå ìû ñíà÷àëà ñîçäàäèì îáúåêòû áðîêåðà çàïðîñîâ SQL Server, çàòåì íàó÷èìñÿ ïîìåùàòü ñîîáùåíèÿ â î÷åðåäü è, íàêîíåö, áóäåì èçâëåêàòü ñîîáùåíèÿ èç î÷åðåäè è îáðàáàòûâàòü èõ ïî îïðåäåëåííîìó àëãîðèòìó.
4.3.1. Èñïîëüçîâàíèå ìåòàäàííûõ  ïðèëîæåíèÿõ îáðàáîòêè ñîîáùåíèé áðîêåðà ñåðâèñîâ SQL Server àêòèâíî èñïîëüçóåòñÿ ìåõàíèçì îáðàáîòêè ìåòàäàííûõ. Ìåòàäàííûå â ýòîì ñëó÷àå îáû÷íî èñïîëüçóþòñÿ äëÿ îïèñàíèÿ òèïà ñîîáùåíèé, íàïðàâëåíèÿ ïåðåñûëêè ñîîáùåíèé è ïàðàìåòðîâ èõ ïåðåñûëêè, à òàêæå ñâÿçè ìåæäó ñîîáùåíèÿìè è äðóãèõ ïàðàìåòðîâ. Íà ñàìîì äåëå ìåòàäàííûå èñïîëüçóþòñÿ äëÿ îïèñàíèÿ òðåáîâàíèé ê ñòðóêòóðå ïðèëîæåíèÿ, êîòîðîå áóäåò âûïîëíÿòü îáðàáîòêó ìåòàäàííûõ. Íà ðèñ. 4.4 ïîêàçàíà ñòðóêòóðà ìåòàäàííûõ, êîòîðàÿ ñîäåðæèò ñëåäóþùèå ýëåìåíòû: · òèï ñîîáùåíèÿ; · êîíòðàêò; · ñåðâèñ; · î÷åðåäü.  îáùåì ñëó÷àå ñòðóêòóðà ìåòàäàííûõ ìîæåò îïèñûâàòü è áîëåå ñëîæíóþ î÷åðåäü. Ðàññìîòðèì áîëåå äåòàëüíî íàçíà÷åíèå îòäåëüíûõ ýëåìåíòîâ ìåòàäàííûõ áðîêåðà ñåðâèñîâ SQL Server. Îäíèì èç îñíîâíûõ ýëåìåíòîâ ìåòàäàííûõ ÿâëÿåòñÿ òèï ñîîáùåíèÿ. Òèï ñîîáùåíèÿ èñïîëüçóåòñÿ äëÿ îïèñàíèÿ êëàññà ñîîáùåíèé, êîòîðûå áóäóò ïîìåùàòüñÿ â î÷åðåäü è îáðàáàòûâàòüñÿ áðîêåðîì ñåðâèñîâ SQL Server. Ìîãóò èñïîëüçîâàòüñÿ êàê òåêñòîâûå ñîîáùåíèÿ (â ôîðìàòå TXT), òàê è áîëåå ñëîæíûå òèïû ñîîáùåíèé (òàêèå, êàê HTML è XML).  ïîñëåäíåì ñëó÷àå ïîíàäîáèòñÿ òàêæå XSLT-ñõåìà äëÿ îòîáðàæåíèÿ ñîîáùåíèé òèïà XML íà ýêðàíå êîíå÷íîãî ïîëüçîâàòåëÿ. Åñëè ïîäîáíàÿ ñõåìà èìååòñÿ, òî áðîêåð ñåðâèñîâ âûïîëíèò åå ïðîâåðêó íà ïðåäìåò
104
Ãëàâà 4 • Áðîêåð çàïðîñîâ SQL Server
ñîîòâåòñòâèÿ äàííîé ñõåìû èìåþùåìóñÿ XML-ôàéëó. Åñëè ñõåìà íå áóäåò îïðåäåëåíà, à òèï ñîîáùåíèé çàäàí â ôîðìàòå XML, òî ñîîáùåíèÿ áóäóò êîíâåðòèðîâàíû â áèíàðíûé ôîðìàò.
Ðèñ. 4.4. Ìîäåëü ìåòàäàííûõ áðîêåðà ñåðâèñîâ SQL Server
Ñîîáùåíèÿ ãðóïïèðóþòñÿ â êîíòðàêòû. Êîíòðàêò — ýòî íàáîð ÷åòêî îïðåäåëåííûõ óñëîâèé, ðåãóëèðóþùèõ îòíîøåíèÿ ìåæäó ñåðâèñîì è åãî êëèåíòàìè. Ýòî îäíî èç îñíîâíûõ ïîíÿòèé ìåòàäàííûõ áðîêåðà ñåðâèñîâ SQL Server. Êîëè÷åñòâî òèïîâ ñîîáùåíèé, êîòîðûå óñòàíàâëèâàþòñÿ â î÷åðåäü, ìîæåò áûòü â îáùåì ñëó÷àå íå îãðàíè÷åíî. Êîíòðàêòû èñïîëüçóþòñÿ äëÿ îïèñàíèÿ âñåãî ìíîæåñòâà òèïîâ ñîîáùåíèé, êîòîðûå ìîãóò èñïîëüçîâàòüñÿ â êîíêðåòíîì ñëó÷àå â îïðåäåëåííîì äèàëîãå. Íàïðèìåð, åñëè ñèñòåìà ïîëó÷àåò è îáðàáàòûâàåò ñîîáùåíèÿ òîëüêî äâóõ ôîðìàòîâ (XML è HTML), òî êîíòðàêò áóäåò ñîäåðæàòü îïèñàíèå äâóõ ôîðìàòîâ, êîòîðûå ìîãóò èñïîëüçîâàòüñÿ äëÿ ïåðåäà÷è ñîîáùåíèé â äàííîì ñëó÷àå.  ñâîþ î÷åðåäü êîíòðàêòû ãðóïïèðóþòñÿ â ñåðâèñû, êîòîðûå ïðåäñòàâëÿþò ñîáîé ñïèñîê äèàëîãîâ, òðåáóþùèõ îáðàáîòêè. Ñåðâèñû àññîöèèðîâàíû ñ îäíîé èëè íåñêîëüêèìè îïðåäåëåííûìè î÷åðåäÿìè. Èìåííî ê î÷åðåäè îáðàùàåòñÿ ïîëüçîâàòåëüñêîå ïðèëîæåíèå ñ öåëüþ ïîìåñòèòü â íåå ñîîáùåíèå çàäàííîãî òèïà èëè âûïîëíèòü ÷òåíèå ïîìåùåííûõ ðàíåå â î÷åðåäü ñîîáùåíèé. Ïîñðåäñòâîì î÷åðåäè ïðèëîæåíèå óñòàíàâëèâàåò ñîåäèíåíèå ñ ñåðâèñîì. Áëàãîäàðÿ èìåþùåìóñÿ ïðîìåæóòî÷íîìó óðîâíþ â âèäå î÷åðåäè ñòîðîííåå ïðèëîæåíèå íå îáÿçàíî çíàòü àðõèòåêòóðó äàííîãî ñåðâèñà.
4.3.2. Íîâûé íàáîð êîìàíä T-SQL Íàáîð êîìàíä T-SQL áûë ïåðåñìîòðåí â íîâîé âåðñèè SQL Server è â îòíîøåíèè áðîêåðà ñåðâèñîâ.  íàáîðå äîáàâèëèñü íåñêîëüêî íîâûõ êîìàíä, êîòîðûå ïîçâîëÿþò óïðàâëÿòü áðîêåðîì ñåðâèñîâ, ñîçäàâàòü íîâûå îáúåêòû è íàñòðàèâàòü ïàðàìåòðû õðàíèìûõ ïðîöåäóð, èñïîëüçóåìûå äëÿ ÷òåíèÿ è îáðàáîòêè ñîîáùåíèé î÷åðåäè SQL Server. Áîëüøàÿ ÷àñòü íîâûõ êîìàíä îòîáðàæåíà â òàáë. 4.3.
4.3. Ðàçðàáîòêà ïðèëîæåíèé è áðîêåð çàïðîñîâ
105
Òàáëèöà 4.3. Íàáîð êîìàíä T-SQL äëÿ ñîçäàíèÿ íîâûõ îáúåêòîâ áðîêåðà ñåðâèñîâ ¹
Êîìàíäà
Îïèñàíèå
1
ALTER CONTRACT
Èçìåíÿåò êîíòðàêò
2
ALTER MESSAGE TYPE
Èçìåíÿåò òèï ñîîáùåíèÿ
3
ALTER QUEUE
Èçìåíÿåò î÷åðåäü
4
ALTER ROUTE
Èçìåíÿåò ïóòü
5
ALTER SERVICE
Èçìåíÿåò ñåðâèñ
6
CREATE CONTRACT
Ñîçäàåò íîâûé êîíòðàêò â áàçå äàííûõ
7
CREATE MESSAGE TYPE
Ñîçäàåò íîâûé òèï ñîîáùåíèÿ
8
CREATE QUEUE
Ñîçäàåò íîâóþ î÷åðåäü â áàçå äàííûõ
9
CREATE ROUTE
Ñîçäàåò íîâûé ïóòü â áàçå äàííûõ
10
CREATE SERVICE
Ñîçäàåò íîâûé ñåðâèñ â áàçå äàííûõ
11
DROP CONTRACT
Óäàëÿåò çàäàííûé êîíòðàêò èç áàçû äàííûõ
12
DROP MESSAGE TYPE
Óäàëÿåò çàäàííûé òèï ñîîáùåíèé èç áàçû äàííûõ
13
DROP QUEUE
Óäàëÿåò çàäàííóþ î÷åðåäü èç áàçû äàííûõ
14
DROP ROUTE
Óäàëÿåò çàäàííûé ïóòü èç áàçû äàííûõ
15
DROP SERVICE
Óäàëÿåò çàäàííûé ñåðâèñ èç áàçû äàííûõ
Ïîäàâëÿþùàÿ ÷àñòü íîâûõ êîìàíä èñïîëüçóåòñÿ äëÿ ñîçäàíèÿ íîâûõ îáúåêòîâ áðîêåðà ñåðâèñîâ SQL Server. Òàêæå èìååòñÿ ãðóïïà êîìàíä, ïîçâîëÿþùèõ âûïîëíÿòü îáðàáîòêó ñîîáùåíèé, êîòîðûå ïîìåùåíû â î÷åðåäü.  òàáë. 4.4 ñîäåðæèòñÿ ñïèñîê êîìàíä T-SQL, èñïîëüçóåìûõ äëÿ îáðàáîòêè ñîîáùåíèé, ïîìåùåííûõ â î÷åðåäü. Òàáëèöà 4.4. Íàáîð êîìàíä T-SQL äëÿ ðàáîòû ñ äèàëîãàìè è î÷åðåäüþ áðîêåðà ñåðâèñîâ ¹
Êîìàíäà
Îïèñàíèå
1
BEGIN DIALOG
Ñîçäàåò íîâûé äèàëîã
2
END CONVERSATION
Çàâåðøàåò îáìåí, èñïîëüçóåìûé âûáðàííûì äèàëîãîì
3
GET SERVICE INSTANCE
Ïîëó÷àåò ID ýêçåìïëÿðà ñåðâèñà èç î÷åðåäè
4
MOVE CONVERSATION
Ïåðåìåùàåò îáìåí â íîâûé äèàëîã
5
RECEIVE
Ïîëó÷àåò ñîîáùåíèå èç î÷åðåäè
6
SEND
Îòïðàâëÿåò ñîîáùåíèå â î÷åðåäü
4.3.3. Ïðèìåð ïðèëîæåíèÿ íà îñíîâå áðîêåðà çàïðîñîâ  ïðåäûäóùèõ ðàçäåëàõ ìû ðàññìîòðåëè íåñêîëüêî íîâûõ âîçìîæíîñòåé, êîòîðûå ïîÿâèëèñü âìåñòå ñ áðîêåðîì ñåðâèñîâ SQL Server, à òàêæå ðàçîáðàëèñü â òîì, êàêèå êîìàíäû T-SQL ìîãóò èñïîëüçîâàòüñÿ äëÿ ñîçäàíèÿ îáúåêòîâ áðîêåðà ñåðâèñîâ è äëÿ óïðàâëåíèÿ î÷åðåäÿìè è äèàëîãàìè. Òåïåðü ìîæíî ïðèñòóïèòü ê ðàññìîòðåíèþ ïðèìåðà ñîçäàíèÿ îáúåêòîâ ñ ïîìîùüþ ðàññìîòðåííîãî íàáîðà êîìàíä.  êà÷åñòâå ïðèìåðà âûáåðåì ñèñòåìó îáðàáîòêè âõîäÿùèõ ñîîáùåíèé, ïîñòóïàþùèõ ê ðàáîòíèêó êàíöåëÿðèè â îðãàíèçàöèè. Âõîäÿùèå ñîîáùåíèÿ
106
Ãëàâà 4 • Áðîêåð çàïðîñîâ SQL Server
áóäóò ïîìåùàòüñÿ â î÷åðåäü ñîãëàñíî âðåìåíè èõ ïðèáûòèÿ â îðãàíèçàöèþ. Ïîñêîëüêó èìååòñÿ òîëüêî îäèí ÷åëîâåê, îáðàáàòûâàþùèé ïîñòóïèâøèå ñîîáùåíèÿ, òî ýòîò ÷åëîâåê ìîæåò áðàòü èç î÷åðåäè ïîñòóïèâøèõ ñîîáùåíèé ïî îäíîìó âõîäÿùåìó ñîîáùåíèþ è îáðàáàòûâàòü åãî. Òåïåðü ïåðåíåñåì äàííûé ïðèìåð íà ýëåêòðîííóþ ñèñòåìó àâòîìàòè÷åñêîé ðåãèñòðàöèè âõîäÿùèõ ýëåêòðîííûõ ñîîáùåíèé. Ïåðåä òåì êàê ìû ïðèñòóïèì ê àâòîìàòèçàöèè äàííîé çàäà÷è, íåîáõîäèìî ñîçäàòü íåñêîëüêî îáúåêòîâ, êîòîðûå ïîìîãóò â ðàáîòå ñ î÷åðåäüþ áðîêåðà ñåðâèñîâ. Äëÿ ýòîãî ìû ñîçäàäèì òèï ñîîáùåíèé, êîíòðàêò, î÷åðåäü è ñåðâèñ (ëèñòèíã 4.1). Ëèñòèíã 4.1. Ïðèìåð ñîçäàíèÿ îáúåêòîâ áðîêåðà ñåðâèñîâ SQL Server CREATE MESSAGE TYPE ExampleMesType ENCODING Varbinary CREATE CONTRACT ExampleContract (ExampleMesType SENT BY ANY) CREATE QUEUE ExampleQueue WITH ACTIVATION {STATUS = ON, PROCEDURE_NAME = ExampleProc, MAX_QUEUE_READERS = 5, EXECUTE AS SELF) CREATE SERVICE ExampleService1 ON QUEUE ExampleQueue(ExampleContract) CREATE SERVICE ExampleService2 ON QUEUE ExampleQueue(ExampleContract)
Íà ïåðâîì ýòàïå ñîçäàíèÿ ïðèëîæåíèÿ ñ èñïîëüçîâàíèåì áðîêåðà ñåðâèñîâ ñîçäàåòñÿ òèï ñîîáùåíèé, êîòîðûé áóäåò îáðàáàòûâàòüñÿ ñèñòåìîé.  äàííîì ïðèìåðå ìû ñîçäàåì îäèí òèï ñîîáùåíèé, êîòîðûé íîñèò íàçâàíèå ExampleMesType. Äëÿ ýòîãî èñïîëüçóåòñÿ êîìàíäà CREATE MESSAGE TYPE. Ïàðàìåòð ENCODING äàííîé êîìàíäû ïîçâîëÿåò îïðåäåëèòü ôîðìàò ñîîáùåíèÿ (áèíàðíûé èëè XML).  äàííîì ñëó÷àå ñîîáùåíèÿ áóäóò èìåòü áèíàðíûé ôîðìàò. Ýòî îçíà÷àåò, ÷òî îáðàáîòêà áóäåò âûïîëíÿòüñÿ äëÿ ñîîáùåíèé ëþáîãî òèïà. Ïîñëå ñîçäàíèÿ òèïà ñîîáùåíèé ñîçäàåòñÿ êîíòðàêò. Äëÿ ýòîãî èñïîëüçóåòñÿ êîìàíäà CREATE CONTRACT, ïîñëå êîòîðîé ñëåäóåò èìÿ êîíòðàêòà, à ñ ïîìîùüþ ïàðàìåòðà SENT BY îïðåäåëÿåòñÿ, êàêèå ñîîáùåíèÿ íåîáõîäèìî ñâÿçàòü ñ äàííûì êîíòðàêòîì. Òàêèì îáðàçîì, èñïîëüçóÿ êîìàíäó CREATE CONTRACT, ìû îïðåäåëèëè òèïû ñîîáùåíèé, êîòîðûå áóäóò îáðàáàòûâàòüñÿ âûáðàííûì äèàëîãîì. Ïîñëå ñîçäàíèÿ êîíòðàêòà ñîçäàåòñÿ î÷åðåäü.  äàííîì ñëó÷àå ñîçäàåòñÿ î÷åðåäü ExampleQueue. Âìåñòå ñ ñîçäàíèåì î÷åðåäè àêòèâèðóåòñÿ ïðîöåäóðà ExampleProc. Äëÿ ýòîãî èñïîëüçóåòñÿ ïàðàìåòð WITH ACTIVATION. Ìàêñèìàëüíîå ÷èñëî ýêçåìïëÿðîâ õðàíèìîé ïðîöåäóðû, êîòîðûå áóäóò âûïîëíÿòü ÷òåíèå ñîîáùåíèé î÷åðåäè, çàäàåòñÿ ñ ïîìîùüþ ïàðàìåòðà MAX_QUEUE_READERS è ðàâíÿåòñÿ ïÿòè. Ñòîèò îãîâîðèòüñÿ, ÷òî âî âðåìÿ âûïîëíåíèÿ äàííîé êîìàíäû ïðîöåäóðà ExampleProc äîëæíà áûòü ñîçäàíà, èíà÷å êîìàíäà áóäåò âûïîëíåíà ñ îøèáêàìè. Ïàðàìåòð EXECUTE AS ïîçâîëÿåò çàäàòü âûïîëíåíèå ïðîöåäóðû îò èìåíè äðóãîãî ïîëüçîâàòåëÿ (êîòîðûé èìååò íåîáõîäèìûå ïðèâèëåãèè äëÿ âûïîëíåíèÿ ïðîöåäóðû).  äàííîì ñëó÷àå ïðîöåäóðà ExampleProc âûïîëíÿåòñÿ îò èìåíè òîãî ïîëüçîâàòåëÿ, êîòîðûé âûïîëíèò äàííûé ñöåíàðèé. Ïîñëå òîãî êàê ñîçäàíà î÷åðåäü è îïðåäåëåíà ïðîöåäóðà, êîòîðàÿ áóäåò âûïîëíÿòü ÷òåíèå ñîîáùåíèé èç íåå, ñîçäàþòñÿ ñåðâèñû ExampleService1 è ExampleService2. Ìåæäó íèìè áóäåò â äàëüíåéøåì âûïîëíÿòüñÿ îáìåí ñîîáùåíèÿìè. Äëÿ ñîçäàíèÿ ñåðâèñà èñïîëüçóåòñÿ êîìàíäà CREATE SERVICE. Ïàðàìåòð ON QUEUE ïîçâîëÿåò îïðåäåëèòü î÷åðåäü, ñîîòâåòñòâóþùóþ äàííîìó ñåðâèñó. Ïîñëå ýòîãî ñåðâèñó ñîïîñòàâëÿåòñÿ ðàíåå ñîçäàííûé êîíòðàêò. Åñëè â óäà-
4.3. Ðàçðàáîòêà ïðèëîæåíèé è áðîêåð çàïðîñîâ
107
ëåííîé ñèñòåìå ðàíåå áûë ñîçäàí ñåðâèñ, ñ êîòîðûì áóäåò âûïîëíÿòüñÿ âçàèìîäåéñòâèå, òî íåîáõîäèìî îïðåäåëèòü ïóòü äëÿ íåãî.  ýòîì ñëó÷àå èñïîëüçóåòñÿ êîìàíäà CREATE ROUTE, ñ ïîìîùüþ êîòîðîé îïðåäåëÿåòñÿ ñåòåâîé àäðåñ êîìïüþòåðà ñ çàïóùåííûì ñåðâèñîì. Ïîñëå ñîçäàíèÿ âñåõ íåîáõîäèìûõ îáúåêòîâ áðîêåðà ñåðâèñîâ SQL Server ìîæíî ïðèñòóïàòü ê ïîñòàíîâêå ñîîáùåíèé â î÷åðåäü è âûïîëíåíèþ ÷òåíèÿ ñîîáùåíèé.  ñëåäóþùåì ïðèìåðå âûïîëíÿåòñÿ ïîìåùåíèå ñîîáùåíèé â î÷åðåäü ExampleQueue ñ ïîìîùüþ íàáîðà êîìàíä SQL Server (ëèñòèíã 4.2). Ëèñòèíã 4.2. Ïîìåùåíèå ñîîáùåíèé â î÷åðåäü áðîêåðà ñåðâèñîâ SQL Server DECLARE ExampleDialog UNIQUEIDENTIFIER BEGIN TRANSACTION BEGIN DIALOG @ExampleDialog FROM SERVICE ExampleService1 TO SERVICE 'ExampleService2' ON CONTRACT ExampleContract WITH LIFETIME = 1000; SEND ON CONVERSATION @ExampleDialog MESSAGE TYPE ExampleMesType (Message1); SEND ON CONVERSATION ExampleDialog MESSAGE TYPE ExampleMesType (Message2); COMMIT TRANSACTION
Ðàññìîòðèì áîëåå äåòàëüíî êîìàíäû, èñïîëüçîâàííûå íàìè â ïðèâåäåííîì ëèñòèíãå.  ñàìîì íà÷àëå îïðåäåëÿåòñÿ ïåðåìåííàÿ ExampleDialog, êîòîðàÿ ñîäåðæèò óíèêàëüíûé èäåíòèôèêàòîð äèàëîãà. Äàííûé èäåíòèôèêàòîð áóäåò â äàëüíåéøåì àâòîìàòè÷åñêè îïðåäåëåí SQL Server. Ïîñëå ýòîãî íà÷èíàåòñÿ âûïîëíåíèå òðàíçàêöèè. Ðàçðàáîò÷èêè SQL Server ðåêîìåíäóþò âñå êîìàíäû óïðàâëåíèÿ áðîêåðîì ñåðâèñîâ âûïîëíÿòü â òðàíçàêöèîííîì ðåæèìå, ïîñêîëüêó â ñëó÷àå âîçíèêíîâåíèÿ îøèáîê ìîæíî âûïîëíèòü ôèêñàöèþ è îòêàò èçìåíåíèé, âíîñèìûõ â î÷åðåäü. Èíûìè ñëîâàìè, ñîîáùåíèÿ, ïîìåùåííûå â î÷åðåäü, áóäóò îòîçâàíû â ñëó÷àå âîçíèêíîâåíèÿ îøèáîê. Ïîñëå ýòîãî ñîçäàåòñÿ äèàëîã ñ ïîìîùüþ êîìàíäû BEGIN DIALOG. Âî âðåìÿ ñîçäàíèÿ äèàëîãà îáÿçàòåëüíî íåîáõîäèìî îïðåäåëèòü äâóõ ó÷àñòíèêîâ äèàëîãà. Äëÿ ýòîãî èñïîëüçóþòñÿ äâà ïàðàìåòðà — FROM SERVICE è TO SERVICE. Ñ ïîìîùüþ äàííûõ ïàðàìåòðîâ îïðåäåëÿþòñÿ äâà ñåðâèñà, ìåæäó êîòîðûìè áóäåò âûïîëíÿòüñÿ îáìåí ñîîáùåíèÿìè.  äàííîì ñëó÷àå îáìåí áóäåò âûïîëíÿòüñÿ ìåæäó äâóìÿ ðàíåå ñîçäàííûìè íàìè ñåðâèñàìè ExampleService1 è ExampleService2. Ïðè ýòîì ïåðâûé áóäåò âûñòóïàòü â êà÷åñòâå îòïðàâèòåëÿ ñîîáùåíèé, à âòîðîé — â êà÷åñòâå ñåðâèñà, îáðàáàòûâàþùåãî ïîñòóïàþùèå ñîîáùåíèÿ. Ñ ïîìîùüþ êîìàíäû ON CONTRACT îïðåäåëÿåòñÿ êîíòðàêò, êîòîðûé áóäåò èñïîëüçîâàòüñÿ äëÿ äàííîãî äèàëîãà. Êàê áûëî ñêàçàíî ðàíåå, êîíòðàêò èñïîëüçóåòñÿ äëÿ òîãî, ÷òîáû îïðåäåëèòü ïàðàìåòðû ñîîáùåíèé, ïåðåñûëàåìûõ ìåæäó îòïðàâèòåëåì è ïîëó÷àòåëåì. Ïåðåä çàêðûòèåì òðàíçàêöèè âûïîëíÿåòñÿ ïîìåùåíèå äâóõ ñîîáùåíèé â î÷åðåäü. Äëÿ ýòîãî èñïîëüçóþòñÿ êîìàíäû SEND. Ïðè ýòîì èñïîëüçóåòñÿ ðàíåå ñîçäàííûé äèàëîã, à òàêæå îïðåäåëÿåòñÿ òèï ñîîáùåíèé ExampleMesType.
108
Ãëàâà 4 • Áðîêåð çàïðîñîâ SQL Server
Ïîñëå ïîìåùåíèÿ ñîîáùåíèé â î÷åðåäü ìîæíî ïåðåéòè ê ðàññìîòðåíèþ ïðèìåðà ïðèëîæåíèÿ, êîòîðîå áóäåò âûïîëíÿòü ÷òåíèå ýòèõ ñîîáùåíèé èç î÷åðåäè ñ öåëüþ äàëüíåéøåé îáðàáîòêè.  ýòîì ïðèìåðå ìû ñîçäàäèì õðàíèìóþ ïðîöåäóðó, êîòîðàÿ áóäåò ÷èòàòü ñîîáùåíèÿ èç î÷åðåäè. Êàê áûëî ðàññìîòðåíî íàìè ðàíåå (ñì. ëèñòèíã 4.1), ìû ñîçäàëè î÷åðåäü ExampleQueue ñ àâòîìàòè÷åñêîé àêòèâàöèåé, ÷òî íå òðåáóåò äîïîëíèòåëüíîé àêòèâàöèè. Ýòî òàêæå îçíà÷àåò, ÷òî ñîîòâåòñòâóþùàÿ ïðîöåäóðà ExampleProc áóäåò àâòîìàòè÷åñêè çàïóùåíà âî âðåìÿ ïîÿâëåíèÿ íîâîãî ñîîáùåíèÿ â î÷åðåäè. Ðàññìîòðèì áîëåå äåòàëüíî õðàíèìóþ ïðîöåäóðó, êîòîðàÿ áûëà ñîçäàíà ðàíåå ïåðåä ñîçäàíèåì îáúåêòîâ áðîêåðà çàïðîñîâ (ëèñòèíã 4.3). Ëèñòèíã 4.3. Ñîçäàíèå õðàíèìîé ïðîöåäóðû CREATE PROC ExampleProc AS DECLARE @ExampleDialog UNIQUEIDENTIFIER DECLARE @mess_type__id int DECLARE @mess_body NVARCHAR(1000) DECLARE @mess NVARCHAR(1000) While (1=1) BEGIN BEGIN TRANSACTION WAITFOR (RECEIVE top(l) @mess_type_id = mess_type_id, @mess_body = mess_body, @ExampleDialog = convers_handle FROM ExampleQueue), TIMEOUT 200; if (@@ROWCOUNT = 0) BEGIN COMMIT TRANSACTION BREAK END IF (@mess_type_id = 2) BEGIN PRINT 'Äèàëîã çàêîí÷åí' + cast(@ExampleDialog as nvarchar(40)) END ELSE BEGIN BEGIN TRANSACTION BEGIN DIALOG @ExampleDialog FROM SERVICE ExampleService1 TO SERVICE 'ExampleService2' ON CONTRACT ExampleContract WITH LIFETIME = 1000; SELECT @mess = 'Ïîëó÷åíî ñîîáùåíèå:' + @mess_body; SEND ON CONVERSATION @ExampleDialog MESSAGE TYPE ExampleMesType (@mess); PRINT CONVERT (varchar(30), @mess) COMMIT TRANSACTION END CONVERSATION @ExampleDialog END COMMIT TRANSACTION END
4.3. Ðàçðàáîòêà ïðèëîæåíèé è áðîêåð çàïðîñîâ
109
Ñîçäàíèå õðàíèìîé ïðîöåäóðû — ýòî îäèí èç ñàìûõ ñëîæíûõ è â òî æå âðåìÿ óâëåêàòåëüíûõ ìîìåíòîâ ðàáîòû ñ î÷åðåäÿìè áðîêåðà ñåðâèñîâ. Ïðè ñîçäàíèè õðàíèìîé ïðîöåäóðû ó÷èòûâàþòñÿ öåëè, êîòîðûå ñòàâèëèñü ïðè ðàáîòå ñ î÷åðåäÿìè. Èíûìè ñëîâàìè, ñîçäàíèå õðàíèìîé ïðîöåäóðû îáû÷íî ó÷èòûâàåò áèçíåñ-çàäà÷è, äëÿ ðåøåíèÿ êîòîðûõ âîçíèêëà íåîáõîäèìîñòü â èñïîëüçîâàíèè î÷åðåäåé áðîêåðà ñåðâèñîâ SQL Server.  äàííîì ïðèìåðå ñíà÷àëà îïðåäåëÿåòñÿ ñïèñîê íåîáõîäèìûõ ïåðåìåííûõ, êîòîðûå áóäóò èñïîëüçîâàòüñÿ íàìè ïðè ñîçäàíèè ïðîöåäóðû: · @ExampleDialog — óíèêàëüíûé èäåíòèôèêàòîð äèàëîãà; · @mess_type_id — ñ÷åò÷èê ñîîáùåíèé; · @mess_body — òåëî ñîîáùåíèÿ (òåêñò); · @mess — ñîîáùåíèå, âûâîäèìîå ïîëüçîâàòåëþ âî âðåìÿ îáðàáîòêè ñîîáùåíèé î÷åðåäè. Êîä ïðîöåäóðû âûïîëíÿåòñÿ ñ èñïîëüçîâàíèåì ìåõàíèçìà òðàíçàêöèé, ÷òî òàêæå ïîçâîëÿåò èçáàâèòüñÿ îò îøèáîê SQL Server âî âðåìÿ ñîçäàíèÿ õðàíèìîé ïðîöåäóðû. Âíà÷àëå âûïîëíÿåòñÿ ÷òåíèå ñîîáùåíèÿ èç î÷åðåäè. Äëÿ ýòîãî èñïîëüçóåòñÿ êîìàíäà RECEIVE.  äàííîì ñëó÷àå âûïîëíÿåòñÿ ÷òåíèå òîëüêî îäíîãî ñîîáùåíèÿ èç î÷åðåäè, î ÷åì ãîâîðèò êîìàíäà top(l). Ñ ïîìîùüþ äàííîé êîìàíäû âû ìîæåòå âûïîëíÿòü ÷òåíèå îäíîâðåìåííî íåñêîëüêèõ ñîîáùåíèé èç î÷åðåäè äëÿ óñêîðåíèÿ ïðîöåññà èõ îáðàáîòêè. Ïîñëå ïîëó÷åíèÿ ñîîáùåíèÿ èç î÷åðåäè âûïîëíÿåòñÿ ñîõðàíåíèå çíà÷åíèé ïåðåìåííûõ. ×òåíèå âûïîëíÿåòñÿ èç î÷åðåäè ExampleQueue. Ïîñëå ýòîãî âûïîëíÿåòñÿ ïðîâåðêà òîãî, ÷òî ñîîáùåíèå èç î÷åðåäè áûëî ïðî÷èòàíî. Äëÿ ýòîãî èñïîëüçóåòñÿ îïåðàòîð if (@@ROWCOUNT = 0). Åñëè íè îäíîãî çíà÷åíèÿ íå áûëî ïðî÷èòàíî, òî âûïîëíÿåòñÿ ôèêñàöèÿ òðàíçàêöèè è ðàáîòà ïðîöåäóðû çàâåðøàåòñÿ. Åñëè ñîîáùåíèå âñå æå áûëî ïðî÷èòàíî (ïðîâåðÿåòñÿ ñðàâíåíèåì çíà÷åíèÿ ïåðåìåííîé mess_type_id), òî âûïîëíÿåòñÿ îáðàáîòêà ñîîáùåíèÿ.  ýòîì ñëó÷àå îòêðûâàåòñÿ äèàëîã ExampleDialog. Ýòîò äèàëîã áóäåò èñïîëüçîâàòüñÿ äëÿ ïîìåùåíèÿ ñîîáùåíèé â î÷åðåäü ExampleQueue. Äëÿ îãðàíè÷åíèÿ îáðàáàòûâàåìûõ ñîîáùåíèé (èõ òèïà) èñïîëüçóåòñÿ êîíòðàêò ExampleContract. Ïîñëå îòêðûòèÿ äèàëîãà ïîëó÷åííîå ñîîáùåíèå èçìåíÿåòñÿ è ê íåìó äîáàâëÿåòñÿ ñòðîêà «Ïîëó÷åíî ñîîáùåíèå:». Ïîñëå òîãî êàê ñîîáùåíèå ïîäãîòîâëåíî äëÿ ïåðåäà÷è (èëè îòîáðàæåíèÿ íà ýêðàíå êîìïüþòåðà êîíå÷íîãî ïîëüçîâàòåëÿ), îíî ïîìåùàåòñÿ â î÷åðåäü ExampleQueue. Ïîñëå ýòîãî âûïîëíÿåòñÿ çàâåðøåíèå äèàëîãà è ôèêñèðîâàíèå òðàíçàêöèè.
Ñåðâèñû àíàëèòèêè
5
Ïåðâûé íàáîð OLAP-ñåðâèñîâ ïîÿâèëñÿ ñ âûõîäîì SQL Server 7.0. Ñ òåõ ïîð ýòîò ïðîãðàììíûé ïðîäóêò âñå áîëåå àêòèâíî çàõâàòûâàë ðûíîê ïðîãðàììíîãî îáåñïå÷åíèÿ äàííîãî êëàññà. Îá ýòîì ñâèäåòåëüñòâóåò ïîâñåìåñòíîå ðàñïðîñòðàíåíèå SQL Server, ñîêðàùàþùåå ðàñõîäû êîìïàíèé íà ðàçâåðòûâàíèå ñåðâèñîâ àíàëèòèêè íà ïðåäïðèÿòèè. Òàêèì îáðàçîì, ñåðâèñû àíàëèòèêè ïðîäâèãàþòñÿ íà ðûíîê Business Intelligence (BI) çà ñ÷åò ïðîäâèæåíèÿ ñåðâåðà ðåëÿöèîííûõ áàç äàííûõ. Íàñëåäíèêîì SQL Server 7.0 ÿâëÿåòñÿ SQL Server 2000, â êîòîðîì áûëè ïåðåñìîòðåíû è çíà÷èòåëüíî óëó÷øåíû âîçìîæíîñòè ñåðâèñîâ àíàëèòèêè.  äàííûé ìîìåíò ðûíîê BI ìíîãèå àíàëèòèêè êîìïüþòåðíîãî ðûíêà íàçûâàþò îäíèì èç íàèáîëåå äèíàìè÷íî ðàçâèâàþùèõñÿ. Ýòî îáúÿñíÿåòñÿ òåì, ÷òî âî ìíîãèõ êîìïàíèÿõ â ïðîöåññå èõ ðàáîòû íàêîïèëàñü èíôîðìàöèÿ. Äàííàÿ èíôîðìàöèÿ îáû÷íî ñêðûòà â íåäðàõ ðåëÿöèîííûõ áàç äàííûõ, è òðåáóåòñÿ âûïîëíÿòü åå àíàëèç äîñòóïíûìè ñðåäñòâàìè. Îäèí èç íàèáîëåå äîñòóïíûõ ñïîñîáîâ — ýòî èñïîëüçîâàíèå ñåðâèñîâ àíàëèòèêè, êîòîðûå ïîñòàâëÿþòñÿ âìåñòå ñ SQL Server, ÷òî ñîêðàùàåò ðàñõîäû íà ïðèîáðåòåíèå ïðîãðàììíûõ ïðîäóêòîâ ïîäîáíîãî êëàññà. Ïðîãðàììíîå îáåñïå÷åíèå êëàññà BI ïîçâîëÿåò âûÿâèòü çàâèñèìîñòè â îïåðàöèîííûõ äàííûõ, êîòîðûå èñïîëüçóþòñÿ â èíôîðìàöèîííûõ ñèñòåìàõ. Èçâëåêàÿ èç îïåðàöèîííûõ äàííûõ êîìïàíèè ñêðûòûå çàâèñèìîñòè, òåõíîëîãèè OLAP, Data Mining è Data Warehousing ïîçâîëÿþò àãðåãèðîâàòü îòäåëüíûå êóñêè èíôîðìàöèè â öåëîñòíóþ êàðòèíó ñ öåëüþ ïðåäîñòàâèòü ðóêîâîäñòâó îáùèé âèä ïðîöåññîâ, ïðîèñõîäÿùèõ íà ïðåäïðèÿòèè, â îòðàñëè èëè íà ãëîáàëüíîì ðûíêå. Ñ ïîìîùüþ ïîäîáíûõ ðåøåíèé ìîãóò àíàëèçèðîâàòüñÿ äàííûå èç ñèñòåì çàêóïîê, çàêàçîâ, ïðîäàæ, ïîääåðæêè è ìíîãèõ äðóãèõ, ãäå òðåáóåòñÿ öåëîñòíûé ïîäõîä ê îòäåëüíûì ôðàãìåíòàì èíôîðìàöèè. Êîíå÷íûé ðåçóëüòàò èñïîëüçîâàíèÿ ïîäîáíûõ ñèñòåì íå çàñòàâèò ñåáÿ æäàòü: ðóêîâîäñòâî áóäåò îáëàäàòü áîëåå ïîëíîé èíôîðìàöèåé î ïðîöåññàõ, ïðîèñõîäÿùèõ íà ïðåäïðèÿòèè è â îòðàñëè, à îòäåëüíûå ñîòðóäíèêè ñìîãóò àíàëèçèðîâàòü íåîáõîäèìûå îáúåìû çàêóïîê è ïðîäàæ.
5.1. Îáçîð è ïðåèìóùåñòâà
111
Òàêèì îáðàçîì, ñèñòåìû OLAP, Data Mining è Data Warehousing ìîãóò áûòü âåðòèêàëüíî èíòåãðèðîâàííûìè, à òàêæå èñïîëüçîâàòüñÿ íà ëþáîé ãîðèçîíòàëè ïðåäïðèÿòèÿ, ÷òî ïîëîæèòåëüíî ñêàçûâàåòñÿ íà èõ ïîâñåìåñòíîì ðàñïðîñòðàíåíèè. Èñïîëüçîâàíèå äàííûõ òåõíîëîãèé èìååò îäíî î÷åíü áîëüøîå ïðåèìóùåñòâî äëÿ áèçíåñà: òåõíîëîãèè OLAP, Data Mining è Data Warehousing ïîçâîëÿþò ïðåäîñòàâèòü íàèáîëåå àêòóàëüíóþ ïðîàíàëèçèðîâàííóþ èíôîðìàöèþ îá îïåðàöèÿõ íà ïðåäïðèÿòèè, ÷òî â êîíå÷íîì èòîãå ïîçâîëèò ïðèíèìàòü îáîñíîâàííûå ñòðàòåãè÷åñêèå ðåøåíèÿ.  ïîñëåäíèå ãîäû ðàçâèòèå ðûíêà BI øëî áûñòðåå, ÷åì ðàçâèòèå èíôîðìàöèîííîãî ðûíêà â öåëîì.  îñíîâíîì ýòî îáúÿñíÿëîñü òåì, ÷òî òåðìèí «BI» ÷àùå âñåãî îòîæäåñòâëÿëñÿ ñ òåðìèíîì «OLAP». Òåïåðü ïîíÿòèå «BI» îáîçíà÷àåò âñå òåõíîëîãèè, êîòîðûå èñïîëüçóþòñÿ íà ïðåäïðèÿòèè äëÿ ïîääåðæêè â ïðèíÿòèè ðåøåíèé. Ýòî îáîáùàþùèé òåðìèí äëÿ òàêèõ òåõíîëîãèé, êàê OLAP, Data Mining è Data Warehousing. Ðàçðàáîò÷èêè SQL Server 2005 ïûòàëèñü ìàêñèìàëüíî îõâàòèòü òåõíîëîãèè BI çà ñ÷åò íîâîé àðõèòåêòóðû ñåðâèñîâ àíàëèòèêè. Òåïåðü ïðèëîæåíèÿ ñåðâèñîâ àíàëèòèêè ìîãóò âêëþ÷àòü ýëåìåíòû ñåðâèñîâ èíòåãðàöèè è îò÷åòîâ, ÷òî ïîçâîëÿåò áîëåå òîíêî âñòðàèâàòü ïîäîáíûå ðåøåíèÿ â èíôðàñòðóêòóðó ïðåäïðèÿòèÿ, ïðåäîñòàâëÿòü ïîëüçîâàòåëÿì áîëüøèé íàáîð ñåðâèñîâ, à òàêæå ðåøàòü áîëåå ñëîæíûå çàäà÷è. Òåõíîëîãèè BI óäåëåíî îñîáîå âíèìàíèå â íîâîé âåðñèè SQL Server.  ñâÿçè ñ ýòèì ñåðâèñû àíàëèòèêè äîïîëíåíû íîâûìè óòèëèòàìè, àðõèòåêòóðà ñóùåñòâîâàâøèõ óòèëèò çíà÷èòåëüíî ïåðåñìîòðåíà.  äàííîé ãëàâå ìû ðàññìîòðèì, ÷òî ïðåäñòàâëÿåò ñîáîé òåõíîëîãèÿ OLAP è êàêèì îáðàçîì îíà çàäåéñòâîâàíà â ñåðâèñàõ àíàëèòèêè SQL Server 2005. Äàëåå ìû ïîñòàðàåìñÿ ðàçîáðàòüñÿ, êàê óñòðîåíî ÿäðî ñåðâèñîâ àíàëèòèêè è êàêèå ïðåèìóùåñòâà ïðåäñòàâëåíû â íîâîé âåðñèè. Ïîñëå ýòîãî ïåðåéäåì ê ðàññìîòðåíèþ Óíèôèöèðîâàííîé ìîäåëè èçìåðåíèé (UDM — Unified Dimensional Model). Ïîñëå ýòîãî ìû ðàññìîòðèì óòèëèòû, êîòîðûå ïîçâîëÿþò ñîçäàâàòü ïðèëîæåíèÿ è íàñòðàèâàòü ñåðâèñû àíàëèòèêè, ñõåìû îáåñïå÷åíèÿ áåçîïàñíîñòè è ðàçðàáîòêè ïðèëîæåíèé äëÿ ñåðâèñîâ àíàëèòèêè.
5.1. Îáçîð è ïðåèìóùåñòâà Ñåðâèñû àíàëèòèêè — ýòî ïîòîìêè OLAP-ñåðâèñîâ, êîòîðûå ñîçäàâàëèñü äëÿ îáðàáîòêè çàïðîñîâ ïîëüçîâàòåëåé è ïðåäîñòàâëåíèÿ îò÷åòîâ äëÿ äàííûõ, ñîäåðæàùèõñÿ â õðàíèëèùå àíàëèòè÷åñêîé èíôîðìàöèè. Èíôîðìàöèÿ, ðàñïîëàãàþùàÿñÿ â õðàíèëèùàõ äàííûõ, — ýòî íå ðåëÿöèîííûå äàííûå â ÷èñòîì ïîíèìàíèè, îäíàêî ñïîñîá åå õðàíåíèÿ èìååò ïðÿìîå ñõîäñòâî ñ ðåëÿöèîííûì. Õðàíåíèå èíôîðìàöèè ïðîèñõîäèò â âèäå ñõåìû, êîòîðàÿ îáåñïå÷èâàåò ìàêñèìàëüíóþ ãèáêîñòü è ñêîðîñòü ïîñòðîåíèÿ íåîáõîäèìûõ îò÷åòîâ è ñðåçîâ äàííûõ. Äàííûå â ñõåìàõ õðàíèëèù ðàñïîëàãàþòñÿ â âèäå çâåçäîïîäîáíîé ñòðóêòóðû èëè êðóãîâîé ñòðóêòóðû ñ ýëåìåíòàìè çâåçäû. Ýòî îçíà÷àåò, ÷òî ìåæäó äàííûìè ñóùåñòâóåò ñâÿçü ïî òèïó «ìíîãèå êî ìíîãèì», ÷òî ïîçâîëÿåò ñóùåñòâåííî ñîêðàòèòü âðåìÿ íà ñ÷èòûâàíèå äàííûõ è óñòàíîâêó ñâÿçè ìåæäó íèìè. Äëÿ ðàáîòû ñ òàêèìè
112
Ãëàâà 5 • Ñåðâèñû àíàëèòèêè
õðàíèëèùàìè èñïîëüçóåòñÿ òåõíîëîãèÿ OLAP.  îòëè÷èå îò òåõíîëîãèè ðàáîòû ñ ðåëÿöèîííûìè áàçàìè äàííûõ, â êîòîðûõ ÷òåíèå äàííûõ âûïîëíÿåòñÿ ïîñëåäîâàòåëüíî, ýòà òåõíîëîãèÿ ïîçâîëÿåò áûñòðîå ÷òåíèå âñåãî îáúåìà äàííûõ ñ öåëüþ áûñòðîãî âîçâðàùåíèÿ ðåçóëüòàòîâ. Âûñîêàÿ ñêîðîñòü ñ÷èòûâàíèÿ äàííûõ äîñòèãàåòñÿ çà ñ÷åò èñïîëüçîâàíèÿ ñïåöèàëüíûõ àëãîðèòìîâ è ñõåì õðàíåíèÿ äàííûõ. Íàïðèìåð, äëÿ òîãî ÷òîáû ïðîàíàëèçèðîâàòü öåíû íà òûñÿ÷è òîâàðîâ íà îäíîì ðûíêå äëÿ îïðåäåëåííîãî ðåãèîíà çà îïðåäåëåííûé ïðîìåæóòîê âðåìåíè, íåîáõîäèìî ñ÷èòàòü òûñÿ÷è, à ìîæåò áûòü, äàæå ìèëëèîíû ñòðîê òàáëèöû. Ïðîöåññ ñ÷èòûâàíèÿ òàêîãî ÷èñëà ñòðîê ìîæåò çàíÿòü äîñòàòî÷íî áîëüøîé ïðîìåæóòîê âðåìåíè. Äàííóþ ïðîáëåìó ìîæíî ðåøèòü çà ñ÷åò ñ÷èòûâàíèÿ îáîáùàþùåé èíôîðìàöèè î ñòðîêàõ òàáëèöû (ìåòàäàííûõ). Ñ÷èòûâàíèå äàííîé èíôîðìàöèè ìîæåò áûòü âûïîëíåíî çà äîëè ñåêóíäû, ïîñêîëüêó îíà õðàíèòñÿ â íåñêîëüêèõ ñòðîêàõ. Ýòî ïðèâîäèò ê ìíîãîêðàòíîìó óâåëè÷åíèþ ïðîèçâîäèòåëüíîñòè OLAP-ñåðâåðîâ.  îòëè÷èå îò òàáëèö ðåëÿöèîííûõ áàç äàííûõ, òåõíîëîãèÿ OLAP ðàáîòàåò ñ êóáàìè äàííûõ, èìåþùèìè íåñêîëüêî èçìåðåíèé, ÷òî ïîçâîëÿåò õðàíèòü ðàçíîðîäíóþ èíôîðìàöèþ, êîòîðàÿ õàðàêòåðèçóåòñÿ íåñêîëüêèìè ïàðàìåòðàìè. Íàïðèìåð, â êóáàõ ëåã÷å âûïîëíÿòü õðàíåíèå è ñ÷èòûâàíèå çíà÷åíèé ïðîäàæ îòäåëüíîãî òîâàðà çàäàííîãî ïîäðàçäåëåíèÿ êîìïàíèè çà îïðåäåëåííûé ïðîìåæóòîê âðåìåíè.  ýòîì ñëó÷àå çíà÷åíèå áàçû äàííûõ õàðàêòåðèçóåòñÿ òðåìÿ ïàðàìåòðàìè: · íàèìåíîâàíèå òîâàðà; · ïîäðàçäåëåíèå êîìïàíèè; · âðåìÿ ïðîäàæè òîâàðà. Ïîäîáíûå ïàðàìåòðû ÿâëÿþòñÿ èçìåðåíèÿìè òðåõìåðíîãî êóáà äëÿ õðàíåíèÿ äàííûõ î ïðîäàæàõ.  îáùåì ñëó÷àå êîëè÷åñòâî èçìåðåíèé êóáà ìîæåò áûòü íå îãðàíè÷åíî, îäíàêî â ñëó÷àå áîëüøèõ çíà÷åíèé ýòî óñëîæíÿåò ðàáîòó ñ òàêèìè êóáàìè, à òàêæå çàìåäëÿåò ðàáîòó OLAP-ñåðâåðà. Ïîäîáíûé ïîäõîä â õðàíåíèè äàííûõ ïîçâîëÿåò áîëåå áûñòðî âûïîëíÿòü ôèëüòðàöèþ äàííûõ, âûïîëíÿòü ïîäçàïðîñû è äåëàòü ðàçðåçû äàííûõ âäîëü îòäåëüíîãî èçìåðåíèÿ êóáà (ôèêñèðîâàòü îäíó èç ïåðåìåííûõ). Èññëåäîâàíèå âîçìîæíîãî ÷èñëà íåîáõîäèìûõ èçìåðåíèé, òðåáóþùèõñÿ â àíàëèòè÷åñêîé ìîäåëè, ïîêàçàëî, ÷òî îäíîâðåìåííî ìîæåò èñïîëüçîâàòüñÿ äî 19 èçìåðåíèé. Îáû÷íî áîëüøåå ÷èñëî èçìåðåíèé íà ïðàêòèêå íå èñïîëüçóåòñÿ. Êëþ÷åâûì â òåõíîëîãèè OLAP ÿâëÿåòñÿ ïîíÿòèå àãðåãàöèè. Àãðåãàöèÿìè íàçûâàþò ñãðóïïèðîâàííûå (àãðåãèðîâàííûå) ïî îïðåäåëåííûì óñëîâèÿì èñõîäíûå çíà÷åíèÿ ïîêàçàòåëåé. Îáû÷íî ïîä ñîçäàíèåì àãðåãàöèè ïîíèìàåòñÿ ëþáàÿ ïðîöåäóðà ôîðìèðîâàíèÿ ìåíüøåãî êîëè÷åñòâà çíà÷åíèé (àãðåãàòîâ) íà îñíîâàíèè áîëüøåãî êîëè÷åñòâà èñõîäíûõ çíà÷åíèé. Ïðè ýòîì àãðåãàòû àäåêâàòíî îòîáðàæàþò èñõîäíûå äàííûå.  äàëüíåéøåì ïîä òåðìèíàìè «àãðåãèðîâàíèå» è «àãðåãàöèÿ» ìû áóäåì ïîíèìàòü èñêëþ÷èòåëüíî ïðîöåññ îáúåäèíåíèÿ äàííûõ ïî îïðåäåëåííûì ïàðàìåòðàì. Ïðåäâàðèòåëüíîå ôîðìèðîâàíèå è ñîõðàíåíèå àãðåãàöèé ñ öåëüþ óìåíüøåíèÿ âðåìåíè îòêëèêà íà çàïðîñ ïîëüçîâàòåëÿ ÿâëÿåòñÿ îñíîâíûì ñâîéñòâîì ñèñòåì ïîääåðæêè îïåðàòèâíîãî àíàëèçà.
5.1. Îáçîð è ïðåèìóùåñòâà
113
5.1.1. Òèïû õðàíèëèù OLAP  òåõíîëîãèè OLAP âûäåëÿþò òðè îñíîâíûõ òèïà äëÿ õðàíåíèÿ ìíîãîìåðíûõ ìàññèâîâ äàííûõ, êàæäûé èç êîòîðûõ õàðàêòåðèçóåòñÿ ñïåöèàëüíûìè àëãîðèòìàìè õðàíåíèÿ äàííûõ è ñêîðîñòüþ îáðàáîòêè çàïðîñîâ ïîëüçîâàòåëåé. Âûäåëÿþò ñëåäóþùèå òðè òèïà õðàíèëèù ìíîãîìåðíûõ äàííûõ: · Multidimensional OLAP (MOLAP) — â îñíîâå ïðîäóêòà ëåæèò íåðåëÿöèîííàÿ ñòðóêòóðà äàííûõ, îáåñïå÷èâàþùàÿ ìíîãîìåðíîå õðàíåíèå, îáðàáîòêó è ïðåäñòàâëåíèå äàííûõ. Ñëåäîâàòåëüíî, áàçû äàííûõ òàêæå íàçûâàþò ìíîãîìåðíûìè. Äàííûå â ïðîöåññå àíàëèçà âûáèðàþòñÿ èñêëþ÷èòåëüíî èç ìíîãîìåðíîé ñòðóêòóðû. Äëÿ áûñòðîãî äîñòóïà ê äàííûì òàê æå, êàê è â ñëó÷àå ñ ðåëÿöèîííûìè áàçàìè äàííûõ, èñïîëüçóþòñÿ èíäåêñû. ßäðî MOLAP-ñèñòåìû îïòèìèçèðîâàíî äëÿ îáðàáîòêè çàïðîñîâ ê MOLAP-õðàíèëèùàì. Ñ ïîìîùüþ äàííîãî õðàíèëèùà ìîæíî íàìíîãî áûñòðåå îáðàáàòûâàòü çàïðîñû ïîëüçîâàòåëåé, ÷åì â ñëó÷àå ñ ROLAP. Ïîìèìî ýòîãî äëÿ ðàáîòû MOLAP òðåáóåòñÿ ìåíüøèé îáúåì õðàíèëèùà, îäíàêî òåõíîëîãèÿ MOLAP èìååò ñâîé íåäîñòàòîê, êîòîðûé ñèëüíî âëèÿåò íà èñïîëüçîâàíèå äàííîãî ðåøåíèÿ â äèíàìè÷íî ðàñòóùèõ êîìïàíèÿõ, — MOLAP ñëàáî ìàñøòàáèðóåìà. Äëÿ ìàñøòàáèðîâàíèÿ áàç äàííûõ íà îñíîâå MOLAP òðåáóþòñÿ äîïîëíèòåëüíûå ñåðâåðû. · Relational OLAP (ROLAP) — ðåëÿöèîííàÿ OLAP ïðåäñòàâëÿåò ñîáîé ìíîãîìåðíóþ ñòðóêòóðó, êîòîðàÿ ðåàëèçóåòñÿ çà ñ÷åò èñïîëüçîâàíèÿ ðåëÿöèîííûõ òàáëèö. Äàííûå â ïðîöåññå àíàëèçà âûáèðàþòñÿ èç ðåëÿöèîííîé áàçû äàííûõ ñ ïîìîùüþ ðàçëè÷íûõ àíàëèòè÷åñêèõ èíñòðóìåíòîâ. Îñíîâíûì ïðåèìóùåñòâîì äàííîãî òèïà õðàíèëèù OLAP ÿâëÿåòñÿ âîçìîæíîñòü èñïîëüçîâàíèÿ ñóùåñòâóþùåé èíôðàñòðóêòóðû äëÿ õðàíåíèÿ äàííûõ.  òîì ñëó÷àå, åñëè â êîìïàíèè ðàíåå áûëà ðàçâåðíóòà ðåëÿöèîííàÿ áàçà äàííûõ, îíà ìîæåò áûòü èñïîëüçîâàíà äëÿ ñèñòåì àíàëèçà îïåðàòèâíûõ äàííûõ. Ïîìèìî ýòîãî äàííàÿ òåõíîëîãèÿ õîðîøî ìàñøòàáèðóåòñÿ, îäíàêî äëÿ õðàíåíèÿ äàííûõ ROLAP îáû÷íî òðåáóåòñÿ áîëüøå äèñêîâîãî ïðîñòðàíñòâà, ÷åì ïðè èñïîëüçîâàíèè MOLAP. ROLAP èìååò ìåíüøóþ ñêîðîñòü îáðàáîòêè çàïðîñîâ ïîëüçîâàòåëåé ïî ñðàâíåíèþ ñ MOLAP. · Hybrid OLAP (HOLAP) — ãèáðèäíàÿ OLAP ÿâëÿåòñÿ ñóïåðïîçèöèåé òåõíîëîãèé MOLAP è ROLAP. Îò îáåèõ òåõíîëîãèé îíà áåðåò íàèëó÷øåå. Òàê æå êàê è ROLAP, HOLAP ðàçâåðòûâàåòñÿ íà îñíîâå ðåëÿöèîííûõ áàç äàííûõ, ïîäîáíî MOLAP äàííàÿ òåõíîëîãèÿ ïîçâîëÿåò âûïîëíÿòü õðàíåíèå àãðåãàöèé â õðàíèëèùå, îòëè÷íîì îò ïåðâè÷íîãî ðåëÿöèîííîãî õðàíèëèùà. Ýòà òåõíîëîãèÿ ïîçâîëÿåò ðàçâåðòûâàòü ãèáðèäíûå OLAP íà îñíîâå èìåþùåéñÿ ñòðóêòóðû ðåëÿöèîííûõ áàç äàííûõ è ïðè ýòîì ïîëüçîâàòüñÿ ïðåèìóùåñòâàìè, ïðåäîñòàâëÿåìûìè òåõíîëîãèåé MOLAP. Ïîñëå òîãî êàê ìû ðàçîáðàëèñü â îñíîâíûõ ïîíÿòèÿõ òåõíîëîãèè OLAP, ìîæíî ïåðåéòè ê ðàññìîòðåíèþ ñåðâèñîâ àíàëèòèêè SQL Server 2005.
114
Ãëàâà 5 • Ñåðâèñû àíàëèòèêè
5.1.2. Ïðåèìóùåñòâà ñåðâèñîâ àíàëèòèêè Îäíèì èç îñíîâíûõ ïðåèìóùåñòâ ñåðâèñîâ àíàëèòèêè SQL Server 2005 ÿâëÿþòñÿ èçìåíåíèÿ, âíåñåííûå â ÿäðî ñèñòåìû.  SQL Server 2005 óìåíüøåíû îãðàíè÷åíèÿ, êîòîðûå íàêëàäûâàëèñü íà ñèñòåìó â ïðåäûäóùèõ âåðñèÿõ ýòîãî ïðîäóêòà, à òàêæå äîáàâëåí ðÿä íîâûõ ôóíêöèé. Òåïåðü ñåðâèñû àíàëèòèêè ïîääåðæèâàþò êëàñòåðèçàöèþ è ðàáîòó íåñêîëüêèõ ýêçåìïëÿðîâ SQL Server. Óëó÷øåíèÿ êîñíóëèñü èñïîëüçîâàíèÿ òðèããåðîâ è ñðåäñòâ òðàññèðîâêè, ëîêàëèçàöèè, óïðàâëåíèÿ òîìàìè, à òàêæå äðóãèõ êîìïîíåíòîâ ñåðâèñîâ àíàëèòèêè SQL Server 2005.  ñëåäóþùèõ ðàçäåëàõ ìû äåòàëüíî ðàññìîòðèì ïàðàìåòðû ñåðâèñîâ àíàëèòèêè, â êîòîðûõ ïðîèçîøëè èçìåíåíèÿ.
5.1.3. Ïîääåðæêà íåñêîëüêèõ ýêçåìïëÿðîâ SQL Server  ïðåäûäóùåé âåðñèè SQL Server ñåðâèñû àíàëèòèêè íå ïîääåðæèâàëè èñïîëüçîâàíèå íåñêîëüêèõ ýêçåìïëÿðîâ, çà èñêëþ÷åíèåì ðåëÿöèîííîãî õðàíèëèùà, êîòîðîå ïîääåðæèâàëî äî 16 îäíîâðåìåííî ðàáîòàþùèõ ýêçåìïëÿðîâ. Ïîääåðæêà íåñêîëüêèõ ýêçåìïëÿðîâ SQL Server îáû÷íî èñïîëüçóåòñÿ êîìïàíèÿìè, ïðåäîñòàâëÿþùèìè íàáîð âåá-ñåðâèñîâ ñâîèì êëèåíòàì. Ê òàêèì êîìïàíèÿì ìîæíî îòíåñòè ASP-êîìïàíèè, êîëè÷åñòâî êîòîðûõ ìàëî íà ðûíêàõ èíôîðìàöèîííûõ òåõíîëîãèé ïîñòñîâåòñêîãî ïðîñòðàíñòâà. Òàêèå êîìïàíèè ìîãóò èìåòü íåñêîëüêî ñåðâåðîâ äëÿ ïðåäîñòàâëåíèÿ ñåðâèñîâ àíàëèòèêè ñòîðîííèì çàêàç÷èêàì. Òàêèì îáðàçîì, ðàçâåðòûâàÿ íåñêîëüêî ýêçåìïëÿðîâ SQL Server íà îòäåëüíîì êîìïüþòåðå, îíè ìîãóò çíà÷èòåëüíî ñîêðàòèòü ðàñõîäû íà àïïàðàòíîå îáåñïå÷åíèå.  íîâîé âåðñèè SQL Server ïðîáëåìà ðàçâåðòûâàíèÿ íåñêîëüêèõ ýêçåìïëÿðîâ ñåðâèñîâ àíàëèòèêè ñ óñïåõîì ðåøåíà. Òåïåðü íà îòäåëüíîì êîìïüþòåðå ìîæåò áûòü ðàçâåðíóòî äî 50 íåçàâèñèìûõ ýêçåìïëÿðîâ SQL Server, íà êîòîðûõ ìîãóò áûòü óñòàíîâëåíû ñåðâèñû àíàëèòèêè. Ïðè ýòîì íåêîòîðûå ýêçåìïëÿðû SQL Server ìîãóò áûòü íàñòðîåíû íà ðàáîòó ñ ïðåäûäóùåé âåðñèåé ñåðâèñîâ àíàëèòèêè, ÷òî ïîçâîëÿåò íå âûïîëíÿòü îáíîâëåíèå íàèáîëåå êðèòè÷íûõ ñåðâåðîâ äëÿ êîìïàíèè.
5.1.4. Òðèããåðû Åùå îäíèì çíà÷èòåëüíûì óëó÷øåíèåì ñåðâèñîâ àíàëèòèêè â SQL Server 2005 ÿâëÿåòñÿ ïîääåðæêà òðèããåðîâ. Òàê æå êàê â ðåëÿöèîííîé áàçå äàííûõ, òðèããåðû ñåðâèñîâ àíàëèòèêè ìîãóò èñïîëüçîâàòüñÿ äëÿ çàïóñêà õðàíèìûõ ïðîöåäóð ïîñëå ãåíåðàöèè ñèñòåìíîãî ñîáûòèÿ. Ïðè ýòîì çàïóñê òðèããåðîâ ìîæåò âûïîëíÿòüñÿ ñèíõðîííî. Ýòî îçíà÷àåò, ÷òî âûïîëíåíèå ñîáûòèÿ, ïåðåêëþ÷àþùåãî òðèããåð, áóäåò ïðèîñòàíîâëåíî, ïîêà âûïîëíåíèå õðàíèìîé ïðîöåäóðû, çàïóùåííîé ñîáûòèåì îäíîâðåìåííî ñ ïåðåêëþ÷åíèåì òðèããåðà, íå áóäåò çàâåðøåíî.
5.1.5. Òðàññèðîâêà Â SQL Server ïîÿâèëîñü åùå îäíî óëó÷øåíèå, êîòîðîå êîñíóëîñü ìåõàíèçìîâ òðàññèðîâêè ñåðâèñîâ àíàëèòèêè. Òðàññèðîâêà èñïîëüçóåòñÿ äëÿ çàïèñè logôàéëîâ ñ äåòàëüíûì îïèñàíèåì ñîáûòèé, ïðîèñõîäÿùèõ â ñèñòåìå, è äåéñòâèé, âûïîëíÿåìûõ ñåðâåðîì, ñòîðîííèìè ñèñòåìàìè èëè ïîëüçîâàòåëÿìè. Òðàññèðîâêà
5.1. Îáçîð è ïðåèìóùåñòâà
115
âûïîëíÿåòñÿ îäíîâðåìåííî ñ ðàáîòîé ñåðâåðà (ñèíõðîííî) è ïîçâîëÿåò âûïîëíÿòü ìîíèòîðèíã ïðîèçâîäèòåëüíîñòè ñèñòåì, âûÿâëÿòü è ëîêàëèçèðîâàòü îøèáêè, êîòîðûå âîçíèêàþò ïðè ðàáîòå ñåðâèñîâ àíàëèòèêè SQL Server 2005.
5.1.6. Óíèôèöèðîâàííàÿ ìîäåëü èçìåðåíèé Îäíèì èç îñíîâíûõ óëó÷øåíèé, êîòîðûå êîñíóëèñü ñåðâèñîâ àíàëèòèêè â SQL Server 2005, ÿâëÿåòñÿ ñîçäàíèå íîâîé Óíèôèöèðîâàííîé ìîäåëè èçìåðåíèé (UDM — Unified Dimensional Model). UDM ÿâëÿåòñÿ ðåçóëüòàòîì ýâîëþöèîííîãî ðàçâèòèÿ òåõíîëîãèè OLAP â îòíîøåíèè ðàáîòû ñ ìíîãîìåðíûìè êóáàìè äàííûõ. Ñ åå ïîìîùüþ ðåàëèçóåòñÿ âîçìîæíîñòü ñîçäàíèÿ óíèôèöèðîâàííîé ìîäåëè äàííûõ çà ñ÷åò èñïîëüçîâàíèÿ òåõíîëîãèé OLAP è ðåëÿöèîííûõ áàç äàííûõ.  ïðåäûäóùèõ âåðñèÿõ SQL Server áûëî äîñòàòî÷íî ñëîæíî ðåàëèçîâàòü íåêîòîðûå âèäû îò÷åòîâ. Íàïðèìåð, îò÷åòû îá îáðàáîòêå ñ÷åòîâ èëè çàêàçîâ ñëîæíî ðåàëèçîâûâàëèñü íà îñíîâå òåõíîëîãèè OLAP. Äëÿ ñîçäàíèÿ îò÷åòîâ ïîäîáíîãî òèïà èñïîëüçîâàëèñü ðåëÿöèîííûå áàçû äàííûõ.  òî æå âðåìÿ ïðîèçâîäèòåëüíîñòü ñèñòåì àíàëèòèêè ñ èñïîëüçîâàíèåì OLAP-ñõåìû íà ïîðÿäîê âûøå ïî ñðàâíåíèþ ñî ñõåìîé ðåëÿöèîííîé áàçû äàííûõ. Ýòè àðãóìåíòû îáúÿñíÿþò íåîáõîäèìîñòü ñîçäàíèÿ ðåøåíèÿ, êîòîðîå áóäåò ó÷èòûâàòü ïðåèìóùåñòâà êàê ðåëÿöèîííîé ìîäåëè äàííûõ, òàê è OLAP. Îáùèé âèä ñèñòåìû ñ UDM ïîêàçàí íà ðèñ. 5.1.
Ðèñ. 5.1. Îáùèé âèä ñõåìû ñèñòåìû, èñïîëüçóþùåé UDM
 SQL Server 2005 êóá ÿâëÿåòñÿ õðàíèëèùåì äàííûõ. Íåñìîòðÿ íà òî ÷òî â îñíîâå UDM-ìîäåëè òàêæå ëåæèò êóá, ìåõàíèçì äîñòóïà ê íåìó è ñ÷èòûâàíèÿ äàííûõ îòëè÷àåòñÿ îò àíàëîãè÷íîãî â OLAP-ìîäåëè.  UDM ïðåäóñìîòðåí íàáîð ìåòàäàííûõ, êîòîðûé ïðåäîñòàâëÿåò âîçìîæíîñòè, íå ðåàëèçóåìûå ñ ïîìîùüþ òåõíîëîãèé MOLAP, ROLAP èëè HOLAP.  SQL Server 2005 ïðèëîæåíèÿ OLAP óñòàíàâëèâàþò ñîåäèíåíèå ñ ñåðâèñîì àíàëèòèêè ñ ïîìîùüþ XMLA- è UDM-çàïðîñîâ, êîòîðûå ìîãóò áûòü ñîçäàíû äëÿ ñîåäèíåíèÿ êàê ñ àíàëèòè÷åñêèìè, òàê è ñ ðåëÿöèîííûìè áàçàìè äàííûõ.
5.1.7. Êýøèðîâàíèå Ñîãëàñíî òåõíîëîãèè UDM, ñåðâåð ìîæåò â àâòîìàòè÷åñêîì ðåæèìå âûïîëíÿòü êýøèðîâàíèå äàííûõ. Ýòî ïîçâîëÿåò ðåàëèçîâàòü òàêîé æå áûñòðûé äîñòóï ê äàííûì, êàê ýòî âîçìîæíî ïðè èñïîëüçîâàíèè òåõíîëîãèè MOLAP. Èñïîëüçóÿ
116
Ãëàâà 5 • Ñåðâèñû àíàëèòèêè
íàáîð óòèëèò, âû ìîæåòå íàñòðîèòü ïðîïóñêíóþ ñïîñîáíîñòü äëÿ äàííûõ ïðè èñïîëüçîâàíèè êýøà, à òàêæå åãî îáúåì. Åñëè äëÿ ïðîïóñêíîé ñïîñîáíîñòè óñòàíîâëåíî íóëåâîå çíà÷åíèå, òî âñå äàííûå áóäóò êýøèðîâàòüñÿ â âèäå äàííûõ MOLAP. Ñ ïîìîùüþ íàñòðîéêè ïðîäîëæèòåëüíîñòè õðàíåíèÿ äàííûõ âû ìîæåòå îïðåäåëèòü, êàêîé ïðîìåæóòîê âðåìåíè äàííûå áóäóò õðàíèòüñÿ â êýøå. Èíòåðâàë õðàíåíèÿ äàííûõ â êýøå ìîæåò áûòü êàê äîñòàòî÷íî äëèííûé, òàê è êîðîòêèé (îò ìèíóò äî íåñêîëüêèõ äíåé èëè äàæå íåäåëü). Ïðè ýòîì äîñòàòî÷íî ÷àñòî èñïîëüçóåòñÿ óïðåæäàþùå êýøèðîâàíèå, ÷òî ïîçâîëÿåò ïîìåñòèòü äàííûå â êýø ïåðåä òåì, êàê â íèõ ïîÿâèòñÿ íåîáõîäèìîñòü. Òåõíîëîãèÿ óïðåæäàþùåãî êýøèðîâàíèÿ èñïîëüçîâàëàñü â ïðåäûäóùåé âåðñèè SQL Server.  SQL Server 2005 ïåðåä òåì, êàê èñïîëüçîâàòü êýøèðîâàíèå äàííûõ, íåîáõîäèìî ñîçäàòü êóáû è âíåñòè â íèõ ñîîòâåòñòâóþùèå äàííûå. Äëÿ áîëüøèõ îáúåìîâ äàííûõ ýòî ìîæåò çàíÿòü îãðîìíûé ïðîìåæóòîê âðåìåíè.  ýòîì ñëó÷àå èñïîëüçóåòñÿ ïðåäâàðèòåëüíîå êýøèðîâàíèå, óñêîðÿþùåå ïðîöåññ âíåñåíèÿ èëè ÷òåíèÿ äàííûõ íà äàííîì ýòàïå ðàáîòû ñ êóáàìè äàííûõ.
5.1.8. Óïðàâëåíèå çàâèñøèìè ñòðîêàìè  ñåðâèñàõ àíàëèòèêè SQL Server 2005 ïîÿâèëèñü íîâûå ìåòîäû äëÿ ðàáîòû ñ çàâèñøèìè ñòðîêàìè.  ïðåäûäóùåé âåðñèè SQL Server àäìèíèñòðàòîðû íå ìîãëè ðåøàòü äàííûå ïðîáëåìû ñ ïîìîùüþ ñòàíäàðòíûõ ñðåäñòâ. Ýòî ïðèâîäèëî ê ñáîÿì â ðàáîòå ñåðâèñîâ è òðåáîâàëî ïîñòîÿííîãî óñòðàíåíèÿ íåïîëàäîê ïîäîáíîãî êëàññà â áàçàõ äàííûõ.  ñåðâèñàõ àíàëèòèêè SQL Server 2000 ïðè ïðîõîäå òàáëèö èãíîðèðîâàëèñü òå ñòðîêè, êîòîðûå èìåëè íåïðàâèëüíîå çíà÷åíèå èäåíòèôèêàòîðà èçìåðåíèÿ. Ýòî ïðèâîäèëî ê ïîÿâëåíèþ ïîãðåøíîñòè ïðè àíàëèçå äàííûõ â òîì ñëó÷àå, åñëè äàííûå ñðàâíèâàëèñü ñ äðóãèì èñòî÷íèêîì äàííûõ.  íîâîé âåðñèè SQL Server ïîçâîëÿåò îáðàáàòûâàòü îøèáêè, âîçíèêàþùèå ïðè îáðàáîòêå ïîäîáíûõ ñòðîê. Àäìèíèñòðàòîð ìîæåò âûáðàòü îäèí èç äâóõ ñïîñîáîâ îáðàáîòêè çàâèñøèõ ñòðîê: · èãíîðèðîâàòü ïîÿâëåíèå ïîäîáíûõ îøèáîê — àíàëîã ìåõàíèçìà, èñïîëüçóåìîãî â ñåðâèñàõ àíàëèòèêè SQL Server 2000; · ñîçäàòü íàáîð ýëåìåíòîâ ñ íåîïðåäåëåííûì èäåíòèôèêàòîðîì èçìåðåíèÿ — â ýòó òàáëèöó áóäóò çàíîñèòüñÿ ñòðîêè ñ íåîïðåäåëåííûìè èäåíòèôèêàòîðàìè èçìåðåíèé, ÷òî ïîçâîëèò îáðàáîòàòü èõ îòäåëüíî îò äðóãèõ.
5.1.9. Ïîääåðæêà êëàñòåðèçàöèè Êàê îïèñûâàëîñü â ïðåäûäóùèõ ðàçäåëàõ, SQL Server 2005 èìååò ðàñøèðåííóþ ïîääåðæêó ñõåìû êëàñòåðèçàöèè, ÷òî ïîçâîëÿåò îáåñïå÷èòü áåçîïàñíîñòü õðàíåíèÿ äàííûõ è ïðàêòè÷åñêè ñòîïðîöåíòíóþ îòêàçîóñòîé÷èâîñòü ñèñòåì õðàíåíèÿ äàííûõ.  ïðåäûäóùåé âåðñèè ñåðâèñîâ àíàëèòèêè íå ïîääåðæèâàëàñü ñõåìà êëàñòåðèçàöèè, ÷òî â íåêîòîðûõ ñëó÷àÿõ äëÿ êîìïàíèé ïðåâðàùàëîñü â ïîòåðè äàííûõ è ñáîè â ðàáîòå àíàëèòè÷åñêèõ ñèñòåì.  íîâóþ âåðñèþ ñåðâèñîâ àíàëèòèêè âñòðîåíà ïîääåðæêà ñõåìû êëàñòåðèçàöèè. Ïðè ýòîì âû ìîæåòå áåç äîïîëíèòåëüíîé ñëîæíîé íàñòðîéêè áûñòðî óñòàíîâèòü ñåðâèñû àíàëèòèêè â êëàñòåðå. Äëÿ ðàçâåðòûâàíèÿ ñåðâèñîâ àíàëèòèêè íåîáõîäèìî óñòàíîâèòü èõ â êàæäîì
5.1. Îáçîð è ïðåèìóùåñòâà
117
óçëå. Â ïîìîùü àäìèíèñòðàòîðó èìååòñÿ óòèëèòà óñòàíîâêè ñåðâèñà àíàëèòèêè, êîòîðàÿ ïîçâîëÿåò óñòàíîâèòü ñåðâèñ íà îòäåëüíûå óçëû êëàñòåðà.
5.1.10. Ñîçäàíèå îáúåêòîâ ñ ïîìîùüþ ñöåíàðèåâ  íîâîé âåðñèè ñåðâèñîâ àíàëèòèêè SQL Server ïîääåðæèâàåòñÿ ñîçäàíèå íîâûõ áàç äàííûõ è îáúåêòîâ ñ ïîìîùüþ ñöåíàðèåâ. Çà ñ÷åò ýòîãî óñêîðÿåòñÿ ïðîöåññ ñîçäàíèÿ è ðåôàêòîðèíãà êîäà, ÷òî ñêàçûâàåòñÿ íà ïðîèçâîäèòåëüíîñòè ðàáîòû ðàçðàáîò÷èêîâ. Äëÿ ñîçäàíèÿ îáúåêòîâ ñåðâèñîâ àíàëèòèêè èñïîëüçóåòñÿ íîâûé ÿçûê ODL (Object Definition Language), êîòîðûé ñîçäàí íà îñíîâå XML. Ñ åãî ïîìîùüþ ìîæíî ñîçäàâàòü, èçìåíÿòü, ðåäàêòèðîâàòü ñâîéñòâà è óäàëÿòü îáúåêòû. Ïîìèìî ýòîãî ñ ïîìîùüþ ODL ìîæíî âûïîëíÿòü îáðàáîòêó êóáîâ è ñðàâíåíèå âåðñèé áàç äàííûõ. Áîëåå äåòàëüíî ìû ðàññìîòðèì ODL äàëåå â äàííîé ãëàâå.
5.1.11. Èíôîðìàöèîííàÿ ïðîõîäêà Èíôîðìàöèîííàÿ ïðîõîäêà (Data Mining) ïîçâîëÿåò âûÿâëÿòü ñêðûòûå çàâèñèìîñòè â íàáîðàõ äàííûõ. Íà îñíîâå èíôîðìàöèè î çàâèñèìîñòÿõ, âëèÿþùèõ íà õîä ïðîöåññîâ, ìîæíî ïûòàòüñÿ ïðåäñêàçàòü, êàê ñîáûòèÿ áóäóò ðàçâèâàòüñÿ â áóäóùåì, åñëè äàííûå çàâèñèìîñòè ñîõðàíÿòñÿ.  SQL Server 2000 áûëè ðåàëèçîâàíû äâà íîâûõ àëãîðèòìà äëÿ âûÿâëåíèÿ ñêðûòûõ çàâèñèìîñòåé: · äåðåâüÿ ðåøåíèé (Decision Trees); · êëàñòåðèçàöèÿ (Clustering).  íîâîé âåðñèè SQL Server äàííûå àëãîðèòìû áûëè äîïîëíåíû íîâûìè.  SQL Server 2005 èñïîëüçóþòñÿ ñëåäóþùèå àëãîðèòìû äëÿ âûÿâëåíèÿ ñêðûòûõ çàâèñèìîñòåé â íàáîðàõ äàííûõ: · Decision Trees — äàííûé àëãîðèòì èñïîëüçóåòñÿ äëÿ ïðåäâàðèòåëüíîãî ïðåäñêàçàíèÿ õîäà ðàçâèòèÿ ñîáûòèé. Îí ìîæåò èñïîëüçîâàòüñÿ äëÿ ïðåäñêàçàíèÿ íåïðåðûâíûõ è äèñêðåòíûõ ïåðåìåííûõ; · Sequence Clustering — äàííûé àëãîðèòì èñïîëüçóåòñÿ äëÿ âûáîðà íàèëó÷øåé ìîäåëè, êîòîðàÿ áóäåò îïèñûâàòü íàáîð äàííûõ; · Native Bayes — àëãîðèòì äëÿ ïðåäñêàçàíèÿ ðàçâèòèÿ ìîäåëè. Èìååò äîñòàòî÷íî âûñîêóþ ïðîèçâîäèòåëüíîñòü ïðè ïðåäñêàçàíèè ðàçâèòèÿ ìîäåëè äàííûõ; · Time Series — ïîçâîëÿåò âíåñòè êîíöåïöèþ ïðîøëîãî, íàñòîÿùåãî è áóäóùåãî â ïîíÿòèå ïðåäñêàçàíèÿ õîäà ñîáûòèé. Èñïîëüçóÿ äàííûé àëãîðèòì, ìîæíî ïðåäñêàçûâàòü õîä ïîñëåäîâàòåëüíîñòè ÷èñåë è íà îñíîâå ýòîãî ñîçäàâàòü âðåìåííûå ñðåçû äëÿ ñîáûòèé â ïðîøëîì, íàñòîÿùåì è áóäóùåì äëÿ âûáðàííîé ìîäåëè äàííûõ. Ýòîò àëãîðèòì ìîæåò èñïîëüçîâàòüñÿ íå òîëüêî äëÿ âûáîðà íàèëó÷øåãî ïîñëåäîâàòåëüíîãî ÷èñëà â ñåðèè, íî è äëÿ îïðåäåëåíèÿ âðåìåííîãî ïðîìåæóòêà, â êîòîðûé ñòîèò îæèäàòü íàèáîëåå áëèçêîå çíà÷åíèå ê âûáðàííîìó ÷èñëó èëè êîãäà âëèÿíèå îïðåäåëåííîãî ôàêòîðà íà ðàçâèòèå ñîáûòèé áóäåò ìàêñèìàëüíûì; · Association Rules — èñïîëüçóåòñÿ äëÿ àíàëèçà òðàíçàêöèîííûõ äàííûõ. Ïîçâîëÿåò îòûñêèâàòü ãðóïïû ýëåìåíòîâ, êîòîðûå ïåðåäàþòñÿ âî âðåìÿ òðàíçàêöèè.
118
Ãëàâà 5 • Ñåðâèñû àíàëèòèêè
5.1.12. Ëîêàëèçàöèÿ Óëó÷øåíèÿ â íîâîé âåðñèè ñåðâèñîâ àíàëèòèêè SQL Server êîñíóëèñü òàêæå âîïðîñîâ ëîêàëèçàöèè. Íîâîå ÿäðî ñåðâèñîâ àíàëèòèêè èìååò ñðåäñòâà äëÿ õðàíåíèÿ èíôîðìàöèè íà ðàçíûõ ÿçûêàõ. Ìóëüòèÿçû÷íîñòü ñåðâèñîâ àíàëèòèêè ïîçâîëÿåò ïðèëîæåíèÿì îòîáðàæàòü ìåòàäàííûå êóáîâ è äàííûå, ñ÷èòàííûå èç áàçû äàííûõ, íà òîì ÿçûêå, êîòîðûé áîëüøå âñåãî ïîäõîäèò äëÿ äàííîãî ïîëüçîâàòåëÿ. Ïîìèìî ýòîãî ñåðâèñû àíàëèòèêè ïîääåðæèâàþò íàñòðîéêó èñïîëüçóåìîãî ïî óìîë÷àíèþ ÿçûêà äëÿ êëèåíòñêîãî ïðèëîæåíèÿ. Ýòî ïîçâîëÿåò àâòîìàòè÷åñêè âûáèðàòü ÿçûê ïðåäñòàâëåíèÿ äàííûõ äëÿ ìóëüòèÿçû÷íîãî ïðèëîæåíèÿ. Ïðè ýòîì ïîëüçîâàòåëü â äàëüíåéøåì ñìîæåò âûáðàòü îäèí èç ïðåäëîæåííûõ ÿçûêîâ äëÿ îòîáðàæåíèÿ äàííûõ.
5.1.13. Èíòåãðàöèÿ ñî ñðåäñòâàìè ðàçðàáîòêè .NET Framework ßäðî SQL Server 2005 èíòåãðèðîâàíî ñî ñðåäîé ðàçðàáîòêè .NET Framework. Ýòî ïîçâîëÿåò áûñòðî ðàçðàáàòûâàòü è âíåäðÿòü ïðîãðàììíûå ïðîäóêòû ñ èñïîëüçîâàíèåì ôóíêöèîíàëüíîñòè SQL Server, à òàêæå èñïîëüçîâàòü êëàññû îáúåêòîâ, êîòîðûå ñîçäàâàëèñü ðàçðàáîò÷èêàìè Microsoft. Ñåðâèñû àíàëèòèêè òàêæå èíòåãðèðîâàíû ñî ñðåäîé .NET Framework. Áëàãîäàðÿ ýòîé èíòåãðàöèè ñòàíîâèòñÿ âîçìîæíûì èñïîëüçîâàòü XML è SOAP (Simple Object Access Protocol) â ïðîãðàììíûõ ðåøåíèÿõ. Ïîìèìî ýòîãî ñòàíîâèòñÿ âîçìîæíûì èñïîëüçîâàíèå òðèããåðîâ â ïðèëîæåíèÿõ .NET, ÷òî óïðîùàåò ïðîöåññ ðàçðàáîòêè êëèåíò-ñåðâåðíûõ ïðèëîæåíèé.
5.2. Óïðàâëåíèå ñåðâèñàìè àíàëèòèêè  SQL Server 2005 áûë çíà÷èòåëüíî ïåðåñìîòðåí è ðàñøèðåí íàáîð èíñòðóìåíòîâ äëÿ ðàáîòû ñ ñåðâèñàìè àíàëèòèêè. Ýòî âûçâàíî â îñíîâíîì òåì, ÷òî â íîâîé âåðñèè ñåðâèñîâ ïîÿâèëèñü äîïîëíèòåëüíûå ôóíêöèè, êîòîðûå òàêæå íåîáõîäèìî íàñòðàèâàòü. Äëÿ óïðàâëåíèÿ ñåðâèñàìè àíàëèòèêè SQL Server 2000 èñïîëüçîâàëñÿ êîìïîíåíò Analysis Manager.  íîâîé âåðñèè ñåðâèñîâ âû íå íàéäåòå ýòîãî ïðîãðàììíîãî ïðîäóêòà. Òåïåðü åãî çàìåíèëè äâà èíñòðóìåíòà — SQL Server Management Studio è SQL Server Configuration Manager, î êîòîðûõ ïîéäåò ðàçãîâîð â äàííîì ðàçäåëå.
5.2.1. SQL Server Management Studio Óòèëèòà SQL Server Management Studio — ýòî îäèí èç îñíîâíûõ èíñòðóìåíòîâ, êîòîðûé èñïîëüçóåòñÿ äëÿ óïðàâëåíèÿ SQL Server è ñåðâèñàìè àíàëèòèêè. Ñ åå ïîìîùüþ àäìèíèñòðàòîðû ìîãóò ðåøàòü ðàçëè÷íûå àäìèíèñòðàòèâíûå çàäà÷è, òàêèå êàê ñîçäàíèå áàç äàííûõ ñåðâèñîâ àíàëèòèêè, ñîçäàíèå ñöåíàðèåâ äëÿ âûïîëíåíèÿ ðàçëè÷íûõ çàäà÷, èõ íàñòðîéêà è ðåäàêòèðîâàíèå. Ñ ïîìîùüþ SQL Server Management Studio ìîæíî íàñòðîèòü óðîâíè äîñòóïà ê òåì èëè èíûì îáúåêòàì áàçû äàííûõ, íàñòðîèòü òðàññèðîâêó äîñòóïà ïîëüçîâàòåëåé â áàçû äàííûõ ñåðâèñîâ àíàëèòèêè, à òàêæå âûïîëíÿòü äðóãèå äåéñòâèÿ ïî àäìèíèñòðèðîâàíèþ ñåðâèñîâ àíàëèòèêè.
5.2. Óïðàâëåíèå ñåðâèñàìè àíàëèòèêè
119
 SQL Server Management Studio âñòðîåíà ïîääåðæêà ðåäàêòîðà Multidimensional Expression (MDX) Editor, êîòîðûé ïîçâîëÿåò ñîçäàâàòü, îòëàæèâàòü è âûïîëíÿòü çàïðîñû ê ìíîãîìåðíûì áàçàì äàííûõ, à òàêæå ñîçäàâàòü îáúåêòû ñåðâèñîâ àíàëèòèêè ñ ïîìîùüþ ñöåíàðèåâ. Îáùèé âèä ðåäàêòîðà MDX ïîêàçàí íà ðèñ. 5.2. Ðåäàêòîð MDX ïîçâîëÿåò âûïîëíÿòü âûäåëåíèå öâåòîì îòäåëüíûõ âñòàâîê êîäà, ÷òî óïðîùàåò è óñêîðÿåò ïðîöåññ ðàçðàáîòêè çàïðîñîâ è ñöåíàðèåâ.
Ðèñ. 5.2. Multidimensional Expression (MDX) Editor
Òàêæå â ðåäàêòîðå MDX èìååòñÿ èíòåãðèðîâàííûé áðàóçåð ìåòàäàííûõ, êîòîðûé ïîêàçàí â ëåâîé ÷àñòè ðèñ. 5.2. Áîëåå äåòàëüíî ôóíêöèè SQL Server Management Studio îáñóæäàëèñü â ðàçäåëå 3.1.2 «SQL Server Management Studio (SQL SMS)».
5.2.2. SQL Server Configuration Manager Óòèëèòà SQL Server Configuration Manager èñïîëüçóåòñÿ äëÿ çàïóñêà è îñòàíîâêè ñåðâèñîâ àíàëèòèêè. Äëÿ çàïóñêà ýòîé óòèëèòû ùåëêíèòå ïðàâîé êíîïêîé ìûøè íà çíà÷êå My Computer è âûáåðèòå â êîíòåêñòíîì ìåíþ êîìàíäó Manage. Äëÿ çàïóñêà èëè îñòàíîâêè óñòàíîâëåííîãî ñåðâèñà àíàëèòèêè âûïîëíèòå ñëåäóþùèå äåéñòâèÿ: 1. Ùåëêíèòå íàïðîòèâ êðåñòèêà ñ íàäïèñüþ Services, çàòåì íàïðîòèâ Applications è, íàêîíåö, SQL Server Configuration Manager. Îáùèé âèä êîíñîëè àäìèíèñòðèðîâàíèÿ ïîñëå âûïîëíåííûõ äåéñòâèé ïîêàçàí íà ðèñ. 5.3. 2. Ùåëêíèòå ïðàâîé êíîïêîé íà íàäïèñè Analysis Server (MSSQLSERVER), ðàñïîëîæåííîé â ïðàâîé ÷àñòè ýêðàíà, è âûáåðèòå â êîíòåêñòíîì ìåíþ îäíî èç çíà÷åíèé: start, stop, pause.
120
Ãëàâà 5 • Ñåðâèñû àíàëèòèêè
Áîëåå äåòàëüíîå îïèñàíèå SQL Server Configuration Manager ïðèâîäèòñÿ â ðàçäåëå 3.1.1 «Óòèëèòà SQL Server Configuration Manager».
Ðèñ. 5.3. Êîíñîëü àäìèíèñòðèðîâàíèÿ
5.2.3. Ïðèâèëåãèè  íîâîé âåðñèè SQL Server ïîÿâèëàñü âîçìîæíîñòü áîëåå òîíêî íàñòðàèâàòü ïàðàìåòðû äîñòóïà äëÿ àäìèíèñòðàòèâíûõ ó÷åòíûõ çàïèñåé. Äëÿ âûïîëíåíèÿ çàäà÷ àäìèíèñòðèðîâàíèÿ â SQL Server 2000 íåîáõîäèìî áûëî âõîäèòü â ñîñòàâ ãðóïïû OLAP Administrators. Ýòî ïîçâîëÿëî âûïîëíÿòü íàñòðîéêó è âíåñåíèå èçìåíåíèé â áàçû äàííûõ ñåðâèñîâ àíàëèòèêè. Èñïîëüçóÿ íîâûé íàáîð ñèñòåìíûõ ïðèâèëåãèé SQL Server 2005, ìîæíî ñîçäàâàòü íåñêîëüêî òèïîâ àäìèíèñòðàòîðîâ äëÿ ðàçëè÷íûõ áàç äàííûõ. Ýòî ïîçâîëèò áîëåå òîíêî ðàçãðàíè÷èâàòü óðîâåíü äîñòóïà îòäåëüíûõ àäìèíèñòðàòîðîâ ê òîé èëè èíîé ôóíêöèîíàëüíîñòè áàç äàííûõ ñåðâèñîâ àíàëèòèêè.  ñèñòåìå áåçîïàñíîñòè ñåðâèñîâ àíàëèòèêè SQL Server 2005 ïîÿâèëèñü ñëåäóþùèå óðîâíè äîñòóïà: · ðàáîòà ñ êóáàìè; · ïîäêëþ÷åíèå ó÷åòíûõ çàïèñåé; · ÷òåíèå ìåòàäàííûõ.
5.2.4. Ðåçåðâèðîâàíèå è âîññòàíîâëåíèå äàííûõ  ñåðâèñàõ àíàëèòèêè SQL Server 2005 ïåðåñìîòðåíû è óëó÷øåíû ïàðàìåòðû ðåçåðâíîãî êîïèðîâàíèÿ è âîññòàíîâëåíèÿ äàííûõ. Âî-ïåðâûõ, ýòî îòíîñèòñÿ ê ñíÿòèþ íåêîòîðûõ îãðàíè÷åíèé, êîòîðûå ñóùåñòâîâàëè â SQL Server 2000
5.2. Óïðàâëåíèå ñåðâèñàìè àíàëèòèêè
121
(ýòî îòíîñèòñÿ ê ñíÿòèþ îãðàíè÷åíèÿ íà ðàçìåð ôàéëà ðåçåðâíîé êîïèè â 2 Ãáàéò). Âî-âòîðûõ, òåïåðü ìîæíî áûñòðåå, íå îñòàíàâëèâàÿ SQL Server, âûïîëíÿòü âîññòàíîâëåíèå äàííûõ.  SQL Server 2000 ðàçìåð ôàéëà ðåçåðâíîé êîïèè áûë îãðàíè÷åí çíà÷åíèåì 2 Ãáàéò. Ýòî îãðàíè÷åíèå îòíîñèëîñü ê ñæàòîìó çàøèôðîâàííîìó ôàéëó.  íîâîé âåðñèè SQL Server äîïóñòèìûé ðàçìåð ôàéëà ðåçåðâíîé êîïèè çíà÷èòåëüíî óâåëè÷åí è èìååò çíà÷åíèå 16 Òáàéò. Ýòî òðåáîâàíèå çàäàåòñÿ ñêîðåå îãðàíè÷åíèåì, íàêëàäûâàåìûì íà ðàçìåð ôàéëà ñàìîé ôàéëîâîé ñèñòåìîé NTFS, ÷åì îãðàíè÷åíèÿìè SQL Server. Ôàéëû ðåçåðâíûõ êîïèé ñåðâèñîâ àíàëèòèêè ìîãóò áûòü îäíîâðåìåííî ñæàòû è çàøèôðîâàíû. Ýòà âîçìîæíîñòü óäëèíÿåò ïðîöåññ ñîçäàíèÿ ðåçåðâíîé êîïèè, ïîñêîëüêó ñåðâåðó íåîáõîäèìî íå òîëüêî ñæàòü ôàéë, íî è âûïîëíèòü åãî øèôðîâàíèå. Îäíàêî ýòè íåäîñòàòêè ñ ëèõâîé ïåðåêðûâàþòñÿ ïðåèìóùåñòâàìè, êîòîðûå ðåàëèçóþòñÿ ñ ïîìîùüþ îäíîâðåìåííîãî èñïîëüçîâàíèÿ äàííûõ ôóíêöèé: ôàéëû ðåçåðâíûõ êîïèé áóäóò ìåíüøåãî ðàçìåðà è äîñòóï ê äàííûì âíóòðè íèõ áóäåò îãðàíè÷åí â ðåçóëüòàòå èõ øèôðîâàíèÿ.  íîâîé âåðñèè SQL Server ïîääåðæèâàåòñÿ âîçìîæíîñòü áûñòðîãî âîññòàíîâëåíèÿ ðåçåðâíîé êîïèè íà ëþáîé ýêçåìïëÿð SQL Server. Ýòî îçíà÷àåò, ÷òî äàííûå ìîæíî äîñòàòî÷íî áûñòðî ñ ïîìîùüþ ñîçäàíèÿ ðåçåðâíîé êîïèè ïåðåíîñèòü íà äðóãèå ýêçåìïëÿðû SQL Server.
5.2.5. Øèôðîâàíèå Øèôðîâàíèå — ýòî åùå îäíî äîñòàòî÷íî âàæíîå óëó÷øåíèå, êîòîðîå êîñíóëîñü ñèñòåìû áåçîïàñíîñòè ñåðâèñîâ àíàëèòèêè SQL Server. Òåïåðü øèôðîâàíèå ìîæåò èñïîëüçîâàòüñÿ â íåñêîëüêèõ ïîòåíöèàëüíî óÿçâèìûõ ìåñòàõ ñèñòåìû: · êàíàë îáìåíà èíôîðìàöèåé ìåæäó êëèåíòñêèì ïðèëîæåíèåì è ñåðâåðîì ìîæåò èñïîëüçîâàòü ìåõàíèçì øèôðîâàíèÿ äëÿ îáåñïå÷åíèÿ áåçîïàñíîé ïåðåäà÷è äàííûõ; · êóáû íà ëîêàëüíûõ êîìïüþòåðàõ òàêæå ìîãóò áûòü çàøèôðîâàíû äëÿ îáåñïå÷åíèÿ íåîáõîäèìîãî óðîâíÿ áåçîïàñíîñòè; · äëÿ ôàéëîâ ðåçåðâíûõ êîïèé ñåðâèñîâ àíàëèòèêè òàêæå ìîãóò áûòü âûïîëíåíû ôóíêöèè øèôðîâàíèÿ, ÷òîáû îãðàíè÷èòü äîñòóï ê íèì ñî ñòîðîíû íåæåëàòåëüíûõ ïîëüçîâàòåëåé.
5.2.6. Áåçîïàñíîñòü Èçìåíåíèÿ â ñèñòåìå áåçîïàñíîñòè SQL Server òàêæå êîñíóëèñü ñåðâèñîâ àíàëèòèêè.  íîâîé âåðñèè èçìåíåíèþ ïîäâåðãëèñü áîëåå 100 ðàçëè÷íûõ ïàðàìåòðîâ è ìåõàíèçìîâ, êîòîðûå â ïðåäûäóùèõ âåðñèÿõ áûëè óÿçâèìûìè èëè ìîãëè ñòàòü óÿçâèìûìè ïðè îïðåäåëåííûõ äåéñòâèÿõ âçëîìùèêîâ. Áîëåå äåòàëüíî íåêîòîðûå èç ïîêàçàòåëåé, êîòîðûå ïîäâåðãëèñü óëó÷øåíèþ â îòíîøåíèè áåçîïàñíîñòè, ìû ðàññìîòðèì â ãëàâå 12 «Áåçîïàñíîñòü».
122
Ãëàâà 5 • Ñåðâèñû àíàëèòèêè
5.2.7. Áåçîïàñíîñòü ïî óìîë÷àíèþ Ñåðâèñû àíàëèòèêè ñîçäàâàëèñü òàêèì îáðàçîì, ÷òîáû îáåñïå÷èâàòü ìàêñèìàëüíûé óðîâåíü áåçîïàñíîñòè ñðàçó ïî çàâåðøåíèè èõ óñòàíîâêè è ðàçâåðòûâàíèÿ. Âî-ïåðâûõ, ïîñëå óñòàíîâêè ñåðâèñû àíàëèòèêè èìåþò ïî óìîë÷àíèþ íàèìåíüøèå ïðèâèëåãèè, ÷òî óìåíüøàåò âîçìîæíûå ïîòåðè äàííûõ ïðè íåïðàâèëüíîé ðàáîòå ñåðâèñîâ èëè îøèáêàõ â èõ íàñòðîéêå. Âî-âòîðûõ, ïîñëå óñòàíîâêè ïðîãðàììíîãî ïðîäóêòà âñå ïàðàìåòðû áåçîïàñíîñòè ïî óìîë÷àíèþ âêëþ÷åíû. Ýòî îçíà÷àåò, ÷òî óðîâåíü áåçîïàñíîñòè òîëüêî ÷òî óñòàíîâëåííîé ñèñòåìû ìàêñèìàëåí. Â-òðåòüèõ, âñå ïðîãðàììíûå ïðåèìóùåñòâà, êîòîðûå ìîãóò íåãàòèâíî ñêàçàòüñÿ íà îáùåé áåçîïàñíîñòè ñèñòåìû, îòêëþ÷åíû ïî óìîë÷àíèþ. Ýòî ïîäðàçóìåâàåò îòêëþ÷åíèå ñëåäóþùèõ ïàðàìåòðîâ: · àíîíèìíûé äîñòóï; · HTTP-äîñòóï; · çàïðîñû òèïà Openrowset; · õðàíèìûå ïðîöåäóðû. Ïî óìîë÷àíèþ ïåðå÷èñëåííûå ôóíêöèè îòêëþ÷åíû. Åñëè íåîáõîäèìî çàäåéñòâîâàòü îäíó èëè íåñêîëüêî ôóíêöèé, îòêëþ÷åííûõ ïî óìîë÷àíèþ (â ïåðâóþ î÷åðåäü ýòî ìîæåò îòíîñèòüñÿ ê õðàíèìûì ïðîöåäóðàì SQL Server), òî îíè äîëæíû áûòü âêëþ÷åíû àäìèíèñòðàòîðîì.
5.3. Ñðåäñòâà ðàçðàáîòêè Â íîâîé âåðñèè ñåðâèñîâ àíàëèòèêè ïðîèçîøëè êàðäèíàëüíûå èçìåíåíèÿ. Óòèëèòà Business Intelligence Development Studio çàìåíèëà îñíîâíîé èíñòðóìåíò äëÿ ñîçäàíèÿ è íàñòðîéêè ñåðâèñîâ àíàëèòèêè Analysis Manager. Ïîìèìî ýòîãî äîñòóï ê ñåðâèñàì àíàëèòèêè îñóùåñòâëÿåòñÿ ñ èñïîëüçîâàíèåì íîâîãî ïðîòîêîëà XML for Analysis (XMLA). Äëÿ ñåðâèñîâ àíàëèòèêè ïîÿâèëèñü äâå àáñîëþòíî íîâûå ñðåäû ðàçðàáîòêè: · Analysis Management Objects (AMO) — äëÿ óïðàâëåíèÿ ñåðâèñàìè àíàëèòèêè; · ADO MD.NET — äëÿ ñîçäàíèÿ ïðèëîæåíèé. Îáå ñðåäû ðàçðàáîòêè ñåðâèñîâ àíàëèòèêè èíòåãðèðîâàíû ñî ñðåäîé .NET Framework, ÷òî ïîçâîëÿåò óíèôèöèðîâàòü è óñêîðèòü ïðîöåññ ðàçðàáîòêè ïðèëîæåíèé íà îñíîâå ñåðâèñîâ àíàëèòèêè.
5.3.1. BI Development Studio Business Intelligence Development Studio — ýòî îäèí èç îñíîâíûõ èíñòðóìåíòîâ äëÿ ðàçðàáîòêè è íàñòðîéêè ïðèëîæåíèé ñåðâèñîâ àíàëèòèêè. BI Development Studio â îòëè÷èå îò SQL Server Management Studio èñïîëüçóåòñÿ äëÿ ñîçäàíèÿ ïðèëîæåíèé ñåðâèñîâ àíàëèòèêè. Ïðè ýòîì SQL Server Management Studio èñïîëüçóåòñÿ äëÿ óïðàâëåíèÿ áàçàìè äàííûõ è îáúåêòàìè ñåðâèñîâ àíàëèòèêè.
5.3. Ñðåäñòâà ðàçðàáîòêè
123
Îáå óòèëèòû äëÿ ðàáîòû ñ ñåðâèñàìè àíàëèòèêè ïîñòðîåíû íà îñíîâå ñðåäû ðàçðàáîòêè Visual Studio. Ýòî íå òðåáóåò äîïîëíèòåëüíûõ çàòðàò íà îáó÷åíèå ðàçðàáîò÷èêîâ è àäìèíèñòðàòîðîâ. Áîëåå äåòàëüíîå îïèñàíèå Business Intelligence Development Studio áûëî ïðèâåäåíî â ðàçäåëå 3.1.7 «Óòèëèòà Business Intelligence Development Studio (BIDS)».
5.3.2. Îíëàéíîâûé è îôëàéíîâûé ðåæèìû  ïðåäûäóùåé âåðñèè ñåðâèñîâ àíàëèòèêè óòèëèòà Analysis Manager ìîãëà èñïîëüçîâàòüñÿ òîëüêî â ïîäêëþ÷åííîì ñîñòîÿíèè. Ýòî îçíà÷àåò, ÷òî äëÿ ðàçðàáîòêè è íàñòðîéêè ïðèëîæåíèé ñåðâèñîâ àíàëèòèêè íåîáõîäèìî áûëî ñíà÷àëà óñòàíîâèòü ñâÿçü ñ áàçîé äàííûõ, à çàòåì ïðèñòóïàòü ê ñîçäàíèþ ïðèëîæåíèÿ. Íîâàÿ óòèëèòà Business Intelligence Development Studio ìîæåò èñïîëüçîâàòüñÿ êàê â îíëàéíîâîì, òàê è â îôëàéíîâîì ðåæèìàõ. Ýòî îçíà÷àåò, ÷òî äëÿ ñîçäàíèÿ ïðèëîæåíèé íåò íåîáõîäèìîñòè óñòàíàâëèâàòü ñîåäèíåíèÿ ñ ñåðâåðîì àíàëèòèêè.  áàçå äàííûõ ïðè èñïîëüçîâàíèè îôëàéíîâîãî ðåæèìà íå âûïîëíÿþòñÿ êàêèå-ëèáî èçìåíåíèÿ. Èõ ìîæíî âûïîëíèòü òîëüêî ïîñëå òîãî, êàê âû ðåøèòå óñòàíîâèòü ïðèëîæåíèå.  ðåçóëüòàòå óñòàíîâêè ïðèëîæåíèÿ Business Intelligence Development Studio ñîçäàåò è âûïîëíÿåò AMO-ñöåíàðèé äëÿ óñòàíîâêè äàííîãî ïðèëîæåíèÿ. Ìîæíî íàñòðîèòü òðàññèðîâêó âûïîëíåíèÿ äàííîãî ñöåíàðèÿ, ÷òî ïîçâîëèò âàì êîíòðîëèðîâàòü ïðîöåññ èíñòàëëÿöèè ïðèëîæåíèÿ. Äëÿ îòñëåæèâàíèÿ ïðîöåññà âûïîëíåíèÿ ñöåíàðèÿ òàêæå ìîæåò èñïîëüçîâàòüñÿ íèæíÿÿ ÷àñòü îêíà Business Intelligence Development Studio (ñì. ðèñ. 3.5).  îòëè÷èå îò îôëàéíîâîãî ðåæèìà â îíëàéíîâîì ñîçäàíèå è óñòàíîâêà ïðèëîæåíèÿ âûïîëíÿåòñÿ òàêèì æå îáðàçîì, êàê ýòî ïðîèñõîäèëî ñ ñåðâèñàìè àíàëèòèêè ñ èñïîëüçîâàíèåì Analysis Manager. Ïðè ýòîì èçìåíåíèÿ ïðèëîæåíèÿ ñðàçó ñîõðàíÿþòñÿ â áàçå äàííûõ. Äëÿ ïåðåêëþ÷åíèÿ ìåæäó îíëàéíîâûì è îôëàéíîâûì ðåæèìàìè âûáåðèòå â ìåíþ Business Intelligence Development Studio êîìàíäó File4Connect To Analysis Services Database.
5.3.3. Èñòî÷íèêè äàííûõ ïðåäñòàâëåíèÿ Îäíèì èç ïåðâûõ ýòàïîâ ñîçäàíèÿ ïðîåêòà ñåðâèñîâ àíàëèòèêè ÿâëÿåòñÿ âûáîð èñòî÷íèêà äàííûõ è ñîçäàíèå åãî ïðåäñòàâëåíèÿ. Òî÷íî òàê æå, êàê è â ðåëÿöèîííîé áàçå äàííûõ, â êà÷åñòâå èñòî÷íèêà äàííûõ ñåðâèñîâ àíàëèòèêè íåîáõîäèìî çàäàòü èìÿ ñåðâåðà, íà êîòîðîì ðàñïîëàãàþòñÿ äàííûå, à òàêæå ñõåìó, òàáëèöó è èíôîðìàöèþ äëÿ àóòåíòèôèêàöèè âî âðåìÿ äîñòóïà ê äàííûì. Äëÿ òîãî ÷òîáû îïðåäåëèòü ïàðàìåòðû èñòî÷íèêà äàííûõ ñåðâèñîâ àíàëèòèêè, âûïîëíèòå ñëåäóþùèå äåéñòâèÿ: 1. Ùåëêíèòå ïðàâîé êíîïêîé ìûøè íà ýëåìåíòå Data Source â îêíå Solution Explorer è âûáåðèòå â êîíòåêñòíîì ìåíþ êîìàíäó New Data Source. Ðåçóëüòàòîì ýòîãî áóäåò çàïóñê óòèëèòû Data Source Wizard, êîòîðàÿ ïîçâîëèò âàì íàñòðîèòü ïàðàìåòðû èñòî÷íèêà äàííûõ çà íåñêîëüêî ýòàïîâ.  êà÷åñòâå èñòî÷íèêà äàííûõ ìîãóò âûñòóïàòü áàçû äàííûõ SQL Server, DB2, Oracle è äð.
124
Ãëàâà 5 • Ñåðâèñû àíàëèòèêè
2. Ïîñëå ñîçäàíèÿ èñòî÷íèêà äàííûõ ñîçäàéòå åãî ïðåäñòàâëåíèå. Ýòî ïîçâîëèò îïðåäåëèòü ïàðàìåòðû òàáëèö èçìåðåíèé â òîì ñëó÷àå, åñëè íåîáõîäèìî ñîçäàòü êóá äëÿ õðàíåíèÿ äàííûõ. Äëÿ ýòîãî ùåëêíèòå ïðàâîé êíîïêîé ìûøè íà ýëåìåíòå Data Source View â îêíå Solution Explorer è âûáåðèòå â êîíòåêñòíîì ìåíþ êîìàíäó New Data Source View. Ðåçóëüòàòîì ýòîãî áóäåò çàïóñê óòèëèòû Data Source View Wizard, êîòîðàÿ ïîìîæåò ïîëüçîâàòåëþ âûïîëíèòü íàñòðîéêó ïàðàìåòðîâ ïðåäñòàâëåíèÿ èñòî÷íèêà äàííûõ, óñêîðèòü è óíèôèöèðîâàòü ïðîöåññ åãî ñîçäàíèÿ. 3. Íà ïåðâîì øàãå Data Source View Wizard âûáåðèòå ñîîòâåòñòâóþùèé èñòî÷íèê äàííûõ è íàæìèòå êíîïêó Next. 4. Íà âòîðîì øàãå Data Source View Wizard ñ ïîìîùüþ íàáîðà êíîïîê îïðåäåëèòå èçìåðåíèÿ êóáà (ðèñ. 5.4). Äàííîå îêíî ïîçâîëÿåò îïðåäåëèòü ñïèñîê áàç äàííûõ, òàáëèö è ïðåäñòàâëåíèé, êîòîðûå áóäóò îòîáðàæàòüñÿ â ïåðâóþ î÷åðåäü ïðè îáðàùåíèè ê âûáðàííîìó èñòî÷íèêó äàííûõ.
Ðèñ. 5.4. Íàñòðîéêà èçìåðåíèé êóáà èñòî÷íèêà äàííûõ
Ïîñëå çàâåðøåíèÿ ïðîöåññà ñîçäàíèÿ ïðåäñòàâëåíèÿ ñ ïîìîùüþ Data Source View Wizard âûïîëíèòñÿ àâòîìàòè÷åñêèé çàïóñê óòèëèòû Data Source View Designer (ðèñ. 5.5). Äàííàÿ óòèëèòà ïîçâîëÿåò ïðîñìîòðåòü ñâÿçè ìåæäó òàáëèöàìè è ïðåäñòàâëåíèÿìè. Ñ åå ïîìîùüþ âû ìîæåòå áîëåå òîíêî íàñòðîèòü ïàðàìåòðû ïðåäñòàâëåíèÿ, à òàêæå îïðåäåëèòü òå òàáëèöû è êîëîíêè, êîòîðûå âîéäóò â ñîñòàâ ïðåäñòàâëåíèÿ. Äëÿ íàñòðîéêè òàáëèö è êîëîíîê, êîòîðûå âîéäóò â ñîñòàâ
5.3. Ñðåäñòâà ðàçðàáîòêè
125
ïðåäñòàâëåíèÿ, èñïîëüçóåòñÿ íåñêîëüêî ìåòîäîâ. Íàïðèìåð, âû ìîæåòå èçìåíèòü è íàñòðîèòü ñâÿçè ìåæäó îòäåëüíûìè òàáëèöàìè, ñîçäàòü êîëîíêè ñ âû÷èñëÿåìûìè çíà÷åíèÿìè, âêëþ÷èòü â ñîñòàâ òàáëèöû íîâûå êîëîíêè è ïåðåèìåíîâàòü òàáëèöû. Äàííûå èçìåíåíèÿ áóäóò îòîáðàæàòüñÿ òîëüêî â ñîçäàííîì ïðåäñòàâëåíèè èñòî÷íèêà äàííûõ.
Ðèñ. 5.5. Data Source View Designer
5.3.4. Óòèëèòà Cube Wizard Äëÿ óïðîùåíèÿ ïðîöåññà ñîçäàíèÿ êóáîâ èñïîëüçóåòñÿ óòèëèòà Cube Wizard. Ïîñëå îïðåäåëåíèÿ èñòî÷íèêà äàííûõ è ñîçäàíèÿ åãî ïðåäñòàâëåíèÿ çàïóñòèòå óòèëèòó Cube Wizard. Äëÿ ýòîãî ùåëêíèòå ïðàâîé êíîïêîé ìûøè íà ýëåìåíòå Cube â îêíå Solution Explorer è âûáåðèòå â êîíòåêñòíîì ìåíþ êîìàíäó New Cube. Ïîñëå ýòîãî áóäåò âûïîëíåí çàïóñê óòèëèòû Cube Wizard (ðèñ. 5.6). Íîâàÿ âåðñèÿ óòèëèòû Cube Wizard èìååò íàìíîãî áîëüøå âîçìîæíîñòåé, ÷åì ïðåäûäóùàÿ. Cube Wizard â âåðñèè SQL Server 2005 ïîçâîëÿåò ñîçäàâàòü êóáû ñ èñïîëüçîâàíèåì âîñõîäÿùåé ïðîõîäêè, âûáèðàÿ ïðåäñòàâëåíèå èñòî÷íèêà äàííûõ, êîòîðûé áûë ñîçäàí ðàíåå. Òàêæå ñîçäàíèå êóáîâ âîçìîæíî ñ èñïîëüçîâàíèåì íèñõîäÿùåé ïðîõîäêè, äëÿ ÷åãî îáû÷íî îïðåäåëÿþòñÿ ïàðàìåòðû êóáà è ìåòàäàííûå.  ñëó÷àå èñïîëüçîâàíèÿ ïåðâîãî ñöåíàðèÿ ñîçäàíèÿ êóáà ìîæåò áûòü çàäåéñòâîâàíà íîâàÿ òåõíîëîãèÿ IntelliCube, êîòîðàÿ âûïîëíèò àíàëèç òàáëèö è â àâòîìàòè÷åñêîì ðåæèìå îïðåäåëèò ðàçìåðíîñòü êóáà è àòðèáóòû, íåîáõîäèìûå äëÿ
126
Ãëàâà 5 • Ñåðâèñû àíàëèòèêè
åãî ïîñòðîåíèÿ. ×òî êàñàåòñÿ âòîðîãî ñöåíàðèÿ ñîçäàíèÿ êóáà, òî â äàííîì ñëó÷àå âû ìîæåòå ñîçäàòü êóá áåç èñòî÷íèêà äàííûõ. Ýòî îçíà÷àåò, ÷òî â ñëó÷àå ñîçäàíèÿ ïîäîáíîãî êóáà íåò íåîáõîäèìîñòè îïðåäåëÿòü èñòî÷íèê äàííûõ è åãî ïðåäñòàâëåíèå äëÿ ñ÷èòûâàíèÿ èçìåðåíèé. Âñå àòðèáóòû êóáà, ñîçäàâàåìîãî áåç èñòî÷íèêà äàííûõ, âû îïðåäåëèòå âðó÷íóþ.
Ðèñ. 5.6. Óòèëèòà Cube Wizard
Òåõíîëîãèþ IntelliCube ñòîèò ðàññìîòðåòü ïîäðîáíåå. Îíà ïîçâîëÿåò çíà÷èòåëüíî ñîêðàòèòü òðóäîâûå çàòðàòû ðàçðàáîò÷èêîâ íà îïðåäåëåíèå èçìåðåíèé êóáà. Îäíàêî àâòîìàòè÷åñêîå îïðåäåëåíèå ðàçìåðíîñòè êóáà íå âñåãäà âûïîëíÿåòñÿ ïðàâèëüíî, ïîýòîìó ëó÷øå ïðîâåðèòü â ðó÷íîì ðåæèìå ðåçóëüòàòû ðàáîòû IntelliCube, à ïðè íåîáõîäèìîñòè ñàìîñòîÿòåëüíî âíåñòè êîððåêòèðîâêè. Çàêîí÷èâ ïðîöåññ ïðîâåðêè òàáëèö, êîòîðûå áóäóò èñïîëüçîâàòüñÿ äëÿ ñîçäàíèÿ êóáà, âû ñìîæåòå ïåðåéòè ê ñëåäóþùåìó ýòàïó ðàáîòû ñ óòèëèòîé Cube Wizard. Íà ýòîì øàãå âû ñìîæåòå ïðîñìîòðåòü ðåçóëüòàòû ïðåäûäóùèõ äåéñòâèé (íàñòðîéêè ñâÿçåé êóáà) è çàâåðøèòü ñîçäàíèå êóáà.
5.3.5. Óòèëèòà Cube Editor Ïîñëå çàâåðøåíèÿ ðàáîòû óòèëèòû Cube Wizard âûïîëíÿåòñÿ çàïóñê Cube Editor. Äàííàÿ óòèëèòà ïðåòåðïåëà ðÿä çíà÷èòåëüíûõ èçìåíåíèé â íîâîé âåðñèè SQL Server. Òåïåðü ñ åå ïîìîùüþ ìîæíî íàñòðàèâàòü ïàðàìåòðû êóáîâ, ñîçäàâàòü è îòëà-
5.3. Ñðåäñòâà ðàçðàáîòêè
127
æèâàòü ïðèëîæåíèÿ, êîòîðûå â ñâîåé ðàáîòå èñïîëüçóþò êóáû. Îáùèé âèä ðåäàêòîðà êóáîâ ïîêàçàí íà ðèñ. 5.7.
Ðèñ. 5.7. Ðåäàêòîð êóáîâ
 ðåäàêòîðå êóáîâ ñåðâèñîâ àíàëèòèêè SQL Server 2005 ñóùåñòâóþò íåñêîëüêî âêëàäîê, êàæäàÿ èç êîòîðûõ èñïîëüçóåòñÿ äëÿ íàñòðîéêè îïðåäåëåííûõ ïàðàìåòðîâ êóáà. Îíè ðàñïîëàãàþòñÿ â âåðõíåé ÷àñòè îêíà Cube Editor: · Cube Builder — èñïîëüçóåòñÿ äëÿ ðàáîòû ñ ìàñøòàáîì êóáà; · Dimensions — èñïîëüçóåòñÿ äëÿ ðàáîòû ñ èçìåðåíèÿìè êóáà; · Calculations — ðàáîòàåò ñ âû÷èñëåíèÿìè â êóáå; · KPI — ïîçâîëÿåò íàñòðîèòü îñíîâíûå ïàðàìåòðû ïðîèçâîäèòåëüíîñòè (KPI — Key Performance Indicators) êóáà; · Actions — èñïîëüçóåòñÿ äëÿ íàñòðîéêè äåéñòâèé ñ êóáîì; · Partitions — íàñòðàèâàåò ðàçäåëû êóáà; · Perspectives — ïîçâîëÿåò íàñòðîèòü ïðåäñòàâëåíèÿ êóáà; · Translations — ïàðàìåòðû ïåðåäà÷è äàííûõ êóáà; · Browser — ïîçâîëÿåò ïðîñìàòðèâàòü ñîäåðæèìîå ðàçâåðíóòîãî â áàçå êóáà. Ïîñëå òîãî êàê êóá áóäåò íàñòðîåí ñ ïîìîùüþ Cube Wizard, à òàêæå â ðåäàêòîðå êóáà áóäóò îïðåäåëåíû åãî ïàðàìåòðû, âû ìîæåòå âûáðàòü â ìåíþ Cube Editor ïóíêò Build4Deploy Solution. Ýòî ïîçâîëèò ðàçâåðíóòü êóá íà âûáðàííîì ñåðâåðå àíàëèòèêè. Ïàðàìåòðû, êîòîðûå âû îïðåäåëèëè â ðåäàêòîðå êóáà, ìîãóò îïðåäåëÿòü íå òîëüêî ìåñòî õðàíåíèÿ êóáà, íî è ìåòîäû ðàáîòû ñ íèì è âðåìÿ äîñòóïà ê íåìó. Ïî óìîë÷àíèþ êóá ñòàíîâèòñÿ äîñòóïíûì äëÿ âíåñåíèÿ â íåãî äàííûõ è èõ ñ÷èòûâàíèÿ ñðàçó ïîñëå åãî ðàçâåðòûâàíèÿ â áàçå äàííûõ.
128
Ãëàâà 5 • Ñåðâèñû àíàëèòèêè
5.3.6. Óòèëèòà Cube Browser Ïîñëå ñîçäàíèÿ êóáà è íàñòðîéêè åãî ïàðàìåòðîâ âû ìîæåòå ïðèñòóïèòü ê åãî ïðîñìîòðó. Ïðîñìîòð ìîæåò ïîäðàçóìåâàòü êàê íàâèãàöèþ ìåæäó îòäåëüíûìè èçìåðåíèÿìè, òàê è èçó÷åíèå îïðåäåëåííûõ äàííûõ. Äëÿ ýòîãî èñïîëüçóåòñÿ áðàóçåð êóáîâ (Cube Browser). Áðàóçåð êóáîâ ïîääåðæèâàåò òåõíîëîãèþ OWC (Office Web Components), ÷òî ïîçâîëÿåò ïåðåòàñêèâàòü îòäåëüíûå èçìåðåíèÿ êóáîâ ñ ïîìîùüþ óêàçàòåëÿ ìûøè. Ïåðåòàñêèâàÿ èçìåðåíèÿ, âû ìîæåòå ïåðåìåùàòü èõ èç ñïèñêà àòðèáóòîâ, ðàñïîëîæåííîãî â ëåâîé ÷àñòè îêíà Cube Browser, â îáëàñòü ðàáîòû ñ êóáàìè, êîòîðàÿ ðàñïîëàãàåòñÿ â öåíòðå îêíà. Ïîñëå òîãî êàê âû âûáåðåòå íåîáõîäèìûå èçìåðåíèÿ äëÿ ïðîñìîòðà, Cube Browser âûïîëíèò çàïðîñ ê áàçå è îòîáðàçèò íà ýêðàíå ñîîòâåòñòâóþùèå íàáîðû äàííûõ. Òàêèì îáðàçîì, âû ìîæåòå ïðîñìàòðèâàòü íåîáõîäèìûå çíà÷åíèÿ, ïîìåùåííûå â ÿ÷åéêè âûáðàííîãî êóáà.
5.3.7. Óòèëèòà Profiler  íîâîé âåðñèè SQL Server ñåðâèñû àíàëèòèêè áîëüøå íå ïðåäñòàâëÿþò ñîáîé ÷åðíûé ÿùèê, êàê ýòî áûëî â ïðåäûäóùèõ âåðñèÿõ.  SQL Server 7.0 è 2000 àäìèíèñòðàòîð íå ìîã ïðîñìîòðåòü èíôîðìàöèþ î òîì, ÷åì çàíèìàåòñÿ ñåðâåð â äàííûé ìîìåíò âðåìåíè. Ýòî óñëîæíÿëî ïðîöåññ àäìèíèñòðèðîâàíèÿ, òàê êàê äëÿ òîãî, ÷òîáû óçíàòü, ÷åì çàíÿò ñåðâåð â äàííûé ìîìåíò, òðåáîâàëîñü âûïîëíèòü äîïîëíèòåëüíûå äåéñòâèÿ.  SQL Server 2005 ïîÿâèëàñü íîâàÿ óòèëèòà Profiler, êîòîðàÿ ïîçâîëÿåò âûïîëíÿòü òðàññèðîâêó ðàçëè÷íûõ ïàðàìåòðîâ ðàáîòû SQL Server. Äåéñòâèÿ Profiler àíàëîãè÷íû íàñòðîéêå ïàðàìåòðîâ òðàññèðîâêè, êîòîðàÿ âîçìîæíà äëÿ îáû÷íîé ðåëÿöèîííîé áàçû äàííûõ. Äëÿ çàïóñêà óòèëèòû âûáåðèòå â ìåíþ îïåðàöèîííîé ñèñòåìû êîìàíäó Start4All Programs4Microsoft SQL Server 20054 Profiler. Îáùèé âèä îêíà óòèëèòû ïîêàçàí íà ðèñ. 5.8.
Ðèñ. 5.8. Óòèëèòà SQL Profiler
5.3. Ñðåäñòâà ðàçðàáîòêè
129
Ïîìèìî íàñòðîéêè ïàðàìåòðîâ òðàññèðîâêè ïðîôàéëåð ïîçâîëÿåò áîëåå äåòàëüíî èçó÷èòü MDX. Òàêæå ñ åãî ïîìîùüþ ìîæíî îòëàâëèâàòü îøèáêè â ðàáîòå ñåðâåðà çà ñ÷åò òîòàëüíîãî êîíòðîëÿ âñåõ ôóíêöèé SQL Server. Íîâàÿ âåðñèÿ ïðîôàéëåðà òàêæå ïîçâîëÿåò îòëàâëèâàòü îïðåäåëåííûå ñîáûòèÿ â SQL Server è ïðè íåîáõîäèìîñòè âûïîëíÿòü èõ ïîâòîðíóþ îáðàáîòêó.
5.3.8. Îáúåêòû ñåðâèñîâ àíàëèòèêè (AMO) Íàáîð îáúåêòîâ ñåðâèñîâ àíàëèçà (AMO — Analysis Services Management Objects) — ýòî åùå îäèí êëàññ îáúåêòîâ, êîòîðûé ïîÿâèëñÿ â íîâîé âåðñèè SQL Server. AMO ÿâëÿåòñÿ íàñëåäíèêîì ðàíåå èñïîëüçîâàâøåéñÿ áèáëèîòåêè COM-îáúåêòîâ DSO (Decision Support Objects), êîòîðàÿ ïðèìåíÿëàñü â SQL Server 2000.  íîâîé âåðñèè SQL Server âû ìîæåòå èñïîëüçîâàòü îáúåêòû êàê ñòàðîé áèáëèîòåêè, òàê è íîâîé. Îáðàòíàÿ ñîâìåñòèìîñòü ïðèëîæåíèé íà óðîâíå îáúåêòîâ ïîçâîëèò ðàçðàáîò÷èêàì áîëåå ïëàâíî ïåðåõîäèòü íà íîâûå òåõíîëîãèè, èçâëåêàÿ íàèëó÷øåå èç èìåþùèõñÿ. Áèáëèîòåêà AMO ñîçäàâàëàñü ñ èñïîëüçîâàíèåì .NET Framework è ïîçâîëÿåò óïðàâëÿòü òîëüêî ñåðâèñàìè àíàëèòèêè. AMO èñïîëüçóåò XMLA äëÿ îáìåíà äàííûìè ìåæäó ïðèëîæåíèåì è ñåðâèñàìè àíàëèòèêè. Ñîçäàâàòü ïðèëîæåíèÿ ñ èñïîëüçîâàíèåì îáúåêòîâ íîâîé áèáëèîòåêè ìîæíî êàê â ïðîãðàììå Business Intelligence Development Studio, òàê è â SQL Server Management Studio. Îäíèì èç îñíîâíûõ ïðåèìóùåñòâ AMO ÿâëÿåòñÿ òî, ÷òî äàííûé íàáîð îáúåêòîâ ïîçâîëÿåò ðåàëèçîâàòü áåçîïàñíîå ñîåäèíåíèå ñ ñåðâèñàìè àíàëèòèêè SQL Server. Ïðè ýòîì ìîæåò èñïîëüçîâàòüñÿ êàê ìåõàíèçì àóòåíòèôèêàöèè SQL Server, òàê è çàøèôðîâàííîå âçàèìîäåéñòâèå ÷åðåç âûäåëåííûé êàíàë ñâÿçè ìåæäó êëèåíòñêèì ïðèëîæåíèåì è ñåðâåðîì. Ïîìèìî øèôðîâàíèÿ äàííûõ ïîääåðæèâàåòñÿ ìåõàíèçì ñæàòèÿ XML, ÷òî ïîçâîëÿåò ñîêðàòèòü îáúåì ïåðåäàâàåìîé ÷åðåç ñåòü èíôîðìàöèè è òåì ñàìûì ðàçãðóçèòü êàíàë ñâÿçè ìåæäó ñåðâåðîì è êëèåíòñêèì ïðèëîæåíèåì.  çàâåðøåíèå äàííîãî ðàçäåëà ïåðå÷èñëèì îñíîâíûå ïðåèìóùåñòâà AMO íàä DSO: 1. Íàáîð îáúåêòîâ AMO èìååò ðàñøèðåííûå ôóíêöèè (áîëüøå îáúåêòîâ), êîòîðûå ìîãóò èñïîëüçîâàòüñÿ äëÿ ñîçäàíèÿ áîëåå ñëîæíûõ ïðèëîæåíèé àíàëèòèêè. 2. AMO ïîçâîëÿåò âûïîëíÿòü ðåçåðâíîå êîïèðîâàíèå è âîññòàíîâëåíèå ñèñòåìû, ÷òî íåëüçÿ áûëî ñäåëàòü â DSO. 3.  ñëó÷àå ñ AMO âûïîëíÿåòñÿ ãèáêàÿ íóìåðàöèÿ îáúåêòîâ, êîòîðûå ñîçäàþòñÿ â ñèñòåìå. Ýòî ïîçâîëÿåò äîñòè÷ü íåêîòîðûõ óëó÷øåíèé â îòíîøåíèè ïðîèçâîäèòåëüíîñòè ñèñòåìû.
5.3.9. XML äëÿ àíàëèòèêè (XMLA) Ñåðâèñû àíàëèòèêè âîîðóæèëèñü íîâûì ïðîòîêîëîì XML for Analysis (XMLA) äëÿ ïåðåäà÷è äàííûõ, êîòîðûé áàçèðóåòñÿ íà òåõíîëîãèè XML. Ýòîò ïðîòîêîë ÿâëÿåòñÿ ïëàòôîðìåííî-íåçàâèñèìûì è ñîçäàí íà îñíîâå âåá-ñåðâèñîâ è SOAP. Ñåðâèñû àíàëèòèêè èñïîëüçóþò XMLA äëÿ îáðàáîòêè ïðàêòè÷åñêè âñåõ çàïðîñîâ,
130
Ãëàâà 5 • Ñåðâèñû àíàëèòèêè
ïîñòóïàþùèõ îò êëèåíòñêèõ ïðèëîæåíèé. Ýòî, â ïåðâóþ î÷åðåäü, îòíîñèòñÿ ê óòèëèòàì, êîòîðûå èñïîëüçóþòñÿ äëÿ óïðàâëåíèÿ ñåðâèñàìè àíàëèòèêè, òàêèìè êàê SQL Server Management Studio è Business Intelligence Development Studio. XMLA îïòèìèçèðîâàí äëÿ ïåðåäà÷è äàííûõ ÷åðåç Èíòåðíåò. Äëÿ áîëåå äåòàëüíîãî ïðåäñòàâëåíèÿ î òîì, â êàêèõ èìåííî ñëó÷àÿõ èñïîëüçóåòñÿ ïðîòîêîë XMLA, íà ñõåìå (ðèñ. 5.9) ïîêàçàí îáùèé âèä ïëàòôîðìû è ìåñòî, êîòîðîå çàíèìàåò ïðîòîêîë XMLA over HTTP. Ïðîòîêîëîì XMLA ïîääåðæèâàþòñÿ äâà òèïà çàïðîñîâ: çàïðîñ íà âûïîëíåíèå è çàïðîñ îïðåäåëåíèÿ ïàðàìåòðîâ. Ðàññìîòðèì äàííûå òèïû çàïðîñîâ áîëåå äåòàëüíî.
Ðèñ. 5.9. Îáùàÿ àðõèòåêòóðà èñïîëüçîâàíèÿ XMLA â ñåðâèñàõ àíàëèòèêè
Ñ ïîìîùüþ çàïðîñîâ íà âûïîëíåíèå ïðîèñõîäèò èñïîëíåíèå êàêîãî-ëèáî äåéñòâèÿ. Ïðèìåðîì òàêèõ äåéñòâèé ìîãóò ñëóæèòü èçìåíåíèå òåêóùåãî ñîñòîÿíèÿ îáúåêòà, ðàñïîëàãàþùåãîñÿ íà ñåðâåðå, ñîçäàíèå è óäàëåíèå êàê îòäåëüíûõ îáúåêòîâ áàçû äàííûõ, òàê è öåëûõ êóáîâ. Çàïðîñû îïðåäåëåíèÿ ïàðàìåòðîâ èñïîëüçóþòñÿ äëÿ ïîëó÷åíèÿ èíôîðìàöèè îïðåäåëåííîãî òèïà îá îáúåêòàõ áàçû äàííûõ. Èñïîëüçóÿ çàïðîñû äàííîãî òèïà, ìîæíî ïîëó÷àòü çíà÷åíèÿ ïàðàìåòðîâ ðàçäåëîâ, êóáîâ, òàáëèö è äðóãèõ îáúåêòîâ áàçû äàííûõ. Òàêæå ñ èõ ïîìîùüþ ìîæíî ïîëó÷èòü òàêèå õàðàêòåðèñòèêè ñåðâåðà áàç äàííûõ, êàê êîëè÷åñòâî òåêóùèõ ïîäêëþ÷åíèé ê ñåðâåðó è ïàðàìåòðû áåçîïàñíîñòè ñèñòåìû è äîñòóïà ê åå ðåñóðñàì.
5.3.10. ßçûê ODL Äëÿ ñîçäàíèÿ îáúåêòîâ ñåðâèñîâ àíàëèòèêè èñïîëüçóåòñÿ ÿçûê Object Definition Language (ODL). Ýòîò ÿçûê ïîçâîëÿåò ðåàëèçîâàòü âîçìîæíîñòè ñîçäàíèÿ ñöåíàðèåâ äëÿ îáðàáîòêè îñíîâíûõ îáúåêòîâ è ñâÿçåé ñåðâèñîâ àíàëèòèêè, êàê ýòî ðàíåå âûïîëíÿëîñü â ðåëÿöèîííûõ áàçàõ äàííûõ. ODL ïîçâîëÿåò ñîçäàâàòü ñöåíàðèè, êîòîðûå áóäóò â àâòîìàòè÷åñêîì ðåæèìå ñîçäàâàòü îáúåêòû ñåðâèñîâ àíàëèòèêè è íàñòðàèâàòü èõ ñâîéñòâà. Ïîìèìî ýòîãî ïîäîáíûå ñöåíàðèè ìîãóò èñïîëüçîâàòüñÿ äëÿ óïðàâëåíèÿ âåðñèÿìè îáúåêòîâ áàçû äàííûõ ñåðâèñîâ àíàëèòèêè.
5.3. Ñðåäñòâà ðàçðàáîòêè
131
ODL ÿâëÿåòñÿ îòêðûòîé ñïåöèôèêàöèåé, êîòîðàÿ ïîñòðîåíà íà îñíîâå ñòàíäàðòà XML for Analysis (XMLA). Áëàãîäàðÿ ýòîìó ñöåíàðèè ODL ìîãóò ñîçäàâàòüñÿ â ëþáîì XML-ðåäàêòîðå.
5.3.11. ßçûê çàïðîñîâ MDX MDX — ýòî ÿçûê çàïðîñîâ, êîòîðûé èñïîëüçóåòñÿ äëÿ ðàáîòû ñ áàçàìè äàííûõ ñåðâèñîâ àíàëèòèêè.  íîâîé âåðñèè SQL Server MDX ïîäâåðãñÿ íåêîòîðûì èçìåíåíèÿì: · Îáðàáîòêà ïðîïóùåííûõ ó÷àñòíèêîâ — îäíî èç ñàìûõ çíà÷èìûõ óëó÷øåíèé, êîñíóâøèõñÿ MDX.  SQL Server 2000 â òîì ñëó÷àå, åñëè îò÷åò è íàñòðîéêè åãî ïðîñìîòðà ñîçäàâàëèñü íåñêîëüêèìè ó÷àñòíèêàìè, ïîñëå ÷åãî ÷àñòü èç íèõ ïåðåñòàëè áûòü ïîëüçîâàòåëÿìè SQL Server, âîçíèêàëè îøèáêè. Îò÷åò íå ìîãëè ïðîñìîòðåòü äàæå òå ïîëüçîâàòåëè, êîòîðûå ñóùåñòâîâàëè â ñèñòåìå. Ïðîïóñê ó÷àñòíèêîâ òàêîãî îò÷åòà ìîã ïðîèçîéòè ïî íåñêîëüêèì ïðè÷èíàì. Íàïðèìåð, àäìèíèñòðàòîð ìîã äîïóñòèòü îøèáêó âî âðåìÿ ñîçäàíèÿ îò÷åòà èëè íå îòñëåäèë èçìåíåíèÿ â ñòðóêòóðå ïðåäïðèÿòèÿ, ïðîèçîøëè îïðåäåëåííûå èçìåíåíèÿ â ñòðóêòóðå êóáîâ èëè èçìåíåíèÿ â èçìåðåíèÿõ îïðåäåëåííûõ êóáîâ. Âñå ýòî ìîæåò ïðèâåñòè ê âîçíèêíîâåíèþ îøèáîê ïðè ïðîñìîòðå îò÷åòîâ.  íîâîé âåðñèè MDX ìîæíî âîñïîëüçîâàòüñÿ íîâûì ñâîéñòâîì MDXMissingMemberMode èçìåðåíèÿ, ÷òî ïîçâîëèò íàñòðîèòü ôóíêöèîíèðîâàíèå îò÷åòà äàæå â òîì ñëó÷àå, åñëè ó÷àñòíèêè áóäóò ïðîïóùåíû. · Àãðåãàöèè óäàëåííûõ ó÷àñòíèêîâ — äàííàÿ ôóíêöèîíàëüíîñòü íå áûëà ðåàëèçîâàíà â ïðåäûäóùåé âåðñèè SQL Server.  íîâîé âåðñèè ñòàëî âîçìîæíûì âûïîëíÿòü àãðåãèðîâàíèå óäàëåííûõ ó÷àñòíèêîâ, ÷òî ïîçâîëÿåò âûïîëíÿòü îäíîâðåìåííî íåñêîëüêî îïåðàöèé íàä öåëîé ãðóïïîé. · Àâòîìàòè÷åñêàÿ êîíâåðòàöèÿ òèïîâ — ñ ïîìîùüþ äàííîãî ìåõàíèçìà ìîæíî âûïîëíÿòü àâòîìàòè÷åñêóþ êîíâåðòàöèþ òèïîâ.  ïåðâóþ î÷åðåäü ýòî îòíîñèòñÿ ê âîçìîæíîñòè êîíâåðòàöèè ó÷àñòíèêîâ â íàáîð è íàîáîðîò. Ýòî îñâîáîæäàåò ðàçðàáîò÷èêîâ îò èñïîëüçîâàíèÿ ñêîáîê âî âðåìÿ èñïîëüçîâàíèÿ íàáîðîâ, ÷òî óïðîùàåò ïðîãðàììíûé êîä êàê â îòíîøåíèè ñîçäàíèÿ, òàê è â îòíîøåíèè ÷òåíèÿ. · Óïðîùåíèå ñèíòàêñèñà — â íîâîé âåðñèè MDX ìàêñèìàëüíî óïðîùåí ñèíòàêñèñ äëÿ íåêîòîðûõ êîìàíä. Óïðîùåíèå â ïåðâóþ î÷åðåäü êîñíóëîñü èäåíòèôèêàöèè ó÷àñòíèêîâ, êîãäà íå òðåáóåòñÿ ïîñòîÿííîãî îïðåäåëåíèÿ èçìåðåíèé êóáà ñ ïîìîùüþ íàáîðà êîìàíä. · Ñöåíàðèè MDX — â ýòîé ÷àñòè ÿçûê MDX ïðåòåðïåë íàèáîëüøèå èçìåíåíèÿ. Òåïåðü íåñêîëüêî êîìàíä ìîæíî ãðóïïèðîâàòü â îòäåëüíûé íàáîð è òàêèì îáðàçîì ñîçäàâàòü ôàéëû ñöåíàðèåâ, êîòîðûå ïîçâîëÿò áûñòðî âûïîëíÿòü ïîñëåäîâàòåëüíîñòü êîìàíä. Îòäåëüíàÿ êîìàíäà â ñöåíàðèè îòäåëÿåòñÿ îò äðóãèõ êîìàíä òî÷êîé ñ çàïÿòîé. · Íàáîðû è èñïîëüçîâàíèå êîìàíäû WHERE — èñïîëüçîâàíèå êîìàíäû WHERE ñòàëî àíàëîãè÷íûì èñïîëüçîâàíèþ êîìàíäû OR â íàáîðå SQL-êîìàíä. Òåïåðü ìîæíî ïðîñìàòðèâàòü ðåçóëüòàòû âûïîëíåíèÿ çàïðîñà äëÿ âñåõ ó÷àñòíèêîâ, êîòîðûå ïåðå÷èñëåíû â ïîëå WHERE.
132
Ãëàâà 5 • Ñåðâèñû àíàëèòèêè
5.3.12. Ïðîâàéäåð äàííûõ ADOMD.NET ADOMD.NET — ýòî íîâûé .NET-ïðîâàéäåð äàííûõ, êîòîðûé ñîçäàâàëñÿ ñïåöèàëüíî äëÿ äîñòóïà ê èñòî÷íèêàì ìíîãîìåðíûõ äàííûõ. ADOMD.NET ñîçäàâàëñÿ ñïåöèàëüíî äëÿ çàìåíû áèáëèîòåêè COM-îáúåêòîâ, êîòîðàÿ ðàíåå èñïîëüçîâàëàñü äëÿ äîñòóïà ê ìíîãîìåðíûì ìàññèâàì äàííûõ. Äàííàÿ áèáëèîòåêà õîðîøî ïðèæèëàñü ó ìíîãèõ ðàçðàáîò÷èêîâ, è ADOMD.NET áóäåò ñëîæíî âûòåñíèòü åå èç ñåìåéñòâà ïðîãðàììíûõ ïðîäóêòîâ, êîòîðûå èñïîëüçîâàëèñü äëÿ ñîçäàíèÿ ïðèëîæåíèé ñåðâèñîâ àíàëèòèêè. Îäíàêî ââåäåíèå íîâîãî ïðîâàéäåðà îáóñëîâëèâàåòñÿ íåñêîëüêèìè îáúåêòèâíûìè ïðè÷èíàìè. Îñíîâíîé ïðè÷èíîé ÿâëÿåòñÿ òî, ÷òî ñîâðåìåííûå ïðèëîæåíèÿ äëÿ ðàáîòû ñ ñåðâèñàìè àíàëèòèêè âñå ÷àùå ñîçäàþòñÿ ñ èñïîëüçîâàíèåì òàêèõ .NET-îðèåíòèðîâàííûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ, êàê Ñ++, C#, J# è Visual Basic. Òåïåðü èç ýòèõ ÿçûêîâ ïðîãðàììèðîâàíèÿ ñòàëî ïðîùå èñïîëüçîâàòü ïðîâàéäåð ADOMD.NET, ÷åì êàêèå-ëèáî äðóãèå. Ïðîâàéäåð ADOMD.NET èñïîëüçóåò íîâûé ïðîòîêîë XMLA äëÿ ðàáîòû ñ ñåðâèñàìè àíàëèòèêè, ÷òî ïîçâîëÿåò óíèôèöèðîâàòü ïðèëîæåíèÿ è âíåñòè â íèõ íîâóþ ôóíêöèîíàëüíîñòü. Ïðè ýòîì ñòîèò çàìåòèòü, ÷òî ñîåäèíåíèå ìåæäó ïðèëîæåíèÿìè è ñåðâèñàìè àíàëèòèêè âîçìîæíî ñ èñïîëüçîâàíèåì îäíîãî èç äâóõ âàðèàíòîâ: · XMLA over HTTP; · XMLA over TCP/IP.
Ñåðâèñû èíòåãðàöèè
6
Ñåðâèñû òðàíñôîðìàöèè äàííûõ (DTS — Data Transformation Services) îòíîñÿòñÿ ê îäíèì èç íàèáîëåå ÷àñòî èñïîëüçóåìûõ ïðèëîæåíèé SQL Server, íà÷èíàÿ ñ âåðñèè 7.0. DTS â ïåðâóþ î÷åðåäü èñïîëüçîâàëèñü â îïåðàöèÿõ èçâëå÷åíèÿ äàííûõ, èõ ïðåîáðàçîâàíèÿ è çàãðóçêè äëÿ õðàíèëèù OLAP-ñåðâèñîâ. Ñ ïîìîùüþ DTS òàêæå ðåàëèçîâàëèñü âîçìîæíîñòè èìïîðòà è ýêñïîðòà äàííûõ èç ðåëÿöèîííûõ áàç äàííûõ SQL Server. Äàííûå ñåðâèñû íàìíîãî óäîáíåå â èñïîëüçîâàíèè, ÷åì óòèëèòà ñ êîìàíäíîé ñòðîêîé BCP (Bulk Copy Program). Ïî ñðàâíåíèþ ñ óòèëèòîé BCP ñåðâèñû òðàíñôîðìàöèè äàííûõ èìåþò áîëüøèé íàáîð âîçìîæíîñòåé äëÿ èìïîðòà è ýêñïîðòà äàííûõ, à òàêæå ïåðåìåùåíèÿ èõ ìåæäó èñòî÷íèêàìè äàííûõ. DTS èìååò èíòåðôåéñ äëÿ âûïîëíåíèÿ ïðîñòåéøèõ îïåðàöèé ïî ïðåîáðàçîâàíèþ äàííûõ è ãðàôè÷åñêóþ ñðåäó ðàçðàáîòêè äëÿ áîëåå ñëîæíûõ îïåðàöèé. Ñåðâèñû ïðåîáðàçîâàíèÿ äàííûõ SQL Server 7.0 è 2000 ïîääåðæèâàëè áàçû äàííûõ OLE DB â êà÷åñòâå èñòî÷íèêà. Ýòî îçíà÷àåò, ÷òî õîòÿ DTS ÿâëÿþòñÿ ÷àñòüþ SQL Server, îíè òàêæå ìîãóò èñïîëüçîâàòüñÿ äëÿ ïåðåìåùåíèÿ äàííûõ ìåæäó ðàçëè÷íûìè èñòî÷íèêàìè äàííûõ OLE DB. Ïðè ýòîì â âûïîëíåíèè äàííûõ îïåðàöèé íå òðåáóåòñÿ ó÷àñòèÿ SQL Server. Íàïðèìåð, ïîìèìî ïåðåìåùåíèÿ äàííûõ ìåæäó îòäåëüíûìè ýêçåìïëÿðàìè SQL Server âû ìîæåòå â êà÷åñòâå èñòî÷íèêà äàííûõ èñïîëüçîâàòü òàêèå ïðîãðàììíûå ïðîäóêòû, êàê Oracle, Access è DB2.  ýòîì îòíîøåíèè ñåðâèñû òðàíñôîðìàöèè ìîãóò èñïîëüçîâàòüñÿ â êà÷åñòâå ìîùíîãî ìåõàíèçìà äëÿ ïåðåìåùåíèÿ äàííûõ ìåæäó ðàçëè÷íûìè áàçàìè äàííûõ. Íåñìîòðÿ íà îãðîìíîå êîëè÷åñòâî ïðåèìóùåñòâ, ñåðâèñû òðàíñôîðìàöèè äàííûõ äî ñèõ ïîð èìåþò äîñòàòî÷íî îãðàíè÷åíèé. Âî-ïåðâûõ, ýòî îòíîñèòñÿ ê ìàñøòàáèðîâàíèþ ñèñòåìû. Âî-âòîðûõ, ïàêåòû ñåðâèñîâ òðàíñôîðìàöèè äàííûõ äîëæíû áûòü áîëåå ïåðåíîñèìûìè ìåæäó îòäåëüíûìè ñèñòåìàìè. Èíûìè ñëîâàìè, DTS-ïàêåòû, êîòîðûå áûëè ñîçäàíû íà îäíîì SQL Server, äîëæíû ëåãêî ïåðåíîñèòüñÿ â äðóãóþ ñèñòåìó, ÷òî èìååò â äàííûé ìîìåíò íåêîòîðûå îãðàíè÷åíèÿ.
134
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
Ïîìèìî ïåðå÷èñëåííûõ îãðàíè÷åíèé ðàííèå âåðñèè ñåðâèñîâ òðàíñôîðìàöèè äàííûõ SQL Server èìåëè îãðàíè÷åíèÿ â ìåõàíèçìàõ îáðàáîòêè âîçíèêàþùèõ îøèáîê.  íîâîé âåðñèè DTS íåêîòîðûå èç ýòèõ îãðàíè÷åíèé ïðåîäîëåíû, ÷òî ïîçâîëèëî áîëåå òî÷íî îáðàáàòûâàòü âîçíèêàþùèå îøèáêè è çàêëàäûâàòü â ïðèëîæåíèÿ ýëåìåíòû èõ îáðàáîòêè.  íîâîé âåðñèè SQL Server òåõíîëîãèÿ òðàíñôîðìàöèè äàííûõ áûëà ïîëíîñòüþ ïåðåñìîòðåíà è ïåðåïèñàí ïðîãðàììíûé êîä ïðèëîæåíèé, îòíîñÿùèõñÿ ê DTS. Ýòî ïðèâåëî ê ñìåíå «èìèäæà» äàííîãî ñåðâèñà. Òåïåðü ñåðâèñû òðàíñôîðìàöèè äàííûõ ïåðåèìåíîâàíû â «ñåðâèñû èíòåãðàöèè», ÷òî áîëåå òî÷íî îòðàæàåò èõ ïðèðîäó. Ñåðâèñû èíòåãðàöèè ïîääåðæèâàþò òå æå òèïû áàç äàííûõ â êà÷åñòâå èñòî÷íèêîâ, ÷òî è DTS. Ýòî äîáàâëÿåò äîïîëíèòåëüíûé óðîâåíü íåçàâèñèìîñòè äëÿ äàííûõ ñåðâèñîâ è ïîçâîëÿåò óñòàíàâëèâàòü íåçàâèñèìûå îò SQL Server 2005 ñîåäèíåíèÿ ñ äðóãèìè èñòî÷íèêàìè äàííûõ.  äàííîé ãëàâå ìû ðàññìîòðèì áîëåå äåòàëüíî îáùóþ àðõèòåêòóðó ñåðâèñîâ èíòåãðàöèè, èçó÷èì íîâûå ïðåèìóùåñòâà, êîòîðûå ïîÿâèëèñü â ýòîì ïðîãðàììíîì ïðîäóêòå, à òàêæå ðàññìîòðèì íàáîð íîâûõ óòèëèò äëÿ ðàáîòû ñ ñåðâèñàìè èíòåãðàöèè è íàáîðîì íîâûõ êîìïîíåíòîâ, ñ êîòîðûìè âàì ïðèäåòñÿ âñòðåòèòüñÿ â ñâîåé ðàáîòå.
6.1. Àðõèòåêòóðà è êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè  îáùåì ñëó÷àå àðõèòåêòóðó ñåðâèñîâ èíòåãðàöèè ìîæíî ðàçäåëèòü íà äâå îñíîâíûå ÷àñòè: · Data Transformation Runtime (DTR); · Data Transformation Pipeline (DTP). Ðàçäåëåíèå ñåðâèñîâ èíòåãðàöèè íà äâå îòäåëüíûå ÷àñòè îáóñëîâëåíî, ñêîðåå âñåãî, íå ïðîãðàììíîé íåîáõîäèìîñòüþ, à òðåáîâàíèåì áèçíåñà ðàçáèòü ïîäîáíîå ÿäðî íà äâå íåçàâèñèìûå ÷àñòè, îäíà èç êîòîðûõ áóäåò îòâå÷àòü çà ïîòîêè äàííûõ, à äðóãàÿ çà áèçíåñ-ïðîöåññû.  ñåðâèñàõ òðàíñôîðìàöèè äàííûõ îáà ýòè ìîäóëÿ ïðèñóòñòâîâàëè, îäíàêî ìîäóëü îáðàáîòêè ïîòîêîâ äàííûõ áûë íàìíîãî áîëåå ðàçâèò, ÷åì ìîäóëü, îòâå÷àþùèé çà áèçíåñ-ïðîöåññû. Òåïåðü, ñ ðàñøèðåíèåì ôóíêöèé íîâîãî ñåðâèñà, ñòàëî ÿñíî, ÷òî ìîäóëü áèçíåñ-ïðîöåññîâ íåîáõîäèìî ñîâåðøåíñòâîâàòü, ñ òåì ÷òîáû íå òîëüêî ïðèáëèçèòüñÿ ïî óðîâíþ åãî ðàçâèòèÿ ê ìîäóëþ îáðàáîòêè ïîòîêîâ äàííûõ, íî è íà÷àòü êîíêóðèðîâàòü ñî ìíîãèìè ïðîãðàììíûìè ïðîäóêòàìè, ïðèñóòñòâóþùèìè íà ðûíêå. Íîâàÿ âåðñèÿ DTP áûëà äîðàáîòàíà è çàìåíèëà ñòàðóþ âåðñèþ, ÷òî ïîçâîëèëî ðåàëèçîâàòü íîâûé íàáîð îïåðàöèé ïî ðàáîòå ñ äàííûìè. Îñíîâíûå îáÿçàííîñòè äàííîãî ìîäóëÿ — ýòî îáðàáîòêà è óïðàâëåíèå ïîòîêàìè äàííûõ, êîòîðûå ïåðåäàþòñÿ ìåæäó èñòî÷íèêîì è ïîëó÷àòåëåì äàííûõ. DTR ïðèìåíÿåòñÿ, â ïåðâóþ î÷åðåäü, äëÿ îáðàáîòêè çàäàíèé, êîòîðûå èñïîëüçóþòñÿ äëÿ êîíòðîëÿ íàä áèçíåñ-ïðîöåññàìè. Êàæäûé èç ïîäîáíûõ ïðîöåññîâ (óïðàâëåíèå ïîòîêàìè äàííûõ è áèçíåñ-ïðîöåññàìè) ðåàëèçîâàí çà ñ÷åò ñâîåãî
6.1. Àðõèòåêòóðà è êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè
135
ñîáñòâåííîãî DLL-ôàéëà, à òàêæå íàáîðà ñâîèõ ñîáñòâåííûõ îáúåêòîâ. Îáùàÿ àðõèòåêòóðà ñåðâèñîâ èíòåãðàöèè SQL Server 2005 ïîêàçàíà íà ðèñ. 6.1.
Ðèñ. 6.1. Îáùàÿ àðõèòåêòóðà ñåðâèñîâ èíòåãðàöèè SQL Server 2005
Áîëåå äåòàëüíî DTP è DTR ìû ðàññìîòðèì â ñëåäóþùèõ ðàçäåëàõ.
6.1.1. Ìîäóëü DTP DTP (Data Transformation Pipeline) îáåñïå÷èâàåò ôóíêöèè îáðàáîòêè ïîòîêîâ äàííûõ, à òàêæå èõ òðàíñôîðìàöèè è ïåðåìåùåíèÿ ìåæäó èñòî÷íèêîì äàííûõ è ïîëó÷àòåëåì. Äëÿ ïîäêëþ÷åíèÿ ê èñòî÷íèêàì è ïîëó÷àòåëÿì ðàçëè÷íûõ òèïîâ â DTP èñïîëüçóåòñÿ íàáîð àäàïòåðîâ äàííûõ. Ýòî ïîçâîëÿåò ñîçäàòü ïðîìåæóòî÷íóþ ñðåäó äëÿ ïåðåäà÷è äàííûõ. Êàê ïîêàçàíî íà ðèñ. 6.1, äîñòóï ê DTP îðãàíèçóåòñÿ çà ñ÷åò èñïîëüçîâàíèÿ ñîîòâåòñòâóþùåé îáúåêòíîé ìîäåëè. Îáúåêòíàÿ ìîäåëü DTP ÿâëÿåòñÿ ñâîåîáðàçíûì API, êîòîðûé èñïîëüçóåòñÿ äëÿ âûïîëíåíèÿ êàê ïðåäîïðåäåëåííûõ ïðåîáðàçîâàíèé äàííûõ, òàê è îïðåäåëåííûõ ïîëüçîâàòåëåì. Ïðåîáðàçîâàíèå äàííûõ èñïîëüçóåòñÿ äëÿ îáðàáîòêè ñòðîê òàáëèö èñòî÷íèêîâ äàííûõ ñ öåëüþ ïðèâåñòè èõ ê òðåáóåìîìó ôîðìàòó. Ïîñëå ïîäîáíîãî ïåðåìåùåíèÿ äàííûå èç èñòî÷íèêà êîïèðóþòñÿ â áàçó äàííûõ ïîëó÷àòåëÿ â ñîîòâåòñòâèè ñ òðåáóåìûì ôîðìàòîì ïîëó÷àòåëÿ. Áîëåå äåòàëüíî àðõèòåêòóðà DTP ïîêàçàíà íà ðèñ. 6.2.
136
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
Êàê ãîâîðèëîñü ðàíåå, â DTP èñïîëüçóåòñÿ íàáîð àäàïòåðîâ äàííûõ, êîòîðûå ñëóæàò ñâîåîáðàçíîé ïðîñëîéêîé ìåæäó èñòî÷íèêîì è ïîëó÷àòåëåì äàííûõ. Àäàïòåð èñòî÷íèêà äàííûõ âûïîëíÿåò ñîåäèíåíèå ñ áàçîé äàííûõ è ÷òåíèå ñîîòâåòñòâóþùèõ òàáëèö. Ïîñëå ýòîãî ìîäóëü òðàíñôîðìàöèè äàííûõ ïðè íåîáõîäèìîñòè âûïîëíÿåò èõ ïðåîáðàçîâàíèå ñ öåëüþ ïîäãîòîâèòü äàííûå äëÿ èõ ââîäà â áàçó äàííûõ ïîëó÷àòåëÿ.
Ðèñ. 6.2. Àðõèòåêòóðà Data Transformation Pipeline (DTP)
Ïî çàâåðøåíèè ýòîé îïåðàöèè äàííûå ïåðåäàþòñÿ â áàçó äàííûõ ïîëó÷àòåëÿ è çàïèñûâàþòñÿ â íåå ñ ïîìîùüþ àäàïòåðà ïîëó÷àòåëÿ äàííûõ. Íîâàÿ âåðñèÿ SQL Server èìååò íàáîð âñòðîåííûõ àäàïòåðîâ äàííûõ, ÷òî óïðîùàåò ïðîöåññ ðàçðàáîòêè ãîòîâûõ ïðèëîæåíèé è ñîêðàùàåò ñêîðîñòü èõ âíåäðåíèÿ. Èìåþòñÿ â íàëè÷èè àäàïòåðû äëÿ ñëåäóþùèõ èñòî÷íèêîâ äàííûõ: òàêòîâûõ ôàéëîâ (CSV-ôàéëîâ), ñîâìåñòèìûõ ñ OLE DB áàç äàííûõ (òàêèõ, êàê Oracle è DB2) è ìíîãèõ äðóãèõ. Ïîëíûé ñïèñîê ïîääåðæèâàåìûõ àäàïòåðîâ SQL Server 2005 áóäåò ïðèâåäåí â ðàçäåëå 6.1.14 «Àäàïòåðû äàííûõ». Îñíîâíàÿ ôóíêöèÿ ìîäóëÿ òðàíñôîðìàöèè äàííûõ, êàê ãîâîðèò ñàìî íàçâàíèå, ýòî ïåðåìåùåíèå è ïðè íåîáõîäèìîñòè ïðåîáðàçîâàíèå äàííûõ â íåîáõîäèìûé ôîðìàò. Ñ ïîìîùüþ äàííîãî ìîäóëÿ ìîæíî ðåàëèçîâàòü êàê äîñòàòî÷íî ïðîñòûå ïðèëîæåíèÿ, â êîòîðûõ âûïîëíÿåòñÿ ïðîñòîå êîïèðîâàíèå äàííûõ èç êîëîíîê òàáëèöû èñòî÷íèêà â êîëîíêè òàáëèöû ïîëó÷àòåëÿ, òàê è äîñòàòî÷íî ñëîæíûå, â êîòîðûõ çíà÷åíèÿ êîëîíêè èñòî÷íèêà êîïèðóþòñÿ â íåñêîëüêî êîëîíîê òàáëèöû ïîëó÷àòåëÿ è ïðè ýòîì èçìåíÿåòñÿ òèï äàííûõ. Íàáîð îñíîâíûõ ïðåîáðàçîâàíèé, êîòîðûå ÷àùå âñåãî èñïîëüçóþòñÿ ðàçðàáîò÷èêàìè â ñâîèõ ïðèëîæåíèÿõ, ìû ðàññìîòðèì áîëåå äåòàëüíî â ðàçäåëå 6.1.16 «Ïðåîáðàçîâàíèå äàííûõ». Ïîìèìî ñóùåñòâóþùåãî íàáîðà ïðåîáðàçîâàíèé ðàçðàáîò÷èê ìîæåò ñîçäàâàòü ñâîè ñîáñòâåííûå, èñïîëüçóÿ îáúåêòíóþ ìîäåëü DTP.
6.1.2. Ìîäóëü DTR DTR (Data Transformation Runtime) ñîñòîèò èç ÿäðà è êîìïîíåíòîâ DTR. Êîìïîíåíòû DTR ïðåäñòàâëÿþò ñîáîé îòäåëüíûå îáúåêòû, êîòîðûå ïîçâîëÿþò îáðàáàòûâàòü èñêëþ÷åíèÿ ñåðâèñîâ èíòåãðàöèè. DTR-êîìïîíåíòû èñïîëüçóþòñÿ äëÿ ñîçäàíèÿ òåõíîëîãè÷åñêèõ ïðîöåññîâ, êîíòåéíåðîâ, íåîáõîäèìûõ äëÿ ñòðóêòóðèðîâàíèÿ ïðèëîæåíèÿ, çàäà÷ òðàíñôîðìàöèè è ïðåîáðàçîâàíèÿ äàííûõ, à òàêæå ñâÿçåé, êîíòðîëèðóþùèõ ïîñëåäîâàòåëüíîñòü âûïîëíåíèÿ ïàêåòîâ òåõíîëîãè÷åñêèõ ïðîöåññîâ. Îáùèé âèä àðõèòåêòóðû DTR ïðèâåäåí íà ðèñ. 6.3.
6.1. Àðõèòåêòóðà è êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè
137
Îñíîâíûìè DTR-êîìïîíåíòàìè ÿâëÿþòñÿ êîíòåéíåð è çàäà÷à. Çàäà÷à â DTR — ýòî íàáîð DTR-êîìïîíåíòîâ. Êàæäàÿ çàäà÷à èìååò ñâîé ñîáñòâåííûé èñòî÷íèê äàííûõ è íàáîð ïðåîáðàçîâàíèé. Êîíòåéíåð â DTR ïðåäñòàâëÿåò ñîáîé íàáîð ñãðóïïèðîâàííûõ ïî îïðåäåëåííîìó ïðèçíàêó çàäà÷. Íàáîð êîíòåéíåðîâ è çàäà÷, êîòîðûå îáúåäèíåíû ïî îïðåäåëåííîìó ïðèçíàêó, ïðåäñòàâëÿåò ñîáîé ïàêåò. DTR-ïàêåò — ýòî ôèçè÷åñêàÿ åäèíèöà, êîòîðàÿ èñïîëüçóåòñÿ äëÿ ãðóïïèðîâêè íàáîðà ôóíêöèé ïåðåäà÷è è ïðåîáðàçîâàíèÿ äàííûõ ìåæäó çàäàííûìè èñòî÷íèêîì è ïîëó÷àòåëåì. Ïåðåìåùåíèå ïðèëîæåíèé ñåðâèñîâ èíòåãðàöèè ïðîèñõîäèò ñ ïîìîùüþ ïåðåíîñà îòäåëüíîãî ïàêåòà íà äðóãîé êîìïüþòåð. Íà ýòîì êîìïüþòåðå ïàêåò ðàçâåðòûâàåòñÿ, è ôóíêöèè, îïðåäåëåííûå â íåì, ìîãóò áûòü èñïîëüçîâàíû äëÿ ïåðåíîñà äàííûõ â äðóãîé ñèñòåìå. Áîëåå äåòàëüíàÿ èíôîðìàöèÿ îá èñïîëüçîâàíèè êîìïîíåíòîâ DTR áóäåò ïðèâåäåíà äàëåå â ðàçäåëå 6.1.3 «Êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè».
Ðèñ. 6.3. Îáùèé âèä àðõèòåêòóðû Data Transformation Runtime (DTR)
Îñíîâíûì ïðåäíàçíà÷åíèåì ÿäðà DTR ÿâëÿåòñÿ êîíòðîëü âûïîëíåíèÿ ïàêåòîâ ñåðâèñîâ èíòåãðàöèè. Ñ åãî ïîìîùüþ êîíòðîëèðóåòñÿ âûïîëíåíèå òåõíîëîãè÷åñêèõ ïðîöåññîâ (ïîñëåäîâàòåëüíîñòè çàäà÷), êîòîðûå ñîäåðæàòñÿ â ïàêåòàõ, à òàêæå õðàíåíèå èíôîðìàöèè î ïàêåòàõ, èõ âûïîëíåíèå, íàñòðîéêà, îáðàáîòêà îøèáîê è âåäåíèå ïðîòîêîëîâ âûïîëíåíèÿ. Ñ ïîìîùüþ ôóíêöèé, ðåàëèçîâàííûõ â ÿäðå DTR, ðàçðàáîò÷èêè ìîãóò êîíòðîëèðîâàòü ïðîöåññ äîñòóïà è óñòàíîâêè ñîåäèíåíèé ñ ïàêåòàìè ñåðâèñîâ èíòåãðàöèè è ñ÷èòûâàíèÿ îòäåëüíûõ ïåðåìåííûõ. Äîñòóï ê DTR îðãàíèçîâàí ñ ïîìîùüþ íàáîðà îáúåêòîâ DTR. Äàííûé íàáîð îáúåêòîâ ïðåäñòàâëÿåò ñîáîé íå ÷òî èíîå, êàê ïðîãðàììíûé èíòåðôåéñ (API) äëÿ ïîääåðæêè ôóíêöèé, âñòðîåííûõ â Integration Services Import/Export Wizard è Integration Services Designer. Òàêæå îí ïîçâîëÿåò ðàñøèðèòü ôóíêöèè óòèëèòû DTEXEC, êîòîðàÿ âûïîëíÿåòñÿ ÷åðåç êîìàíäíóþ ñòðîêó. ßäðî DTR ñîçäàíî ñ èñïîëüçîâàíèåì ÿçûêà Ñ++, âñëåäñòâèå ÷åãî ïðîãðàììíûé èíòåðôåéñ DTR
138
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
ïîääåðæèâàåò íàáîð êîìàíä íà Ñ++, à òàêæå ñáîðêè .NET. Ïîñëåäíÿÿ ôóíêöèÿ ïðåäîñòàâëÿåò ðàçðàáîò÷èêàì âîçìîæíîñòü âñòðàèâàòü âûçîâû ôóíêöèé DTR èç ïðèëîæåíèé, íàïèñàííûõ íà îäíîì èç ÿçûêîâ ñðåäû .NET. Áëàãîäàðÿ ýòîìó ïðèëîæåíèÿ, êîòîðûå âûçûâàþò ôóíêöèè API DTR, ìîãóò ñîçäàâàòü íîâûå ïàêåòû DTR, íàñòðàèâàòü èõ ïàðàìåòðû è óäàëÿòü.
6.1.3. Êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè Ïàêåò ñåðâèñîâ èíòåãðàöèè — ýòî íå ÷òî èíîå, êàê êîëëåêöèÿ DTR- è DTP-êîìïîíåíòîâ. Äàííûé ïàêåò ïðåäñòàâëÿåò ñîáîé íàèìåíüøóþ ïðîãðàììíóþ åäèíèöó, êîòîðàÿ èñïîëüçóåòñÿ äëÿ ðàçâåðòûâàíèÿ ïðèëîæåíèé ñåðâèñîâ ïðåîáðàçîâàíèÿ äàííûõ. Èíûìè ñëîâàìè, äëÿ òîãî ÷òîáû ðåàëèçîâàòü íàáîð îïåðàöèé ïî ïåðåìåùåíèþ è ïðåîáðàçîâàíèÿ äàííûõ, ñíà÷àëà íåîáõîäèìî ñîçäàòü ïàêåò, ñîäåðæàùèé âñå íåîáõîäèìûå êîìïîíåíòû DTP, îïðåäåëèòü èñòî÷íèêè äàííûõ îòïðàâèòåëÿ è ïîëó÷àòåëÿ, à òàêæå ïðåîáðàçîâàíèå, êîòîðîå áóäåò âûïîëíÿòüñÿ íàä ïåðåìåùàåìûìè äàííûìè. Ïðè íåîáõîäèìîñòè ìîæíî òàêæå îïðåäåëèòü â äàííîì ïàêåòå íàáîð òåõíîëîãè÷åñêèõ ïðîöåññîâ èëè ïîñëåäîâàòåëüíîñòè çàäà÷, êîòîðûå áóäóò âûïîëíÿòüñÿ íàä äàííûìè. Ïîñëå ñîçäàíèÿ ïàêåòà íåîáõîäèìî åãî âûïîëíèòü, ÷òîáû îïèñàííûå îïåðàöèè áûëè âûïîëíåíû â ñèñòåìå. Ïðèìåð ïàêåòà ñåðâèñà èíòåãðàöèè ïðèâåäåí íà ðèñ. 6.4.
Ðèñ. 6.4. Ïðèìåð ïàêåòà ñåðâèñîâ èíòåãðàöèè
Ïàêåò ñåðâèñîâ èíòåãðàöèè ìîæåò áûòü ñîçäàí ñ ïîìîùüþ ïðîãðàììíûõ ñðåäñòâ, êîòîðûå èìåþòñÿ â SQL Server 2005, èëè ñ ïîìîùüþ ïðîãðàììíîãî èíòåðôåéñà DTR. Äëÿ õðàíåíèÿ ïàêåòîâ ñåðâèñîâ èíòåãðàöèè èñïîëüçóåòñÿ áàçà äàííûõ SQL Server èëè íàáîð XML-ôàéëîâ. Áîëåå äåòàëüíî ïàêåò ñåðâèñîâ èíòåãðàöèè è èíñòðóìåíòû äëÿ åãî ñîçäàíèÿ ìû ðàññìîòðèì â ðàçäåëå 6.3 «Èíñòðóìåíòû ðàáîòû ñ ïàêåòàìè».
6.1.4. Ïðåèìóùåñòâà ñåðâèñîâ èíòåãðàöèè  íîâîé âåðñèè ñåðâèñîâ àíàëèòèêè ïîÿâèëèñü íåñêîëüêî ïðåèìóùåñòâ ïî ñðàâíåíèþ ñ ñåðâèñàìè ïðåîáðàçîâàíèÿ äàííûõ, êîòîðûå ñóùåñòâîâàëè â SQL Server 7.0 è 2000.  ïåðâóþ î÷åðåäü ýòî êîñíóëîñü íîâûõ ìåõàíèçìîâ ïðåîáðàçîâàíèÿ äàííûõ. Íîâûé íàáîð ñåðâèñîâ èíòåãðàöèè íåëüçÿ íàçâàòü ìîùíîé ñèñòåìîé àâòîìàòèçàöèè äîêóìåíòîîáîðîòà è áèçíåñ-ïðîöåññîâ, íî êîëè÷åñòâî ôóíêöèé
6.1. Àðõèòåêòóðà è êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè
139
óïðàâëåíèÿ òåõíîëîãè÷åñêèìè ïðîöåññàìè çíà÷èòåëüíî óâåëè÷èëîñü. Ýòî ìîæåò ãîâîðèòü òîëüêî î òîì, ÷òî Microsoft âñå áîëåå àêòèâíî ïûòàåòñÿ ïðîäâèãàòü ñâîè ïðîãðàììíûå ïðîäóêòû íà êîðïîðàòèâíûé ðûíîê.  ñëåäóþùèõ ðàçäåëàõ ìû ðàññìîòðèì, êàêèå óëó÷øåíèÿ ïîÿâèëèñü â ñåðâèñàõ èíòåãðàöèè SQL Server 2005.
6.1.5. Íàñòðîéêà ñâîéñòâ ïàêåòîâ Îäíèì èç îñíîâíûõ îãðàíè÷åíèé, êîòîðîå ìåøàëî ñîçäàâàòü ãèáêèå ïðèëîæåíèÿ ñåðâèñîâ ïðåîáðàçîâàíèÿ äàííûõ, ÿâëÿëîñü îòñóòñòâèå ìåõàíèçìà äëÿ íàñòðîéêè èñòî÷íèêà è ïîëó÷àòåëÿ äàííûõ âûáðàííîãî ïàêåòà. Èñòî÷íèê è ïîëó÷àòåëü äàííûõ áûëè «çàøèòû» â ïðîãðàììíûé êîä, ÷òî óñëîæíÿëî ïðîöåññ ïåðåíîñà îòäåëüíûõ ïàêåòîâ â äðóãèå ïðîãðàììíûå ñèñòåìû. Ïåðåíîñ áûë ñëîæåí äàæå â òåõ ñëó÷àÿõ, êîãäà â ñèñòåìå èñïîëüçîâàëàñü áàçà äàííûõ àíàëîãè÷íîãî òèïà. ×òî êàñàåòñÿ ïåðåíîñà ïàêåòà â ñèñòåìû ñ áàçàìè äàííûõ äðóãîãî òèïà, òî â ýòîì ñëó÷àå ïàêåòû òðåáîâàëè äîïîëíèòåëüíîé äîðàáîòêè.  íåêîòîðûõ ñëó÷àÿõ ïîäîáíîå îãðàíè÷åíèå ìîæíî áûëî îáîéòè, èñïîëüçóÿ ãëîáàëüíûå ïåðåìåííûå, êîòîðûå ïîçâîëÿëè íàñòðîèòü ïàðàìåòðû èñòî÷íèêà è ïîëó÷àòåëÿ äàííûõ. Îäíàêî ãëîáàëüíûå ïåðåìåííûå íå âñåãäà ìîãëè áûòü èñïîëüçîâàíû äëÿ ðåøåíèÿ ïðîáëåì òàêîãî òèïà.  íîâîé âåðñèè ñåðâèñîâ èíòåãðàöèè SQL Server îäèí ïàêåò ìîæåò ïîääåðæèâàòü íåñêîëüêî èñòî÷íèêîâ äàííûõ è íåñêîëüêî ïîëó÷àòåëåé. Äëÿ íàñòðîéêè ïàðàìåòðîâ èñòî÷íèêîâ è ïîëó÷àòåëåé äàííûõ òåïåðü ìîæåò èñïîëüçîâàòüñÿ íåñêîëüêî ñïîñîáîâ: · ÷òåíèå êëþ÷åé ðååñòðà; · ÷òåíèå XML-ôàéëîâ; · ñ÷èòûâàíèå ïàðàìåòðîâ èç êîíôèãóðàöèîííûõ ôàéëîâ (INI- èëè CFGôàéëîâ).
6.1.6. Ïðîòîêîëèðîâàíèå Â ïðåäûäóùåé âåðñèè ñåðâèñîâ èíòåãðàöèè íå ïîääåðæèâàëñÿ ìåõàíèçì ïðîòîêîëèðîâàíèÿ, ÷òî óñëîæíÿëî ïðîöåññ îòñëåæèâàíèÿ âûïîëíåíèÿ ïðèëîæåíèÿ, îòëàâëèâàíèÿ îøèáîê è ïîñëåäîâàòåëüíîñòè âûïîëíåíèè îïåðàöèé. Â íîâîé âåðñèè ñåðâèñîâ èíòåãðàöèè èìååòñÿ âñòðîåííûé ìåõàíèçì ïðîòîêîëèðîâàíèÿ, ÷òî ïîçâîëÿåò ïðîòîêîëèðîâàòü âûïîëíåíèå çàäà÷, ïàêåòîâ è ïðåîáðàçîâàíèé. Ýòî ïîìîãàåò â îòñëåæèâàíèè îøèáîê, à òàêæå â ïðîöåññå àóäèòà ñèñòåìû.
6.1.7. Êîíòðîëüíûå òî÷êè Äàííîå óëó÷øåíèå êîñíóëîñü íåïîñðåäñòâåííî ïàêåòîâ. Òåïåðü â ïàêåòû ñåðâèñîâ èíòåãðàöèè ìîæíî âñòàâëÿòü êîíòðîëüíûå òî÷êè. Ýòîò ìåõàíèçì ïîçâîëÿåò èñïîëüçîâàòü íåñêîëüêî êîíòðîëüíûõ òî÷åê âíóòðè ïàêåòà è ñâÿçàòü êàæäóþ êîíòðîëüíóþ òî÷êó ñ îïðåäåëåííûì ýòàïîì âûïîëíåíèÿ ïàêåòà (íàïðèìåð, ñ çàâåðøåíèåì ýòàïîâ ÷òåíèÿ äàííûõ, ïðåîáðàçîâàíèÿ èëè çàïèñè â áàçó äàííûõ
140
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
ïîëó÷àòåëÿ). Èñïîëüçîâàíèå êîíòðîëüíûõ òî÷åê âíóòðè ïàêåòà äàåò ðàçðàáîò÷èêó åùå îäíî ïðåèìóùåñòâî: âî âðåìÿ îòëàäêè ïðèëîæåíèÿ åìó íåò íåîáõîäèìîñòè çàïóñêàòü ïðèëîæåíèå ñ ñàìîãî íà÷àëà, à ìîæíî âîñïîëüçîâàòüñÿ ðåçóëüòàòàìè, ïîëó÷åííûìè â ïîñëåäíåé êîíòðîëüíîé òî÷êå, äî êîòîðîé ïðèëîæåíèå âûïîëíÿëîñü ïî çàäàííîìó àëãîðèòìó. Òåïåðü ïðèëîæåíèå ìîæåò áûòü çàïóùåíî ñ òîé êîíòðîëüíîé òî÷êè, ïîñëå êîòîðîé âîçíèêëè îøèáêè. Äëÿ áîëüøèõ ïàêåòîâ ýòî îòëè÷íàÿ âîçìîæíîñòü óñòàíàâëèâàòü â ïðîöåññå îòëàäêè êîíòðîëüíûå òî÷êè, ÷òîáû îòñëåæèâàòü ïðîöåññ âûïîëíåíèÿ ïàêåòà.  êîìáèíàöèè ñ ìåõàíèçìîì îáðàáîòêè ñîáûòèé èñïîëüçîâàíèå êîíòðîëüíûõ òî÷åê ïîçâîëÿåò ñîçäàâàòü äîñòàòî÷íî ñëîæíûå ïðèëîæåíèÿ, êîòîðûå áóäóò â àâòîìàòè÷åñêîì ðåæèìå óñòðàíÿòü îøèáêè è ïðîäîëæàòü âûïîëíåíèå ïàêåòà.
6.1.8. Ïåðåìåííûå Ïîääåðæêà ïåðåìåííûõ — ýòî åùå îäíî óëó÷øåíèå, êîòîðîå êîñíóëîñü ñåðâèñîâ èíòåãðàöèè SQL Server 2005.  ïðåäûäóùèõ âåðñèÿõ ñåðâèñîâ èíòåãðàöèè ïîääåðæèâàëèñü ïåðåìåííûå òîëüêî äëÿ èñïîëüçîâàíèÿ â ñöåíàðèÿõ, îäíàêî ïîääåðæêè ïåðåìåííûõ äëÿ ïàêåòîâ íå áûëî. Ýòîò íåäîñòàòîê ïðèâåë ê óñëîæíåíèþ ïðîöåññà ïîâòîðíîãî èñïîëüçîâàíèÿ ïàêåòîâ, ïîñêîëüêó ïðè ïåðåíîñå ïàêåòîâ èçìåíÿþòñÿ íåêîòîðûå ïàðàìåòðû (íàïðèìåð, èñòî÷íèê è ïîëó÷àòåëü äàííûõ), äëÿ êîòîðûõ æåëàòåëüíî èñïîëüçîâàòü ïåðåìåííûå. Ïðè ïåðåíîñå òàêèõ ïàêåòîâ ïåðåìåííûå áóäóò ðåäàêòèðîâàòüñÿ, ÷òî óïðîñòèò ñàì ïðîöåññ ïåðåíîñà. Íåäîñòàòîê ïåðåìåííûõ ïàêåòà òàêæå ñêàçûâàåòñÿ â ñëó÷àå èñïîëüçîâàíèÿ íåñêîëüêèõ ñåðâåðîâ áàç äàííûõ, ïîñêîëüêó îäíî ïðèëîæåíèå ìîæåò â îïðåäåëåííûå ìîìåíòû âðåìåíè âûïîëíÿòü ñ÷èòûâàíèå äàííûõ èç îïåðàòèâíîé áàçû äàííûõ, à â äðóãèå — èç áàçû äàííûõ äëÿ àðõèâíîãî õðàíåíèÿ.  íîâîé âåðñèè SQL Server ïîääåðæèâàåòñÿ íàáîð ïåðåìåííûõ äëÿ íàñòðîéêè çàäà÷, ïàêåòîâ è ñîáûòèé. Ýòî äàåò äîïîëíèòåëüíóþ ãèáêîñòü ñîçäàâàåìûì ïàêåòàì, à ñëåäîâàòåëüíî, áóäåò âîñòðåáîâàíî ðàçðàáîò÷èêàìè íîâûõ ïàêåòîâ. Ïåðåìåííûå ïàêåòà — ýòî ñâîåãî ðîäà ãëîáàëüíûå ïåðåìåííûå äëÿ âñåãî ïàêåòà. Ýòî îçíà÷àåò, ÷òî çíà÷åíèÿ äàííûõ ïåðåìåííûõ ìîãóò áûòü ñ÷èòàíû ëþáûì èç êîìïîíåíòîâ, âõîäÿùèõ â ñîñòàâ ïàêåòà. ×òî êàñàåòñÿ ïåðåìåííûõ, îïðåäåëåííûõ äëÿ îòäåëüíûõ çàäà÷, ïàêåòîâ è ñîáûòèé, òî îíè áóäóò âèäíû òîëüêî âíóòðè òîãî êëàññà, ê êîòîðîìó îíè îòíîñÿòñÿ, è íå ìîãóò èñïîëüçîâàòüñÿ äðóãèìè êîìïîíåíòàìè. Ïðèìåðîì èñïîëüçîâàíèÿ ïåðåìåííîé ïàêåòà ìîæåò ñëóæèòü ïàêåò, â êîòîðîì â êà÷åñòâå ïåðåìåííîé èñïîëüçóåòñÿ èìÿ ñåðâåðà SQL, íà êîòîðîì óñòàíîâëåí ïàêåò. Èçìåíèâ çíà÷åíèå äàííîé ïåðåìåííîé, ìîæíî áûñòðî ïåðåíåñòè ýòîò ïàêåò íà äðóãóþ ñèñòåìó è çàïóñòèòü åãî ñ èñïîëüçîâàíèåì äðóãîãî ñåðâåðà SQL. Ïðàêòè÷åñêè âñå ïàêåòû ñåðâèñîâ èíòåãðàöèè èìåþò íàáîð âñòðîåííûõ ñèñòåìíûõ ïåðåìåííûõ, êîòîðûå èñïîëüçóþòñÿ êàê ñàìîé ñèñòåìîé, òàê è ðàçðàáîò÷èêàìè, ñîçäàþùèìè ïåðåíîñèìûå è íàñòðàèâàåìûå ïàêåòû.  òàáë. 6.1 ïðèâåäåí ñïèñîê ñèñòåìíûõ ïåðåìåííûõ, êîòîðûå ìîãóò èñïîëüçîâàòüñÿ ïðè ðàçðàáîòêå ïðèëîæåíèé ñåðâèñîâ èíòåãðàöèè.
6.1. Àðõèòåêòóðà è êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè
141
Òàáëèöà 6.1. Ñèñòåìíûå ïåðåìåííûå ñåðâèñîâ èíòåãðàöèè Íàèìåíîâàíèå
Îïèñàíèå
BreakpointTargetDescription
Îïèñàíèå òî÷êè îñòàíîâà
Cancel
Ñîäåðæèò çíà÷åíèå, ãîâîðÿùåå î òîì, ìîæåò ëè âûïîëíåíèå ïàêåòà áûòü îñòàíîâëåíî
CountDone
Ñ÷åò÷èê ïðîãðåññà âûïîëíåíèÿ
ÑreationDate
Äàòà ñîçäàíèÿ ïàêåòà
CreatorComputerName
Èìÿ êîìïüþòåðà, íà êîòîðîì ñîçäàâàëñÿ ïàêåò
CreatorName
Èìÿ ïîëüçîâàòåëÿ, êîòîðûé ñîçäàâàë ïàêåò
CustomEventDescription
Îïèñàíèå ïîëüçîâàòåëüñêîãî ñîáûòèÿ
CustomEventlnfo
Èíôîðìàöèÿ ïîëüçîâàòåëüñêîãî ñîáûòèÿ
CustomEventName
Èìÿ ïîëüçîâàòåëüñêîãî ñîáûòèÿ
Custom EventValue
Çíà÷åíèå ïîëüçîâàòåëüñêîãî ñîáûòèÿ
CustomEventGUID
Îïèñàíèå ïîëüçîâàòåëüñêîãî ñîáûòèÿ GUID
ErrorCode
Êîä îøèáêè
ErrorDescription
Îïèñàíèå îøèáêè
Execution InstanceGuid
Çíà÷åíèå GUID äëÿ èäåíòèôèêàöèè òåêóùåãî ýêçåìïëÿðà ïàêåòà
ExecutionStatus
Ñòàòóñ èñïîëíåíèÿ ïàêåòà
LocalId
Èäåíòèôèêàöèîííûé êîä ëîêàëèçàöèè (êîä ÿçûêà)
MachineName
Èìÿ êîìïüþòåðà, íà êîòîðîì â äàííûé ìîìåíò âûïîëíÿåòñÿ ïàêåò
MaxCount
Ìàêñèìàëüíîå ÷èñëî ýêçåìïëÿðîâ äëÿ ïåðåäà÷è
Pockageld
Èäåíòèôèêàòîð òåêóùåãî ïàêåòà
PackageName
Òåêóùåå èìÿ ïàêåòà
PercentComplete
Òåêóùèé ñòàòóñ âûïîëíåíèÿ ïàêåòà
ProgressCountHigh
Ìàêñèìàëüíîå çíà÷åíèå ñòàòóñà âûïîëíåíèÿ ïàêåòà
ProgressCountLow
Ìèíèìàëüíîå çíà÷åíèå ñòàòóñà âûïîëíåíèÿ ïàêåòà
ProgressDescription
Îïèñàíèå õîäà âûïîëíåíèÿ ïàêåòà
ProgressEvent
Èäåíòèôèêàòîð ñîáûòèÿ
Propagate
Ïîêàçûâàåò, ìîæåò ëè ñîáûòèå ðàñïðîñòðàíÿòüñÿ ìåæäó äðóãèìè ïàêåòàìè
SourceDescription
Îïèñàíèå èñòî÷íèêà ñîáûòèé
SourceID
Èäåíòèôèêàòîð èñòî÷íèêà ñîáûòèé
SourceName
Èìÿ èñòî÷íèêà ñîáûòèé
StartTime
Âðåìÿ íà÷àëà âûïîëíåíèÿ ïàêåòà
TaskID
Èäåíòèôèêàòîð çàäà÷è
TaskName
Èìÿ çàäà÷è
UserName
Èìÿ ïîëüçîâàòåëÿ, êîòîðûé çàïóñòèë äàííûé ïàêåò
VersionBuild
Íîìåð âåðñèè ïàêåòà
VersionComment
Êðàòêîå îïèñàíèå ïàêåòà
VersionGUID
Èäåíòèôèêàòîð ïàêåòà
VersionMajor
Îñíîâíîé íîìåð âåðñèè ïàêåòà
VersionMinor
Âòîðè÷íûé íîìåð âåðñèè ïàêåòà
142
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
6.1.9. Çàäà÷è Çàäà÷è ñåðâèñîâ èíòåãðàöèè — ýòî îäèí èç îñíîâíûõ ýëåìåíòîâ, íà îñíîâå êîòîðîãî ñòðîèòñÿ ôóíêöèîíàëüíîñòü âñåãî ìîäóëÿ ñåðâèñîâ. Çàäà÷à ñåðâèñîâ èíòåãðàöèè èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ è îïèñàíèÿ äåéñòâèÿ, êîòîðîå áóäåò âûïîëíÿòüñÿ ïðèëîæåíèåì. Äàííûå äåéñòâèÿ ìîãóò áûòü êàê ïðîñòûìè (òàêèìè, êàê ÷òåíèå è êîäèðîâàíèå äàííûõ èñòî÷íèêà ïðè ïåðåñûëêå ïîëó÷àòåëþ äàííûõ), òàê è äîñòàòî÷íî ñëîæíûìè (íàïðèìåð, ïåðåäà÷à ôàéëà ÷åðåç FTP è çàïóñê ñöåíàðèÿ ActiveX). Äëÿ âûïîëíåíèÿ îïðåäåëåííûõ äåéñòâèé ñ íàáîðîì ñâÿçàííûõ çàäà÷ èñïîëüçóþòñÿ êîíòåéíåðû.  òàáë. 6.2 ïðèâåäåí ïîëíûé ñïèñîê çàäà÷, êîòîðûå ìîãóò èñïîëüçîâàòüñÿ ïðè ðàçðàáîòêå ïàêåòîâ ñåðâèñîâ èíòåãðàöèè SQL Server 2005. Òàáëèöà 6.2. Çàäà÷è ñåðâèñîâ èíòåãðàöèè SQL Server 2005 Íàèìåíîâàíèå çàäà÷è
Îïèñàíèå
ActiveX Script Task
Âûïîëíÿåò ñöåíàðèé ActiveX, êîòîðûé â ñâîþ î÷åðåäü âûïîëíÿåò îïðåäåëåííîå äåéñòâèå â ñèñòåìå
Analysis Services Execute DDL Task
Èñïîëüçóåòñÿ äëÿ âûïîëíåíèÿ DDL-êîìàíäû
Analysis Services Processing Task
Èñïîëüçóåòñÿ äëÿ îáðàáîòêè îáúåêòà ñåðâèñà àíàëèòèêè
Bulk Insert Task
Âûïîëíÿåò âñòàâêó äàííûõ èç òåêñòîâîãî ôàéëà â òàáëèöó
Data Flow Task
Êîïèðóåò è ïðåîáðàçîâûâàåò äàííûå ìåæäó èñòî÷íèêîì äàííûõ è ïîëó÷àòåëåì
Data Mining Query Task
Âûïîëíÿåò çàïðîñû èíôîðìàöèîííîé ïðîõîäêè
Execute Package Task
Èñïîëüçóåòñÿ äëÿ çàïóñêà äðóãèõ ïàêåòîâ
Execute Process Task
Èñïîëüçóåòñÿ äëÿ âûïîëíåíèÿ ïðîãðàììû èëè ñöåíàðèÿ
Execute SQL Task
Èñïîëüçóåòñÿ äëÿ âûïîëíåíèÿ SQL-êîìàíäû
File System Task
Èñïîëüçóåòñÿ äëÿ âûïîëíåíèÿ îïðåäåëåííîãî äåéñòâèÿ â îïåðàöèîííîé ñèñòåìå
File Transfer Protocol Task
Âûïîëíÿåò ïåðåäà÷ó äàííûõ ñ èñïîëüçîâàíèåì ïðîòîêîëà FTP
Message Queue Task
Âûïîëíÿåò îòïðàâêó è ïîëó÷åíèå äàííûõ èç î÷åðåäè ñîîáùåíèé MSMQ (Microsoft Message Queue)
Script Task
Èñïîëüçóåòñÿ äëÿ âûïîëíåíèÿ ñöåíàðèÿ, êîòîðûé íàïèñàí íà ÿçûêå VB.NET
Send Mail Task
Âûïîëíÿåò îòïðàâêó ýëåêòðîííîãî ñîîáùåíèÿ
XML Task
Âûïîëíÿåò äîñòóï è ÷òåíèå äàííûõ èç XML-ôàéëà
6.1.10. Óïðàâëåíèå ïðîöåññàìè Ñåðâåðû èíòåãðàöèè SQL Server 2005 ïîääåðæèâàþò êîìïëåêñíîå óïðàâëåíèå ïðîöåññàìè. Ýòî îçíà÷àåò, ÷òî âíóòðè êàæäîãî ïàêåòà âû ìîæåòå îïðåäåëèòü äåéñòâèÿ, êîòîðûå áóäóò âûïîëíÿòüñÿ ïîñëå óñïåøíîãî çàâåðøåíèÿ âûïîëíåíèÿ ïàêåòà èëè ïðè âîçíèêíîâåíèè îøèáêè. Ïîñëå òîãî êàê îáðàáîòêà ïàêåòà áóäåò çàêîí÷åíà, ñåðâèñ ïåðåéäåò ê âûïîëíåíèþ òîãî äåéñòâèÿ, êîòîðîå âû îïðåäåëèëè. Íàïðèìåð, ïîñëå óñïåøíîãî çàâåðøåíèÿ âûïîëíåíèÿ ïàêåòà âû ìîæåòå çàäàòü ñåðâèñàì èíòåãðàöèè âûïîëíèòü åùå îäèí ïàêåò.  òîì ñëó÷àå, åñëè âîçíèêëà
6.1. Àðõèòåêòóðà è êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè
143
îøèáêà èëè âûïîëíåíèå ïàêåòà áûëî ïðèîñòàíîâëåíî ïî êàêèì-ëèáî ïðè÷èíàì, ìîæíî âûâåñòè ñîîòâåòñòâóþùåå ñîîáùåíèå íà ýêðàí êîìïüþòåðà èëè âûïîëíèòü îïðåäåëåííîå äåéñòâèå. Áîëåå äåòàëüíî ïðîöåññ îáðàáîòêè îøèáîê ìû ðàññìîòðèì â ðàçäåëå 6.1.17 «Îáðàáîò÷èêè ñîáûòèé». Óïðàâëåíèå âûïîëíåíèåì ïðîöåññîâ ìîæåò èñïîëüçîâàòüñÿ òàêæå äëÿ îáåñïå÷åíèÿ âûïîëíåíèÿ íåñêîëüêèõ îäíîâðåìåííûõ ïðîöåññîâ, ÷òî ñîêðàòèò íå òîëüêî âðåìÿ, íî è çàòðàòû òðóäà. Äëÿ ïîñëåäîâàòåëüíîãî âûïîëíåíèÿ ïàêåòîâ íåîáõîäèìî òîëüêî çàäàòü èõ ïîðÿäîê. Ïîñëå óñïåøíîãî îêîí÷àíèÿ âûïîëíåíèÿ îäíîãî ïàêåòà áóäåò çàïóùåíî âûïîëíåíèå ñëåäóþùåãî, è òàê äàëåå.  ñåðâèñàõ èíòåãðàöèè ïðåäóñìîòðåíî íàëè÷èå îòäåëüíîãî êîíòåéíåðà äëÿ ãðóïïèðîâàíèÿ ñâÿçàííûõ çàäà÷ ñåðâèñîâ èíòåãðàöèè. Êàæäûé êîíòåéíåð ìîæåò èìåòü âíóòðåííåå óïðàâëåíèå âûïîëíåíèåì ïðîöåññîâ, ÷òî ïîçâîëÿåò ñèíõðîíèçèðîâàòü âûïîëíåíèå çàäà÷, à òàêæå íàáîð âíóòðåííèõ ïåðåìåííûõ äëÿ íàñòðîéêè. Ïîìèìî ýòîãî èìååòñÿ öåëûé íàáîð ñðåäñòâ äëÿ íàñòðîéêè ïîâòîðÿþùèõñÿ ñîáûòèé. Ýòî ïîçâîëÿåò ìàêñèìàëüíî ïðèáëèçèòü ñîçäàíèå çàäà÷ ê ñòàíäàðòíûì ñðåäñòâàì ðàçðàáîòêè ïðîãðàììíûõ ïðèëîæåíèé. Äëÿ âûïîëíåíèÿ ïîâòîðíûõ îïåðàöèé èñïîëüçóåòñÿ êîíòåéíåð For Each Loop. Îí ïîçâîëÿåò âûïîëíÿòü îäèíàêîâûå äåéñòâèÿ äëÿ ãðóïïû îáúåêòîâ, êîòîðûå ñîäåðæàòñÿ âíóòðè íåãî. Ïîìèìî ýòîãî èìååòñÿ êîíòåéíåð For Loop, êîòîðûé ìîæåò âûïîëíÿòü ïîâòîðÿþùååñÿ äåéñòâèå äëÿ ãðóïïû îáúåêòîâ îïðåäåëåííîå ÷èñëî ðàç. Ïîëíûé ñïèñîê êîíòåéíåðîâ áóäåò ïðèâåäåí â ðàçäåëå 6.1.13 «Êîíòåéíåðû». Êàê ãîâîðèëîñü ðàíåå â ýòîì ðàçäåëå, ìîæíî íàñòðàèâàòü íå òîëüêî ïîñëåäîâàòåëüíîñòü äåéñòâèé, êîòîðûå áóäóò âûïîëíÿòüñÿ â ðåçóëüòàòå óñïåøíîãî âûïîëíåíèÿ ïàêåòà, íî è äåéñòâèÿ, âûïîëíÿåìûå ïðè âîçíèêíîâåíèè îøèáîê. Äàííàÿ ôóíêöèîíàëüíîñòü ïîçâîëÿåò äîáàâèòü îáðàáîòêó îøèáîê, êîòîðûå âîçíèêàþò â ïðîöåññå âûïîëíåíèÿ ïàêåòà. Ïðèìåðîì îáðàáîòêè îøèáîê, âîçíèêàþùèõ â ïðîöåññå ðàáîòû ñåðâèñà èíòåãðàöèè, ìîæåò ÿâëÿòüñÿ ñ÷èòûâàíèå îøèáî÷íûõ ñòðîê.  ïðåäûäóùèõ âåðñèÿõ ñåðâèñîâ èíòåãðàöèè ñòðîêè ñ îøèáî÷íûìè çíà÷åíèÿìè íå ìîãëè îáðàáàòûâàòüñÿ, ÷òî ïðèâîäèëî ê îñòàíîâêå â ðàáîòå ñåðâèñîâ.  íîâîé âåðñèè âîçìîæíà îáðàáîòêà âîçíèêàþùèõ îøèáîê áëàãîäàðÿ íàñòðîéêå ïðîöåññà îáðàáîòêè îøèáîê.
6.1.11. Ðåæèìû ðàáîòû  ñåðâèñàõ ïðåîáðàçîâàíèÿ äàííûõ SQL Server 2000 èìåëñÿ ìàñòåð äëÿ âûïîëíåíèÿ ïðîñòåéøèõ îïåðàöèé ïî èìïîðòó è ýêñïîðòó äàííûõ, à òàêæå äèçàéíåð DTS, êîòîðûé èñïîëüçîâàëñÿ äëÿ ðåøåíèÿ áîëåå ñëîæíûõ çàäà÷ èìïîðòà è ýêñïîðòà äàííûõ.  íîâîé âåðñèè SQL Server ñåðâèñû èíòåãðàöèè ïîääåðæèâàþò îáà ïåðå÷èñëåííûõ ðåæèìà ðàáîòû. Ïðè ýòîì ïåðâûé ðåæèì íîñèò íàçâàíèå «ïðÿìîé ìåòîä» (áûñòðîå âûïîëíåíèå çàïðîñîâ), à âòîðîé — «ïðîåêòíûé ðåæèì» (ñîçäàíèå ïðèëîæåíèÿ äëÿ ÷òåíèÿ, ïðåîáðàçîâàíèÿ è çàïèñè äàííûõ â áàçó äàííûõ). Äëÿ ñîçäàíèÿ íåáîëüøèõ ïðèëîæåíèé è áûñòðîãî âûïîëíåíèÿ îïåðàöèé ýêñïîðòà-èìïîðòà â ñåðâèñàõ èíòåãðàöèè SQL Server 2005 èñïîëüçóåòñÿ óòèëèòà Import/ Export Wizard. Îíà ïîçâîëÿåò ñîçäàâàòü, èñïîëíÿòü è ïðè íåîáõîäèìîñòè ñîõðàíÿòü
144
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
ïðîñòåéøèå çàïðîñû ê áàçå äàííûõ.  îòíîøåíèè äàííîé óòèëèòû íèêàêèõ êàðäèíàëüíûõ èçìåíåíèé íå íàáëþäàåòñÿ. Îíà ðàáîòàåò è èìååò âèä, àíàëîãè÷íûé ïîäîáíîé óòèëèòå â ñåðâèñàõ ïðåîáðàçîâàíèÿ äàííûõ SQL Server 2000. Ïðîåêòíûé ðåæèì ñåðâèñîâ èíòåãðàöèè SQL Server 2005 òàê æå, êàê è â ïðåäûäóùåé âåðñèè ñåðâåðà SQL, ìîæåò èñïîëüçîâàòüñÿ äëÿ ñîçäàíèÿ áîëåå ñëîæíûõ ïðèëîæåíèé. Äëÿ ñîçäàíèÿ òàêèõ ïðèëîæåíèé õîðîøî ïîäõîäèò Business Intelligence Development Studio — ýòî ïðèëîæåíèå, êîòîðîå ñîäåðæèò âñòðîåííóþ óòèëèòó Integration Services Designer è ìîæåò èñïîëüçîâàòüñÿ äëÿ ñîçäàíèÿ ñëîæíûõ ïðèëîæåíèé èìïîðòà, ýêñïîðòà è ïðåîáðàçîâàíèÿ äàííûõ. Íîâàÿ âåðñèÿ äèçàéíåðà ñåðâèñîâ èíòåãðàöèè ïîääåðæèâàåò íàáîð îáðàáîò÷èêîâ ñîáûòèé ïîòîêîâ äàííûõ, òåõíîëîãè÷åñêèõ ïðîöåññîâ è äð. Åùå îäíèì óëó÷øåíèåì äèçàéíåðà ñåðâèñîâ èíòåãðàöèè SQL Server ÿâëÿåòñÿ ñîçäàíèå íîâûõ èíñòðóìåíòîâ äëÿ íàëàäêè ðàáîòû ïàêåòîâ, ÷òî ïîçâîëÿåò âíåäðèòü ìåõàíèçìû òîòàëüíîãî êîíòðîëÿ â ïðîöåññ ðàçðàáîòêè ïàêåòîâ ñåðâèñîâ èíòåãðàöèè. Áîëåå äåòàëüíî äèçàéíåð ñåðâèñîâ èíòåãðàöèè SQL Server 2005 áóäåò ðàññìîòðåí íàìè â ðàçäåëå 6.2.2 «Äèçàéíåð ñåðâèñîâ èíòåãðàöèè».
6.1.12. Öèôðîâàÿ ïîäïèñü  íîâîé âåðñèè ñðåäû ðàçðàáîòêè Microsoft .NET Framework ïîÿâèëñÿ íîâûé ìåòîä äëÿ öèôðîâîé ïîäïèñè äîêóìåíòîâ, ïàêåòîâ, ñîîáùåíèé è äðóãèõ ýëåìåíòîâ, â êîòîðûå áóäåò âñòðîåí âûçîâ äàííîãî ìåòîäà. Áëàãîäàðÿ èíòåãðàöèè ñ íîâîé âåðñèåé Microsoft .NET äàííàÿ ôóíêöèîíàëüíîñòü ñòàëà äîñòóïíà â SQL Server 2005. Äëÿ ñåðâèñîâ èíòåãðàöèè ýòà ôóíêöèîíàëüíîñòü ñòàíîâèòñÿ îñîáåííî àêòóàëüíîé: ïàêåòû, ñîçäàííûå ñ èñïîëüçîâàíèåì íàáîðà èíñòðóìåíòîâ, ìîãóò èìåòü öèôðîâóþ ïîäïèñü. Ïðè ýòîì íà êîìïüþòåðå ïåðåä çàïóñêîì ïîäîáíîãî ïàêåòà áóäåò âûïîëíÿòüñÿ ïðîâåðêà öèôðîâîé ïîäïèñè.  ñëó÷àå åñëè îíà íå âûçûâàåò ñîìíåíèé, ïàêåò ìîæåò áûòü âûïîëíåí íà êîìïüþòåðå, â îáðàòíîì ñëó÷àå — áóäåò âûïîëíÿòüñÿ äåéñòâèå, êîòîðîå ðàçðåøåíî òåêóùèì óðîâíåì áåçîïàñíîñòè. Ïîäïèñü ïàêåòà âûïîëíÿåòñÿ â ïðîöåññå ñîçäàíèÿ íîâîãî ïàêåòà â äèçàéíåðå ñåðâèñîâ èíòåãðàöèè. Ïîñëå äîáàâëåíèÿ öèôðîâîé ïîäïèñè ïàêåò ñòàíîâèòñÿ äîñòóïíûì òîëüêî äëÿ ÷òåíèÿ è ðàçðàáîò÷èêè íå ìîãóò âíîñèòü â íåãî èçìåíåíèÿ, à ñëåäîâàòåëüíî, íå ìîãóò èçìåíÿòü öèôðîâóþ ïîäïèñü.
6.1.13. Êîíòåéíåðû Êîíòåéíåð — ýòî èçâåñòíàÿ ïðîãðàììíàÿ êîíñòðóêöèÿ, èñïîëüçîâàâøàÿñÿ ðàíåå ïðè ðàçðàáîòêå ïðîãðàììíûõ ðåøåíèé íà òàêèõ ÿçûêàõ, êàê Java è JSP (Java Server Pages). Òåïåðü äàííàÿ êîíñòðóêöèÿ òàêæå ïîÿâèëàñü â ïðîãðàììíûõ ðåøåíèÿõ Microsoft, è â ÷àñòíîñòè, ñåðâèñàõ èíòåãðàöèè SQL Server 2005. Îñíîâíîå íàçíà÷åíèå êîíòåéíåðîâ ñåðâèñîâ èíòåãðàöèè — ýòî äîáàâëåíèå äîïîëíèòåëüíîãî óðîâíÿ óïðàâëåíèÿ íàáîðîì çàäà÷ è ïàêåòîâ. Ñ ïîìîùüþ êîíòåéíåðîâ ðàçðàáîò÷èêè ìîãóò âûïîëíèòü ãðóïïèðîâêó ñâÿçàííûõ çàäà÷ ñ öåëüþ èõ ñîâìåñòíîãî âûïîëíåíèÿ (ïàðàëëåëüíîãî èëè ïîñëåäîâàòåëüíîãî). Òàêæå êîíòåéíåðû èñïîëüçóþòñÿ äëÿ òîãî, ÷òîáû îïðåäåëèòü ñïèñîê ñèñòåìíûõ ïåðåìåííûõ, êîòîðûå
6.1. Àðõèòåêòóðà è êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè
145
áóäóò âèäíû òîëüêî âíóòðè âûáðàííîãî êîíòåéíåðà. Ýòî óïðîùàåò ðàçðàáîòêó ñëîæíûõ ïàêåòîâ è ïîçâîëÿåò ñèíõðîíèçèðîâàòü âûïîëíåíèå îòäåëüíûõ çàäà÷.  SQL Server 2005 ñóùåñòâóåò íåñêîëüêî òèïîâ êîíòåéíåðîâ. Ïîìèìî ýòîãî ðàçðàáîò÷èêè ìîãóò ñîçäàâàòü ñâîè ñîáñòâåííûå êîíòåéíåðû èëè ðàñøèðÿòü ôóíêöèîíàëüíîñòü ñóùåñòâóþùèõ. Ïîëíûé ñïèñîê ñèñòåìíûõ êîíòåéíåðîâ è èõ îïèñàíèå ïðèâåäåíû â òàáë. 6.3. Òàáëèöà 6.3. Òèïû ñèñòåìíûõ êîíòåéíåðîâ ñåðâèñîâ èíòåãðàöèè SQL Server 2005 Òèï êîíòåéíåðà
Îïèñàíèå
Package Container
Êîëëåêöèÿ ýëåìåíòîâ ïàêåòà
Foreach Loop Container
Ïîçâîëÿåò ðåàëèçîâàòü ïðîñòåéøèé êîíòðîëü íàä ïîñëåäîâàòåëüíîñòüþ âûïîëíåíèÿ ïàêåòà
For Loop Container
Ïðåäîñòàâëÿåò âîçìîæíîñòè ðàáîòû ñ ïîâòîðÿþùèìèñÿ ñîáûòèÿìè è çàäà÷àìè â îòäåëüíîì ïàêåòå
Sequence Container
Èñïîëüçóåòñÿ äëÿ ãðóïïèðîâêè ñâÿçàííûõ çàäà÷ è êîíòåéíåðîâ â ïàêåò
TaskHost Container
Êîíòåéíåð, ñîäåðæàùèé çàäà÷è è ïðåäîñòàâëÿþùèé äëÿ çàäà÷ îïðåäåëåííûå ôóíêöèè
Container Properties
Ñîäåðæèò íàáîð îáùèõ äàííûõ äëÿ êîíòåéíåðà
Container Collections
Êîëëåêöèÿ êîíòåéíåðîâ
6.1.14. Àäàïòåðû äàííûõ  DTP èñïîëüçóþòñÿ àäàïòåðû äëÿ ñîåäèíåíèÿ ñ èñòî÷íèêàìè äàííûõ è ïîëó÷àòåëÿìè, êîòîðûå îðãàíèçóþò ïðîìåæóòî÷íûé óðîâåíü ïåðåäà÷è äàííûõ. Ïîìèìî ñóùåñòâóþùèõ àäàïòåðîâ äàííûõ ðàçðàáîò÷èêè ìîãóò ñîçäàâàòü ñâîè ñîáñòâåííûå, êîòîðûå áóäóò ó÷èòûâàòü îñîáåííîñòè òîãî èëè èíîãî èñòî÷íèêà äàííûõ. Ïîëíûé ñïèñîê âñòðîåííûõ àäàïòåðîâ, à òàêæå èõ îïèñàíèå ïðèâîäÿòñÿ â òàáë. 6.4. Òàáëèöà 6.4. Âñòðîåííûå àäàïòåðû äàííûõ Àäàïòåð äàííûõ
Îïèñàíèå
Flat File Destination Adapter
Ñèñòåìíûé àäàïòåð, êîòîðûé èñïîëüçóåòñÿ äëÿ çàïèñè òåêñòîâûõ äàííûõ â ôàéë
Flat File Source Adapter
Ñèñòåìíûé àäàïòåð, êîòîðûé èñïîëüçóåòñÿ äëÿ ÷òåíèÿ òåêñòîâûõ äàííûõ èç ôàéëà
OLE DB Destination Adapter
Ïðîâàéäåð OLE DB, êîòîðûé âûïîëíÿåò çàïèñü äàííûõ â OLEîáúåêò
OLE DB Source Adapter
Îáúåêò OLE DB, êîòîðûé âûïîëíÿåò ÷òåíèå äàííûõ èç ïðîâàéäåðà OLE DB
Raw File Destination Adapter
Ñèñòåìíûé àäàïòåð, âûïîëíÿþùèé çàïèñü äàííûõ â ôàéë
Raw File Source Adapter
Ñèñòåìíûé àäàïòåð, âûïîëíÿþùèé ÷òåíèå äàííûõ èç ôàéëà
SQL Server Destination Adapter
Àäàïòåð SQL Server, êîòîðûé èñïîëüçóåòñÿ äëÿ çàïèñè äàííûõ â òàáëèöó èëè ïðåäñòàâëåíèå
Web Service Source Adapter
Àäàïòåð, âûïîëíÿþùèé ÷òåíèå äàííûõ èç âåá-ñåðâèñà XML
146
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
6.1.15. Ïðîâàéäåðû ïðîòîêîëèðîâàíèÿ Êàê ìû ðàññìàòðèâàëè ðàíåå, äëÿ ñ÷èòûâàíèÿ è çàïèñè äàííûõ ñåðâèñàìè èíòåãðàöèè ìîãóò èñïîëüçîâàòüñÿ ñïåöèàëüíûå ïðîâàéäåðû. Ïîìèìî ýòîãî ñåðâèñû èíòåãðàöèè èìåþò äîïîëíèòåëüíûé ìåõàíèçì äëÿ ïðîòîêîëèðîâàíèÿ ñîáûòèé â ñèñòåìå. Äëÿ ýòîãî èñïîëüçóþòñÿ ïðîâàéäåðû ïðîòîêîëèðîâàíèÿ, ïîçâîëÿþùèå âåñòè ïðîòîêîëèðîâàíèå âûïîëíåíèÿ ïàêåòîâ, çàäà÷ è êîíòåéíåðîâ.  ñëó÷àå èñïîëüçîâàíèÿ ìåõàíèçìà ïðîòîêîëèðîâàíèÿ äëÿ âûäåëåííûõ îáúåêòîâ çàïèñûâàåòñÿ èíôîðìàöèÿ îá îøèáêàõ, âûïîëíåíèè (çàïóñêå, îñòàíîâêå) èëè èçìåíåíèè ïàðàìåòðîâ (íàïðèìåð, ïåðåìåííûõ). Ñåðâèñû èíòåãðàöèè SQL Server ñîäåðæàò ïÿòü ïðîâàéäåðîâ ïðîòîêîëèðîâàíèÿ. Èõ ïåðå÷åíü è îïèñàíèå ïðèâåäåíû â òàáë. 6.5. Òàáëèöà 6.5. Ïðîâàéäåðû ïðîòîêîëèðîâàíèÿ ñåðâèñîâ èíòåãðàöèè Íàèìåíîâàíèå ïðîâàéäåðà
Îïèñàíèå
Text File log
Âûïîëíÿåò çàïèñü log-ôàéëà â òåêñòîâûé ôàéë ôîðìàòà ASCII ñ èñïîëüçîâàíèåì çíà÷åíèé, ðàçäåëåííûõ çàïÿòûìè (CSV). Ïðè ýòîì èñïîëüçóåòñÿ ðàñøèðåíèå äàííîãî ôàéëà, êîòîðîå áûëî îïðåäåëåíî ïî óìîë÷àíèþ äëÿ ñèñòåìû
SQL Profiler log
Âûïîëíÿåò çàïèñü äàííûõ î òðàññèðîâêå SQL Server. Äëÿ ôàéëà èñïîëüçóåòñÿ ðàñøèðåíèå .trc
SQL Server log
Âûïîëíÿåò çàïèñü â òàáëèöó sys.dtslog áàçû äàííûõ SQL Server
Windows Event log
Âûïîëíÿåò çàïèñü log-ôàéëà â ïîðò ïðèëîæåíèÿ Win32
XML Rle log
Âûïîëíÿåò çàïèñü log-ôàéëà â XML-ôàéë. Ïðè ýòîì äëÿ ôàéëà èñïîëüçóåòñÿ ðàñøèðåíèå .xml
6.1.16. Ïðåîáðàçîâàíèå äàííûõ Ïðåîáðàçîâàíèå äàííûõ ÿâëÿåòñÿ îäíîé èç îñíîâíûõ ôóíêöèé, êîòîðûå òðåáóþòñÿ ïðè ïåðåíîñå äàííûõ ìåæäó èñòî÷íèêîì è ïîëó÷àòåëåì. Ñòîèò óïîìÿíóòü, ÷òî ðàíåå ñåðâèñû èíòåãðàöèè íîñèëè íàçâàíèå «ñåðâèñû ïðåîáðàçîâàíèÿ äàííûõ», ÷òî îòðàæàëî èõ îñíîâíóþ ïðèðîäó.  íîâîé âåðñèè SQL Server ñîäåðæèòñÿ îãðîìíîå êîëè÷åñòâî âñòðîåííûõ ïðåîáðàçîâàíèé (òàáë. 6.6). Îíè ïîçâîëÿþò âûïîëíÿòü ðàçëè÷íûå îïåðàöèè íàä äàííûìè, êîòîðûå ïîäàþòñÿ èì íà âõîä, è çàïèñûâàòü äàííûå â áàçû äàííûõ ïîëó÷àòåëÿ. Ïîìèìî ñóùåñòâóþùåãî íàáîðà ïðåîáðàçîâàíèé ìîæíî âîñïîëüçîâàòüñÿ API, êîòîðûé ïðåäîñòàâëåí îáúåêòíîé ìîäåëüþ DTP, ñ öåëüþ ñîçäàíèÿ ñâîåãî ñîáñòâåííîãî ïðåîáðàçîâàíèÿ. Òàáëèöà 6.6. Âñòðîåííûå ïðåîáðàçîâàíèÿ äàííûõ ñåðâèñîâ èíòåãðàöèè Íàèìåíîâàíèå ïðåîáðàçîâàíèÿ
Îïèñàíèå
Aggregate Transformation
Âûïîëíÿåò àãðåãèðîâàíèå
Allocation Transformation
Êîïèðóåò çíà÷åíèå ââîäèìîé êîëîíêè òàáëèöû âíóòðè íàáîðà çàäàííûõ òàáëèö
Character Map Transformation
Îáúåäèíÿåò îòäåëüíûå ñèìâîëû â ñòðîêè
Conditional Split Transformation
Ïåðåíàïðàâëÿåò ââîä äàííûõ
Copy/Map Transformation
Ñîçäàåò íîâóþ êîëîíêó äëÿ ââîäà ñ ïîìîùüþ îïåðàöèè êîïèðîâàíèÿ îïðåäåëåííîé êîëîíêè
6.1. Àðõèòåêòóðà è êîìïîíåíòû ñåðâèñîâ èíòåãðàöèè
147
Íàèìåíîâàíèå ïðåîáðàçîâàíèÿ
Îïèñàíèå
Data Mining Model Accuracy Transformation
Ïðîâåðÿåò ïðàâèëüíîñòü ñîñòàâëåíèÿ ìîäåëè èíôîðìàöèîííîé ïðîõîäêè
Data Mining Model Training Transformation
Òåñòèðóåò ìîäåëü èíôîðìàöèîííîé ïðîõîäêè
Data Mining Query Transformation
Çàïóñêàåò çàïðîñû èíôîðìàöèîííîé ïðîõîäêè
Data Conversion Transformation
Ïðåîáðàçóåò âõîäíûå äàííûå â ôîðìàò ïîëó÷àòåëÿ
Derived Column Transformation
Ñîçäàåò êîëîíêó â ñîîòâåòñòâèè ñ ïàðàìåòðàìè âõîäíîé
Dimension Processing Transformation
Îáðàáàòûâàåò èçìåðåíèå OLAP-êóáà
File Extractor Transformation
Âûïîëíÿåò ÷òåíèå äàííûõ èç ïîòîêà äàííûõ è çàïèñûâàåò èõ â ôàéë
File Injector Transformation
Âûïîëíÿåò ÷òåíèå äàííûõ èç ôàéëà è çàïèñûâàåò èõ â ïîòîê äàííûõ
Fuzzy Grouping Transformation
Âûïîëíÿåò ïðèâåäåíèå äàííûõ ê îäíîìó âèäó
Fuzzy Lookup Transformation
Âûïîëíÿåò ïîèñê çíà÷åíèé, èñïîëüçóÿ íåòî÷íîå ñîâïàäåíèå
Logged Lineage Transformation
Ïîçâîëÿåò ïåðåäàâàòü èíôîðìàöèþ îá îêðóæåíèè â ïàêåò ïîòîêà äàííûõ
Lookup Transformation
Âûïîëíÿåò ïîèñê çàäàííûõ çíà÷åíèé â òàáëèöå
Merge Transformation
Âûïîëíÿåò ñëèÿíèå äâóõ îòñîðòèðîâàííûõ òàáëèö
Merge Join Transformation
Âûïîëíÿåò ñëèÿíèå äâóõ íàáîðîâ äàííûõ, èñïîëüçóÿ ïàðàìåòðû îáúåäèíåíèÿ FULL, INNER èëè LEFT
Multicast Transformation
Ïåðåíàïðàâëÿåò äàííûå îò îäíîãî èñòî÷íèêà íåñêîëüêèì ïîëó÷àòåëÿì
Partition Processing Transformation
Âûïîëíÿåò îáðàáîòêó ðàçäåëîâ OLAP
Pivot Transformation
Âûïîëíÿåò ïðåîáðàçîâàíèå äàííûõ ñîãëàñíî çàäàííîé êîëîíêå, âûñòóïàþùåé â êà÷åñòâå îñè
Row Count Transformation
Âûïîëíÿåò ïîäñ÷åò êîëè÷åñòâà ñòðîê è ñîõðàíÿåò çíà÷åíèå â çàäàííîé ïåðåìåííîé
Sampling Transformation
Âûïîëíÿåò ïðåîáðàçîâàíèå äàííûõ
Script Transformation
Âûïîëíÿåò ñöåíàðèé ïðåîáðàçîâàíèÿ äàííûõ
Slowly Changing Dimension Transformation
Èñïîëüçóåòñÿ äëÿ îòñëåæèâàíèÿ ïðîöåññà îáíîâëåíèÿ è âñòàâêè ñòðîê â èçìåðåíèå OLAP-êóáà
Sort Transformation
Ñîðòèðóåò âõîäÿùèå äàííûå è êîïèðóåò îòñîðòèðîâàííûå äàííûå â áàçó äàííûõ ïîëó÷àòåëÿ
Surrogate Key Transformation
Ïðåäîñòàâëÿåò äîïîëíèòåëüíûå âîçìîæíîñòè äëÿ âûïîëíåíèÿ äåéñòâèé íàä äàííûìè
Union All Transformation
Îáúåäèíÿåò íåñêîëüêî íàáîðîâ äàííûõ
UnPivot Transformation
Âûïîëíÿåò îáðàòíîå ïðåîáðàçîâàíèå ñîãëàñíî çàäàííîé êîëîíêå
6.1.17. Îáðàáîò÷èêè ñîáûòèé Ñåðâèñû èíòåãðàöèè ìîãóò ñàìîñòîÿòåëüíî âûïîëíÿòü îáðàáîòêó ñîáûòèé. Îáðàáîòêà ñîáûòèé ïîçâîëÿåò ïðîãðàììíîìó ïðèëîæåíèþ àäåêâàòíî ðåàãèðîâàòü íà èçìåíåíèÿ â ñðåäå èëè íà âîçíèêíîâåíèå îøèáîê.  ðåçóëüòàòå îáðàáîòêè
148
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
ñîáûòèé ìîãóò çàïóñêàòüñÿ çàäà÷è èëè âûïîëíÿòüñÿ êîíòåéíåðû. Ñîáûòèÿ ìîãóò ãåíåðèðîâàòüñÿ íå òîëüêî ñðåäîé îêðóæåíèÿ, íî è ñàìèìè ñåðâèñàìè èíòåãðàöèè. Ïîäîáíûå ñîáûòèÿ ìîãóò âêëþ÷àòü èçìåíåíèå çàäàííûõ ïåðåêëþ÷àòåëåé, âîçíèêíîâåíèå îøèáîê â ñèñòåìå, çàïóñê è îñòàíîâêó çàäà÷, èçìåíåíèå çíà÷åíèé ïåðåìåííûõ, à òàêæå çàïóñê îòäåëüíûõ ïàêåòîâ èëè êîíòåéíåðîâ. Ïîëíûé ñïèñîê ñèñòåìíûõ ñîáûòèé, êîòîðûå ìîãóò îáðàáàòûâàòüñÿ ñðåäñòâàìè ñåðâèñîâ èíòåãðàöèè, à òàêæå èõ îïèñàíèå ïðèâåäåíû â òàáë. 6.7. Òàáëèöà 6.7. Îáðàáîò÷èêè ñîáûòèé ñåðâèñîâ èíòåãðàöèè Íàèìåíîâàíèå îáðàáîò÷èêà
Îïèñàíèå
OnCustomerEvent
Âûçûâàåòñÿ èç çàäà÷è èëè ïàêåòà
OnErrw
Âûçûâàåòñÿ èç çàäà÷è èëè ïàêåòà ïðè âîçíèêíîâåíèè îøèáêè
OnExecStatusChanged
Âûçûâàåòñÿ èç çàäà÷è èëè êîíòåéíåðà âî âðåìÿ èçìåíåíèÿ ñòàòóñà âûïîëíåíèÿ
OnPostExecute
Âûçûâàåòñÿ èç çàäà÷è èëè êîíòåéíåðà ñðàçó ïîñëå çàïóñêà
OnPostValidate
Âûçûâàåòñÿ èç çàäà÷è ïîñëå åå ïðîâåðêè
OnPreExecute
Âûçûâàåòñÿ èç çàäà÷è èëè êîíòåéíåðà ïåðåä çàïóñêîì
OnPreValidate
Âûçûâàåòñÿ èç çàäà÷è ïåðåä åå ïðîâåðêîé
OnProgress
Âûçûâàåòñÿ èç çàäà÷è èëè êîíòåéíåðà ïîñëå âûïîëíåíèÿ îïðåäåëåííûõ ðàçðàáîò÷èêîì óñëîâèé
OnQueryCancel
Âûçûâàåòñÿ èç çàäà÷è èëè êîíòåéíåðà äëÿ îïðåäåëåíèÿ, íåîáõîäèìà ëè èõ îñòàíîâêà
OnTask Failed
Âûçûâàåòñÿ èç çàäà÷è, åñëè âîçíèêàåò îøèáêà âûïîëíåíèÿ
OnVariableValueChanged
Âûçûâàåòñÿ èç ïåðåìåííîé, åñëè åå çíà÷åíèå èçìåíÿåòñÿ
OnWarning
Âûçûâàåòñÿ èç çàäà÷è èëè êîíòåéíåðà â ñëó÷àå ãåíåðàöèè ïðåäóïðåæäåíèÿ
6.2. Èíñòðóìåíòû ñåðâèñîâ èíòåãðàöèè Êàê âû ìîãëè îáðàòèòü âíèìàíèå â îïèñàíèè ñåðâèñîâ èíòåãðàöèè, ïðèâåäåííîì â ïðåäûäóùèõ ðàçäåëàõ, ñåðâèñû â íîâîé âåðñèè SQL Server ïðåòåðïåëè çíà÷èòåëüíûå èçìåíåíèÿ. Íå òîëüêî èçìåíèëàñü àðõèòåêòóðà ïðèëîæåíèÿ, íî è ïîÿâèëèñü íîâûå ñðåäñòâà äëÿ íàñòðîéêè è âûïîëíåíèÿ ñåðâèñîâ èíòåãðàöèè.  ñîîòâåòñòâèè ñ äàííûìè èçìåíåíèÿìè â SQL Server 2005 ïîÿâèëñÿ íîâûé íàáîð èíñòðóìåíòîâ äëÿ óïðàâëåíèÿ ñåðâèñàìè èíòåãðàöèè, à íåêîòîðûå èç ðàíåå ñóùåñòâîâàâøèõ èíñòðóìåíòîâ îáðåëè íîâóþ ôóíêöèîíàëüíîñòü. Íàïðèìåð, óòèëèòà Import/Export Wizard, êîòîðàÿ èñïîëüçóåòñÿ äëÿ ñîçäàíèÿ ïðîñòåéøèõ ïðèëîæåíèé ïåðåíîñà è ïðåîáðàçîâàíèÿ äàííûõ, ïðàêòè÷åñêè íå ïðåòåðïåëà èçìåíåíèé. Ýòîãî íåëüçÿ ñêàçàòü îá óòèëèòå Service Designer. Îíà ïîëó÷èëà íå òîëüêî íîâûé èíòåðôåéñ, íî è ôóíêöèîíàëüíîñòü. Ìîæíî ñ óâåðåííîñòüþ ñêàçàòü, ÷òî íîâûå èíñòðóìåíòû òåïåðü áîëüøå ðàññ÷èòàíû íà ñëîæíûå è êîìïëåêñíûå ïðèëîæåíèÿ, ÷òî îáúÿñíÿåòñÿ òðåáîâàíèÿìè áèçíåñà. Äëÿ òîãî ÷òîáû ñîçäàâàòü êàê ïðîñòåéøèå, òàê è äîñòàòî÷íî ñëîæíûå ïðèëîæåíèÿ, âàì ïîòðåáóåòñÿ èçó÷èòü íîâûå
6.2. Èíñòðóìåíòû ñåðâèñîâ èíòåãðàöèè
149
èíñòðóìåíòû.  ýòîì ðàçäåëå ìû ðàññìîòðèì èçìåíåíèÿ, êîòîðûå ïîÿâèëèñü â ñóùåñòâîâàâøèõ ðàíåå èíñòðóìåíòàõ, à òàêæå èõ íîâûå ôóíêöèè.  ïîëå íàøåãî çðåíèÿ ïîïàäóò óòèëèòû Import/Export Wizard è Services Designer.  îáùåì ñëó÷àå âåñü ïåðå÷åíü èíñòðóìåíòîâ ñåðâèñîâ èíòåãðàöèè ìîæíî ðàçäåëèòü íà äâà áîëüøèõ êëàññà: ïåðâûé — èíñòðóìåíòû äëÿ ñîçäàíèÿ è âûïîëíåíèÿ ïàêåòîâ ñåðâèñîâ èíòåãðàöèè, âòîðîé — èíñòðóìåíòû äëÿ ðàáîòû ñ ñóùåñòâóþùèìè ïàêåòàìè. Ê ïåðâîìó êëàññó îòíîñÿòñÿ èíñòðóìåíòû Integration Services Import/Export Wizard è Services Designer, êîòîðûå ìû áóäåì ðàññìàòðèâàòü â äàííîì ðàçäåëå. Êàê âû ìîãëè çàìåòèòü ðàíåå, â ñåðâèñàõ èíòåãðàöèè ñóùåñòâóåò ÷åòêîå ðàçãðàíè÷åíèå ìåæäó ïîòîêàìè òåõíîëîãè÷åñêèõ ïðîöåññîâ è ïîòîêàìè äàííûõ. Äëÿ ðàáîòû ñ ïîòîêàìè ðàçëè÷íûõ òèïîâ èñïîëüçóþòñÿ ðàçíûå ïîäõîäû è óòèëèòû. Äëÿ ðàáîòû ñ òåõíîëîãè÷åñêèìè ïðîöåññàìè âíóòðè ïàêåòîâ ñåðâèñîâ èíòåãðàöèè èñïîëüçóåòñÿ äèçàéíåð ñåðâèñîâ. Ýòà óòèëèòà ïðåäîñòàâëÿåò ðàçðàáîò÷èêàì òàêèå ôóíêöèè, êàê êîíòðîëü íàä ïðîãðàììíûì êîäîì è ïîääåðæêà ìíîãîïîëüçîâàòåëüñêîé ñðåäû ðàçðàáîòêè ïðîãðàììíûõ ïðèëîæåíèé. Ïîìèìî ýòîãî â äàííîé óòèëèòå èìåþòñÿ ìîùíûå ñðåäñòâà äëÿ îòëàäêè ïàêåòîâ, óñòàíîâêè è èñïîëüçîâàíèÿ êîíòðîëüíûõ òî÷åê â ñèñòåìå è ðàçâåðòûâàíèÿ ïàêåòîâ. Äèçàéíåð ñåðâèñîâ ìîæåò èñïîëüçîâàòüñÿ è äëÿ ìîíèòîðèíãà ïðîöåññà âûïîëíåíèÿ ïàêåòîâ, íà÷èíàÿ îò ýòàïà çàïóñêà è çàêàí÷èâàÿ ïîñëåäîâàòåëüíîñòüþ âûïîëíåíèÿ çàäà÷ è ïðåîáðàçîâàíèÿ äàííûõ. ßðêèì ïðåäñòàâèòåëåì âòîðîãî êëàññà èíñòðóìåíòîâ äëÿ óïðàâëåíèÿ ñóùåñòâóþùèìè ïàêåòàìè ÿâëÿåòñÿ óòèëèòà Package Migration Wizard, êîòîðàÿ èñïîëüçóåòñÿ äëÿ ïåðåíîñà ïàêåòîâ èç SQL Server 7.0 è 2000 â SQL Server 2005. Ïîìèìî íåå èñïîëüçóåòñÿ óòèëèòà Integration Services Package Installer Wizard, êîòîðàÿ ïîçâîëÿåò ñîçäàâàòü çàïóñêàåìûå ôàéëû äëÿ èíñòàëëÿöèè ãîòîâûõ ïàêåòîâ ñåðâèñîâ èíòåãðàöèè. Ýòî ïðåäîñòàâëÿåò ðàçðàáîò÷èêàì îãðîìíîå êîëè÷åñòâî âîçìîæíîñòåé äëÿ ðàçâåðòûâàíèÿ è óäàëåíèÿ ïàêåòîâ èç ñèñòåìû. Ñåðâèñàìè èíòåãðàöèè ìîæåò èñïîëüçîâàòüñÿ òàêæå óòèëèòà Integration Services Package Execution, êîòîðàÿ ïîçâîëÿåò âûïîëíÿòü ïàêåòû èíòåãðàöèè èç êîìàíäíîé ñòðîêè. Ýòî óïðîùàåò ïðîöåññ òåñòèðîâàíèÿ ïàêåòà è ïîçâîëÿåò ñîçäàâàòü ñöåíàðèè äëÿ èõ çàïóñêà.  ýòîì ðàçäåëå ìû ïîäðîáíî ðàññìîòðèì ñðåäñòâà ñåðâèñîâ èíòåãðàöèè äëÿ ñîçäàíèÿ è ðàçâîðà÷èâàíèÿ ïàêåòîâ. Äàëåå ìû èçó÷èì ôóíêöèîíàëüíîñòü òàêèõ èíñòðóìåíòîâ, êàê: · Import/Export Wizard; · Services Designer.
6.2.1. Óòèëèòà Import/Export Wizard Óòèëèòà Import/Export Wizard — ýòî íàèáîëåå ïðîñòîå ñðåäñòâî ñîçäàíèÿ ýëåìåíòàðíûõ çàïðîñîâ äëÿ ÷òåíèÿ äàííûõ è ïðîñòåéøåé òðàíñôîðìàöèè. Îíà ïðàêòè÷åñêè íå ïðåòåðïåëà êàêèõ-ëèáî èçìåíåíèé ïî ñðàâíåíèþ ñî ñâîèì ïðåäøåñòâåííèêîì. Òàê æå êàê è óòèëèòà Import/Export Wizard ñåðâèñîâ èíòåãðàöèè SQL Server 7.0 è 2000, îíà ñîäåðæèò íåñêîëüêî äèàëîãîâûõ îêîí, êîòîðûå ïðåäëàãàþò ïîëüçîâàòåëþ ïîñëåäîâàòåëüíî âûáðàòü èñòî÷íèê äàííûõ, áàçó äàííûõ ïîëó÷àòåëÿ, îáúåêòû, êîòîðûå áóäóò ïåðåíîñèòüñÿ ìåæäó èñòî÷íèêîì è ïîëó÷àòåëåì,
150
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
è ýëåìåíòàðíûå îïåðàöèè ïî òðàíñôîðìàöèè äàííûõ. Ïðè íåîáõîäèìîñòè ïàêåò, ñîçäàííûé ñ ïîìîùüþ ìàñòåðà, ìîæåò áûòü ñîõðàíåí. Ýòîò ïàêåò ìîæíî áóäåò â äàëüíåéøåì èñïîëüçîâàòü äëÿ ïåðåíîñà äàííûõ ìåæäó äðóãèìè èñòî÷íèêàìè èëè äëÿ ðåäàêòèðîâàíèÿ è ñîçäàíèÿ íîâûõ ïàêåòîâ íà åãî îñíîâå. Äëÿ çàïóñêà óòèëèòû Import/Export Wizard ìîæíî âîñïîëüçîâàòüñÿ îäíèì èç ñëåäóþùèõ ñïîñîáîâ: · âûáðàòü â ìåíþ Windows êîìàíäó Start4Programs4SQL Server4Integration Services Import/Export Wizard; · ââåñòè â êîìàíäíîé ñòðîêå êîìàíäó dtswizard. Ðàçðàáîò÷èêè ïðåäïî÷èòàþò ñëåäóþùèé ñïîñîá ñîçäàíèÿ ïðèëîæåíèé ñåðâèñîâ èíòåãðàöèè: ñîçäàåòñÿ ýëåìåíòàðíûé ïàêåò ñ ïîìîùüþ óòèëèòû Import/Export Wizard, ïîñëå ýòîãî ýòîò ïàêåò ñîõðàíÿåòñÿ. Çàòåì îí îòêðûâàåòñÿ â äèçàéíåðå ñåðâèñîâ è äîðàáàòûâàåòñÿ ñ èñïîëüçîâàíèåì ðàñøèðåííîãî íàáîðà ôóíêöèé ýòîãî ïðèëîæåíèÿ. Ñ ïîìîùüþ äèçàéíåðà ñåðâèñîâ äàííûé ïàêåò ìîæåò áûòü ïðîòåñòèðîâàí è âíåäðåí â çàäàííîé ñèñòåìå. Îáùèé âèä óòèëèòû Import/Export Wizard ïðèâåäåí íà ðèñ. 6.5. Íà äàííîì ýòàïå ïîêàçàí ïåðâûé øàã ðàáîòû ñ ìàñòåðîì — âûáîð èñòî÷íèêà äàííûõ. Äëÿ âûáîðà èñòî÷íèêà äàííûõ â ðàñêðûâàþùåìñÿ ñïèñêå Data Source âûáåðèòå ïðîâàéäåðà, êîòîðûé áóäåò èñïîëüçîâàòüñÿ ñèñòåìîé. Âèä ñëåäóþùèõ îêîí ìàñòåðà áóäåò çàâèñåòü îò òîãî, ïðîâàéäåð êàêîãî òèïà âû âûáåðåòå.  ñëó÷àå âûáîðà ïðîâàéäåðà OLE DB äëÿ ðàáîòû ñ äàííûìè SQL Server îòîáðàçèòñÿ îêíî, ïîêàçàííîå íà ðèñ. 6.5.
Ðèñ. 6.5. Îáùèé âèä óòèëèòû Import/Export Wizard
6.2. Èíñòðóìåíòû ñåðâèñîâ èíòåãðàöèè
151
 íèæíåé ÷àñòè îêíà âàì íåîáõîäèìî áóäåò âûáðàòü ñåðâåð, ê êîòîðîìó áóäåò óñòàíîâëåíî ñîåäèíåíèå, à òàêæå òèï àóòåíòèôèêàöèè. Äîñòóïåí îäèí èç ñëåäóþùèõ òèïîâ àóòåíòèôèêàöèè: · àóòåíòèôèêàöèÿ Windows; · àóòåíòèôèêàöèÿ SQL Server. Ïðè âûáîðå àóòåíòèôèêàöèè SQL Server îò âàñ ïîòðåáóåòñÿ ââåñòè èìÿ ó÷åòíîé çàïèñè è ïàðîëü. Ïîñëå òîãî êàê ïàðàìåòðû ñåðâåðà áóäóò çàäàíû, íàæìèòå êíîïêó Next äëÿ ïåðåõîäà ê ýòàïó âûáîðà áàçû äàííûõ ïîëó÷àòåëÿ. Îáùèé âèä äèàëîãîâîãî îêíà áóäåò òàêèì æå, êàê è ïðè âûáîðå èñòî÷íèêà äàííûõ, çà òåì ëèøü èñêëþ÷åíèåì, ÷òî íàñòðîéêè âûïîëíÿþòñÿ íå äëÿ èñòî÷íèêà, à äëÿ ïîëó÷àòåëÿ äàííûõ. Ïîñëå òîãî êàê ïîëüçîâàòåëü âûáåðåò èñòî÷íèê è ïîëó÷àòåëÿ äàííûõ, ðàáîòà ìàñòåðà áóäåò ïðîäîëæåíà, è îí ïðåäëîæèò ñîõðàíèòü è âûïîëíèòü ñîçäàííûé ïàêåò äàííûõ. Äàëåå áóäåò çàïóùåí ñîçäàííûé ïàêåò, è ïîëüçîâàòåëü ñìîæåò íàáëþäàòü çà õîäîì åãî âûïîëíåíèÿ. Ýòàïû âûïîëíåíèÿ ïàêåòà áóäóò îòîáðàæåíû â îêíå DTS Import/Export Wizard. Ïîñëå óäà÷íîãî çàâåðøåíèÿ ïàêåòà áóäåò âûâåäåíî ñîîáùåíèå (ðèñ. 6.6).
Ðèñ. 6.6. Õîä âûïîëíåíèÿ ïàêåòà
6.2.2. Äèçàéíåð ñåðâèñîâ èíòåãðàöèè  ïðåäûäóùåì ðàçäåëå ìû ðàññìîòðåëè ïðèìåð ñîçäàíèÿ ýëåìåíòàðíîãî ïðèëîæåíèÿ äëÿ ïåðåíîñà äàííûõ ìåæäó ðàçëè÷íûìè èñòî÷íèêàìè. Åñëè ñ ïîìîùüþ ïðèëîæåíèÿ íåîáõîäèìî ðåøèòü ñëîæíóþ çàäà÷ó èëè ïðèëîæåíèå òðåáóåò
152
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
ñïåöèàëüíîé íàñòðîéêè, òî â ýòîì ñëó÷àå ñòîèò âîñïîëüçîâàòüñÿ äèçàéíåðîì ñåðâèñîâ. Äèçàéíåð ñåðâèñîâ ëó÷øå èñïîëüçîâàòü â òåõ ñëó÷àÿõ, êîãäà òðåáóåòñÿ âûïîëíÿòü èçâëå÷åíèå äàííûõ, èõ ïðåîáðàçîâàíèå è çàãðóçêó ñ èñïîëüçîâàíèåì çàäà÷. Ìåõàíèçì çàäà÷ äîñòàòî÷íî ñëîæåí è ïîçâîëÿåò îñóùåñòâèòü íå òîëüêî ïðîñòîé ïåðåíîñ äàííûõ ìåæäó èñòî÷íèêîì è ïîëó÷àòåëåì. Ñ åãî ïîìîùüþ ìîæíî èñïîëüçîâàòü èñòî÷íèêè äàííûõ ðàçëè÷íûõ òèïîâ, âûïîëíÿòü ñâÿçûâàíèå äàííûõ, èõ ïðåîáðàçîâàíèå, ïåðåíîñ èç îäíîé êîëîíêè â äðóãóþ, ñîçäàâàòü íîâûå êîëîíêè ñ âû÷èñëÿåìûìè çíà÷åíèÿìè, âûïîëíÿòü ïðîâåðêó äàííûõ è óäàëÿòü íåíóæíûå çíà÷åíèÿ. Èíûìè ñëîâàìè, çàäà÷è ðåàëèçóþò íàìíîãî áîëåå ñëîæíûé àëãîðèòì ìàíèïóëèðîâàíèÿ äàííûìè, à ñëåäîâàòåëüíî, èìåþò áîëüøóþ ôóíêöèîíàëüíîñòü è òðåáóþò áîëüøåãî âíèìàíèÿ ñî ñòîðîíû ðàçðàáîò÷èêîâ. Èìåííî â ýòîì ñëó÷àå è ñòàíîâèòñÿ íåîáõîäèìûì èñïîëüçîâàòü äèçàéíåð ñåðâèñîâ. Äèçàéíåð îò÷åòîâ — ýòî óòèëèòà ñ ãðàôè÷åñêèì èíòåðôåéñîì, êîòîðàÿ ïîçâîëÿåò ñîçäàâàòü, íàñòðàèâàòü, îòëàæèâàòü è âûïîëíÿòü ïàêåòû ñåðâèñîâ èíòåãðàöèè. Ïîìèìî ñîçäàíèÿ íîâûõ ïàêåòîâ â äèçàéíåðå ñåðâèñîâ ìîæíî îòêðûâàòü ðàíåå ñîçäàííûå ïàêåòû ñ ïîìîùüþ óòèëèòû Import/Export Wizard. Äëÿ ñîçäàíèÿ íîâîãî ïàêåòà â äèçàéíåðå ñåðâèñîâ âûïîëíèòå ñëåäóþùèå äåéñòâèÿ: 1. Âûáåðèòå â ìåíþ Business Intelligence Development Studio êîìàíäó File4 New4Project.  ðåçóëüòàòå áóäåò îòêðûòî îêíî New Project. 2. Âûáåðèòå â ëåâîé ÷àñòè îêíà New Project çíà÷åíèå Business Intelligence Projects. 3. Âûáåðèòå ýëåìåíò Integration Services Project èç ñïèñêà øàáëîíîâ (ðèñ. 6.7).
Ðèñ. 6.7. Ñîçäàíèå íîâîãî ïàêåòà ñåðâèñîâ èíòåãðàöèè
6.2. Èíñòðóìåíòû ñåðâèñîâ èíòåãðàöèè
153
Ïîñëå ñîçäàíèÿ íîâîãî ïðîåêòà âû ñìîæåòå îòêðûòü äèçàéíåð ñåðâèñîâ, ùåëêíóâ ïðàâîé êíîïêîé ìûøè â îêíå Solution Explorer, êîòîðîå îòîáðàæàåòñÿ â ïðàâîé ÷àñòè ýêðàíà. Åñëè äèçàéíåð ñåðâèñîâ çàïóñêàåòñÿ âïåðâûå, ïåðåä âàìè îòêðîåòñÿ îêíî ðàçðàáîòêè. Îíî íè÷åì íå îòëè÷àåòñÿ îò ïîäîáíîãî îêíà â ïðåäûäóùåé âåðñèè SQL Server.  íîâîì äèçàéíåðå ñåðâèñîâ ìîæíî ñîçäàâàòü ïàêåòû íåñêîëüêèõ òèïîâ. Äëÿ ýòîãî èñïîëüçóþòñÿ ñëåäóþùèå äèçàéíåðû: · Äèçàéíåð òåõíîëîãè÷åñêèõ ïðîöåññîâ — äëÿ îòêðûòèÿ äàííîãî äèçàéíåðà îòêðîéòå âêëàäêó Control Flow, çàòåì ïàíåëü Control Flow Toolbox. Ïîñëå îòîáðàæåíèÿ íà ýêðàíå ïàíåëè èíñòðóìåíòîâ äèçàéíåðà òåõíîëîãè÷åñêèõ ïðîöåññîâ âûáåðèòå çàäà÷ó òèïà Data Flow è ñ ïîìîùüþ óêàçàòåëÿ ìûøè ïåðåòàùèòå åå íà ïîëå äëÿ ðàçðàáîòêè ïðèëîæåíèÿ. Ïîñëå ýòîãî ïåðåä âàìè îòêðîåòñÿ îáëàñòü ðàçðàáîòêè òåõíîëîãè÷åñêîãî ïðîöåññà, êàê ïîêàçàíî íà ðèñ. 6.8.  äàííîì ñëó÷àå ìû ðàññìîòðèì ýëåìåíòàðíûé ïðèìåð èñïîëüçîâàíèÿ ïàêåòà. Êàê ïîêàçàíî íà ðèñóíêå, îí ñîäåðæèò òîëüêî îäèí ýëåìåíò — çàäà÷ó óïðàâëåíèÿ ïàêåòîì äàííûõ. Îäíàêî ïðèëîæåíèå ìîæíî ñäåëàòü íàìíîãî áîëåå ñëîæíûì, äîáàâëÿÿ äðóãèå çàäà÷è â îáëàñòü ðàçðàáîòêè. Äëÿ äîáàâëåíèÿ äðóãèõ çàäà÷ âûáåðèòå èõ èç íàáîðà èíñòðóìåíòîâ äèçàéíåðà òåõíîëîãè÷åñêèõ ïðîöåññîâ, ïîìåñòèòå â îáëàñòü ðàçðàáîòêè è íàñòðîéòå ñâÿçè ìåæäó ñóùåñòâóþùèìè çàäà÷àìè. Ïðè íåîáõîäèìîñòè ìîæíî âîñïîëüçîâàòüñÿ êîíòåéíåðîì äëÿ ãðóïïèðîâêè ñâÿçàííûõ çàäà÷ ïî îïðåäåëåííîìó ïðèçíàêó. · Äèçàéíåð ïîòîêîâ äàííûõ — â ýòîì ñëó÷àå íåîáõîäèìî çàäàòü ïàêåòó ïàðàìåòðû, ñ ó÷åòîì êîòîðûõ îí áóäåò èñïîëüçîâàòüñÿ äëÿ âûïîëíåíèÿ îïåðàöèé ïî ïåðåíîñó è ïðåîáðàçîâàíèþ äàííûõ. Òàêæå íåîáõîäèìî îïðåäåëèòü èñòî÷íèê, îòêóäà äàííûå áóäóò ïåðåíîñèòüñÿ â áàçó-ïîëó÷àòåëü. Ïîñëå òîãî êàê âû äîáàâèòå çàäà÷è òèïà Data Flow, íåîáõîäèìî îïðåäåëèòü ïàðàìåòðû äëÿ ïîòîêà äàííûõ. Äëÿ ýòîãî ùåëêíèòå äâàæäû íà çíà÷êå çàäà÷è Data Flow. Ðåçóëüòàòîì áóäåò îòêðûòèå âêëàäêè Data Flow, êîòîðàÿ èçíà÷àëüíî äîëæíà áûòü ïóñòîé. Äëÿ äîáàâëåíèÿ èñòî÷íèêà è ïîëó÷àòåëÿ äàííûõ îòêðîéòå ïàíåëü ñ èíñòðóìåíòàìè äèçàéíåðà ïîòîêà äàííûõ, êîòîðàÿ ðàñïîëàãàåòñÿ â ëåâîé ÷àñòè îêíà, è ïåðåòàùèòå ñ ïîìîùüþ óêàçàòåëÿ ìûøè èñòî÷íèêè äàííûõ OLE DB Source è OLE DB Destination. Ïåðâûé áóäåò èñïîëüçîâàòüñÿ â êà÷åñòâå èñòî÷íèêà äàííûõ, à âòîðîé — â êà÷åñòâå ïîëó÷àòåëÿ. Òàêæå â íàøå ðåøåíèå ìîæíî äîáàâèòü îáúåêò Flat File Destination, êîòîðûé ïîçâîëèò âûïîëíÿòü âûâîä îøèáî÷íûõ ñòðîê â òåêñòîâûé log-ôàéë. Ïîñëå íàñòðîéêè ïàðàìåòðîâ èñòî÷íèêà è ïîëó÷àòåëÿ äàííûõ (â íàøåì ïðèìåðå â êà÷åñòâå èñòî÷íèêà è ïîëó÷àòåëÿ âûñòóïàþò áàçû äàííûõ òèïà OLE DB) íåîáõîäèìî îïðåäåëèòü ïàðàìåòðû ñîåäèíåíèÿ ñ èñòî÷íèêàìè. Òàêæå íåîáõîäèìî íàñòðîèòü ïàðàìåòðû ñîåäèíåíèÿ ñ òåêñòîâûì ôàéëîì, êîòîðûé áóäåò èñïîëüçîâàòüñÿ äëÿ âûâîäà îøèáî÷íûõ ñòðîê.
154
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
Ðèñ. 6.8. Äèçàéíåð òåõíîëîãè÷åñêèõ ïðîöåññîâ
Äëÿ êàæäîãî èñòî÷íèêà è ïîëó÷àòåëÿ íåîáõîäèìî îïðåäåëèòü ïàðàìåòðû ñîåäèíåíèÿ, ÷òî òðåáóåò çíàíèÿ ïàðàìåòðîâ èñòî÷íèêà è ïîëó÷àòåëÿ äàííûõ. Ïîñêîëüêó â äàííîì ïðèìåðå èñïîëüçóþòñÿ òðè îáúåêòà òèïà Data Flow, òî òðåáóåòñÿ îïðåäåëèòü ïàðàìåòðû òðåõ ñîåäèíåíèé: äâà — äëÿ áàç äàííûõ òèïà OLE DB è îäèí — äëÿ òåêñòîâîãî ôàéëà. Äëÿ òîãî ÷òîáû îïðåäåëèòü ïàðàìåòðû ñîåäèíåíèÿ, âûïîëíèòå ñëåäóþùèå äåéñòâèÿ: 1. Ùåëêíèòå ïðàâîé êíîïêîé ìûøè íà ïàíåëè Connection, êîòîðàÿ îòîáðàæàåòñÿ â íèæíåé ÷àñòè äèçàéíåðà ñåðâèñîâ, è â êîíòåêñòíîì ìåíþ âûáåðèòå òèï ñîåäèíåíèÿ, êîòîðîå áóäåò ñîçäàíî. Ðåçóëüòàòîì áóäåò îòêðûòèå îêíà Connection Manager. 2. Âûáåðèòå òèï ñîåäèíåíèÿ OLE DB, à òàêæå çàäàéòå ïàðàìåòðû ïðîâàéäåðà OLE DB äëÿ ñîåäèíåíèÿ (ðèñ. 6.9). Ïîâòîðèòå îïèñàííûå äåéñòâèÿ äëÿ ñîçäàíèÿ ñîåäèíåíèÿ ñ èñòî÷íèêîì è ïîëó÷àòåëåì äàííûõ, à òàêæå òåêñòîâûì ôàéëîì, â êîòîðûé áóäóò çàïèñûâàòüñÿ îøèáî÷íûå ñòðîêè. Ïîñëå ñîçäàíèÿ ñîåäèíåíèÿ âàì íåîáõîäèìî óñòàíîâèòü ñâÿçü ìåæäó ñîçäàííûìè èñòî÷íèêàìè äàííûõ è îïðåäåëåííûìè ñîåäèíåíèÿìè. Äëÿ ýòîãî âûïîëíèòå ñëåäóþùèå äåéñòâèÿ: 1. Ùåëêíèòå ïðàâîé êíîïêîé ìûøè íà îáúåêòå Data Flow è â êîíòåêñòíîì ìåíþ âûáåðèòå îäèí èç ïàðàìåòðîâ — Edit èëè Advanced Edit. 2.  ðàñêðûâàþùåìñÿ ñïèñêå âûáåðèòå îäíî èç ðàíåå ñîçäàííûõ ñîåäèíåíèé.
6.2. Èíñòðóìåíòû ñåðâèñîâ èíòåãðàöèè
155
Ðèñ. 6.9. Ìåíåäæåð ñîåäèíåíèÿ
Ïîñëå ñîçäàíèÿ ñîåäèíåíèÿ âû îïðåäåëÿåòå ñâÿçü ìåæäó êîëîíêàìè òàáëèö è äðóãèå ïàðàìåòðû ïðåîáðàçîâàíèÿ äàííûõ (åñëè â íèõ åñòü íåîáõîäèìîñòü). Ïî çàâåðøåíèè äàííîãî ïðîöåññà âêëàäêà Data Flow äèçàéíåðà ñåðâèñîâ áóäåò èìåòü ñëåäóþùèé âèä (ðèñ. 6.10).  îáëàñòè ðàçðàáîòêè îòîáðàæåíû äâà èñòî÷íèêà äàííûõ (òèïîâ OLE DB Source è OLE DB Destination) è îäèí òåêñòîâûé ôàéë (òèïà Flat File Destination). Ìåæäó íèìè îòîáðàæàþòñÿ ñòðåëêè, ïîêàçûâàþùèå íàñòðîåííûå ñîåäèíåíèÿ ìåæäó èñòî÷íèêàìè äàííûõ è òåêñòîâûì ôàéëîì.  äàííîì ñëó÷àå çåëåíàÿ ñòðåëêà îçíà÷àåò ñîåäèíåíèå ìåæäó èñòî÷íèêîì è ïîëó÷àòåëåì äàííûõ, à êðàñíàÿ — îáðàáîò÷èê îøèáîê (â íàøåì ñëó÷àå — çàïèñü â òåêñòîâûé log-ôàéë). Ïàðàìåòðû ñîåäèíåíèÿ ìåæäó ïàðàìè îáúåêòîâ îòîáðàæàþòñÿ íà âêëàäêå Connections. Äàëåå ðàññìîòðèì íàáîð îêîí è ýëåìåíòîâ èíòåðôåéñà Business Intelligence Development Studio: · Ãðàôè÷åñêîå îòîáðàæåíèå âûïîëíåíèÿ ïàêåòà — ïîñëå òîãî êàê ïàêåò áóäåò ñîçäàí, òî åñòü âñå èñòî÷íèêè äàííûõ áóäóò îïðåäåëåíû, à òàêæå çàäàíû ïàðàìåòðû îáðàáîò÷èêîâ ñîáûòèé è íàñòðîåíû ïàðàìåòðû ñâÿçåé ìåæäó íèìè, ìîæíî ïåðåéòè ê çàïóñêó ïàêåòà. Äëÿ òîãî ÷òîáû çàïóñòèòü ïàêåò èç äèçàéíåðà, äîñòàòî÷íî ïðîñòî ùåëêíóòü íà çåëåíîé ñòðåëêå óêàçàòåëåì ìûøè èëè âûáðàòü ïóíêò Debug4Start â ìåíþ äèçàéíåðà ñåðâèñîâ. Ïåðåä
156
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
çàïóñêîì ïàêåòà æåëàòåëüíî îïðåäåëèòü òî÷êè îñòàíîâà. Ýòî ïîçâîëèò îòëàäèòü ñëîæíûå ïàêåòû è çàäàòü íàñòðîéêè äëÿ äîïîëíèòåëüíûõ îáðàáîò÷èêîâ ñîáûòèé. Äëÿ äîáàâëåíèÿ òî÷êè îñòàíîâà â ïàêåò âûáåðèòå â ìåíþ äèçàéíåðà ñåðâèñîâ ïóíêò Debug4New Breakpoint. Ïîñëå çàïóñêà ïàêåòà â àâòîìàòè÷åñêîì ðåæèìå îòîáðàæàþòñÿ îêíà Watch è Call Stack.
Ðèñ. 6.10. Äèçàéíåð ïîòîêîâ äàííûõ
· Îêíî Solution Explorer — åùå îäíî óëó÷øåíèå äèçàéíåðà îò÷åòîâ. Äàííûé èíñòðóìåíò ñîäåðæèò èåðàðõè÷åñêîå äåðåâî ïàêåòîâ ñåðâèñîâ èíòåãðàöèè, êîòîðûå îòêðûòû â äàííûé ìîìåíò â äèçàéíåðå. Îáùèé âèä îáîçðåâàòåëÿ ïàêåòîâ ïîêàçàí íà ðèñ. 6.11.  êà÷åñòâå êîðíÿ äåðåâà âûñòóïàåò èìÿ ïàêåòà, çàòåì ñëåäóåò êîìïîíåíò ïàêåòà. Ùåëêíóâ óêàçàòåëåì ìûøè íàïðîòèâ ïàêåòà, âû ñìîæåòå ïðîñìîòðåòü ñïèñîê êîìïîíåíòîâ, âõîäÿùèõ â åãî ñîñòàâ. Îáîçðåâàòåëü ïàêåòîâ ïîçâîëÿåò íå òîëüêî ïðîñìàòðèâàòü ñîäåðæèìîå ïàêåòà (ñïèñîê îáúåêòîâ, âõîäÿùèõ â åãî ñîñòàâ), íî è óäàëÿòü íåêîòîðûå èç íèõ èëè ðåäàêòèðîâàòü èõ ñâîéñòâà. Îäíàêî â îáîçðåâàòåëå ïàêåòîâ íåëüçÿ äîáàâèòü íîâûé îáúåêò. Äëÿ ýòîãî íåîáõîäèìî èñïîëüçîâàòü îáëàñòü ðàçðàáîòêè. · Îêíî Properties — äëÿ íàñòðîéêè ïàðàìåòðîâ ïàêåòà èñïîëüçóåòñÿ ñïåöèàëüíûé ìàñòåð Configuration Wizard. Ñ åãî ïîìîùüþ ìîæíî ëåãêî èçìåíÿòü îñíîâíûå ïàðàìåòðû ïàêåòà, ïðè÷åì âûïîëíÿòü ýòî ìîæíî äèíàìè÷åñêè. Ýòî îçíà÷àåò, ÷òî âûïîëíÿþùèéñÿ ïàêåò ìîæåò áûòü áûñòðî ïåðåíàñòðîåí ñ ïîìîùüþ ìàñòåðà êîíôèãóðàöèè è çàïóùåí â äðóãîé ñèñòåìå. Äëÿ ïåðåíîñà ïàêåòîâ ÷àñòî òðåáóåòñÿ èçìåíÿòü ïàðàìåòðû ñîåäèíåíèÿ, èñòî÷íèêà
6.3. Èíñòðóìåíòû ðàáîòû ñ ïàêåòàìè
157
è ïîëó÷àòåëÿ äàííûõ. Ýòî òðåáóåò íàñòðîéêè ïàðàìåòðîâ ïàêåòà, ÷òî ìîæåò áûòü ëåãêî è áûñòðî ñäåëàíî ñ ïîìîùüþ ìàñòåðà íàñòðîéêè. Ïîìèìî ýòîãî ñ ïîìîùüþ Configuration Wizard ìîæíî ñîçäàâàòü êîëëåêöèè íàñòðîåê, êîòîðûå â äàëüíåéøåì áóäóò ïðèìåíÿòüñÿ äëÿ äðóãèõ ïàêåòîâ, çàïóñêàåìûõ â ñèñòåìå. Äëÿ çàïóñêà Configuration Wizard âûáåðèòå â ìåíþ ïóíêò Configurations. Îòêðîåòñÿ îêíî Package Configurations Organization.  íåì íàæìèòå êíîïêó Add, ÷òî ïðèâåäåò ê çàïóñêó ìàñòåðà íàñòðîéêè.
Ðèñ. 6.11. Ïðîñìîòð ñîäåðæèìîãî ïàêåòà
6.3. Èíñòðóìåíòû ðàáîòû ñ ïàêåòàìè  ðàçäåëå 6.2 «Èíñòðóìåíòû ñåðâèñîâ èíòåãðàöèè» ìû ðàññìîòðåëè èíñòðóìåíòû äëÿ ñîçäàíèÿ ïðèëîæåíèé ñåðâèñîâ èíòåãðàöèè SQL Server 2005, èõ âíåäðåíèÿ è ïåðåíîñà íà äðóãèå ñèñòåìû.  äàííîì ðàçäåëå ìû îñòàíîâèìñÿ íà èíñòðóìåíòàõ ñåðâèñîâ èíòåãðàöèè, ïðåäíàçíà÷åííûõ äëÿ ðàáîòû ñ ðàíåå ñîçäàííûìè ïàêåòàìè. Âíà÷àëå ìû ðàññìîòðèì óòèëèòó Package Migration Wizard, êîòîðàÿ ïîçâîëÿåò êîíâåðòèðîâàòü ñóùåñòâóþùèå ïàêåòû, ñîçäàííûå â ïðåäûäóùèõ âåðñèÿõ SQL Server, â ïàêåòû SQL Server 2005. Äàííûé èíñòðóìåíò ïîçâîëèò ïåðåâåñòè âñå ðàíåå ñîçäàííûå ïàêåòû â íîâóþ ñðåäó è ïðè íåîáõîäèìîñòè äîáàâèòü äîïîëíèòåëüíóþ ôóíêöèîíàëüíîñòü ê ñóùåñòâóþùèì ïàêåòàì. Äàëåå ìû ðàññìîòðèì óòèëèòó Package Management. Îíà èñïîëüçóåòñÿ äëÿ ðàáîòû ñ ðàíåå ñîçäàííûìè ïàêåòàìè è ïðîñìîòðà èõ ïàðàìåòðîâ. È íàêîíåö, ìû ðàññìîòðèì íîâóþ óòèëèòó äëÿ âûïîëíåíèÿ ïàêåòîâ ñ èñïîëüçîâàíèåì êîìàíäíîé ñòðîêè. Ýòîò
158
Ãëàâà 6 • Ñåðâèñû èíòåãðàöèè
èíñòðóìåíò â çíà÷èòåëüíîé ìåðå óïðîùàåò ðàçâåðòûâàíèå ãîòîâûõ ðåøåíèé, òåñòèðîâàíèå ðàíåå ñîçäàííûõ ïàêåòîâ â íîâûõ ñèñòåìàõ, à â íåêîòîðûõ ñëó÷àÿõ èõ ýêñïëóàòàöèþ.
6.3.1. Ïåðåíîñ ïàêåòîâ  íîâîé âåðñèè SQL Server ïðîèçîøëè äîñòàòî÷íî áîëüøèå èçìåíåíèÿ. Ýòî êàñàåòñÿ êàê ìîäåëè äàííûõ, òàê è íîâûõ èíñòðóìåíòîâ è îáúåêòîâ. Ïîæàëóé, íàèáîëüøèå èçìåíåíèÿ êîñíóëèñü èíòåãðàöèè ñðåä ðàçðàáîòêè ïðîãðàììíûõ ïðèëîæåíèé SQL Server ñî ñðåäîé .NET Framework. Ýòî ïîçâîëèëî äîáàâèòü îãðîìíûé îáúåì ôóíêöèîíàëüíîñòè. Êàê ñëåäñòâèå ïîÿâëåíèÿ íîâûõ ôóíêöèé, ïîòðåáîâàëîñü ïåðåâîäèòü ðàíåå ñîçäàííûå ïðèëîæåíèÿ SQL Server 7.0 è 2000 â ñðåäû ðàçðàáîòêè SQL Server 2005. Íå ñòàë èñêëþ÷åíèåì ïåðåíîñ DTS-ïàêåòîâ â íîâóþ ñðåäó. Äëÿ óïðîùåíèÿ äàííîãî ïðîöåññà èñïîëüçóåòñÿ óòèëèòà Package Migration Wizard. Óòèëèòà Package Migration Wizard èñïîëüçóåòñÿ äëÿ ïåðåâîäà ïàêåòîâ ñåðâèñîâ èíòåãðàöèè, ñîçäàííûõ â ïðåäûäóùèõ âåðñèÿõ SQL Server, â íîâûé ôîðìàò SQL Server. Óòèëèòà êîíâåðòèðóåò òàêèå ýëåìåíòû ïàêåòà SQL Server 7.0 è 2000, êàê çàäà÷è, ïåðåìåííûå, ñîåäèíåíèÿ è ò. ä., â ñîîòâåòñòâóþùèå èì ýëåìåíòû ïàêåòà SQL Server 2005. Êîíâåðòèðîâàíèþ ìîãóò ïîäâåðãàòüñÿ âñå ýëåìåíòû DTSïàêåòà, çà èñêëþ÷åíèåì ïîëüçîâàòåëüñêèõ çàäà÷. Ïîëüçîâàòåëüñêèå çàäà÷è â íîâîé ñðåäå ðàçðàáîòêè SQL Server 2005 áóäóò èìåòü òó æå ñàìóþ ñòðóêòóðó, ÷òî è â SQL Server 2000. Ïðè ýòîì äëÿ ïîëüçîâàòåëüñêèõ çàäà÷ áóäóò ñîçäàíû âëîæåííûå ïàêåòû, ïðèâÿçàííûå ê ïàêåòó, êîòîðûé ïåðåíîñèòñÿ íà íîâóþ ñèñòåìó. Åùå îäíî íåïðèÿòíîå èñêëþ÷åíèå, ñ êîòîðûì íå ñïðàâëÿåòñÿ Package Migration Wizard, — ýòî ñöåíàðèè. Íåêîòîðûå èç ñöåíàðèåâ ìîãóò áûòü êîíâåðòèðîâàíû â çàäà÷è òèïà ActiveX Script, îäíàêî ñöåíàðèè, îòíîñÿùèåñÿ ê îáúåêòíîé ìîäåëè DTS, íå ìîãóò áûòü ïåðåíåñåíû â íîâóþ ñèñòåìó.
6.3.2. Óòèëèòà óïðàâëåíèÿ ïàêåòàìè ñåðâèñîâ èíòåãðàöèè Åùå îäíà óòèëèòà äëÿ ðàáîòû ñ ðàíåå ñîçäàííûìè ïàêåòàìè — ýòî Package Management Utility. Äëÿ çàïóñêà ýòîé óòèëèòû ââåäèòå â êîìàíäíîé ñòðîêå dtutil. Äàííàÿ óòèëèòà ïîçâîëÿåò ïðîñìàòðèâàòü ñîäåðæèìîå ïàêåòà, êîòîðûé õðàíèòñÿ â áàçå äàííûõ SQL Server. Îíà òàêæå ìîæåò èñïîëüçîâàòüñÿ äëÿ êîïèðîâàíèÿ, óäàëåíèÿ ñóùåñòâóþùåãî ïàêåòà è äëÿ äîáàâëåíèÿ öèôðîâîé ïîäïèñè.
6.3.3. Óòèëèòà èñïîëíåíèÿ ïàêåòîâ ñåðâèñîâ èíòåãðàöèè Äëÿ ðàáîòû ñ ãîòîâûìè ïàêåòàìè ñóùåñòâóþò äâå óòèëèòû: dtexec è dtexecui. Ïåðâàÿ èñïîëüçóåòñÿ äëÿ çàïóñêà ïàêåòà èç êîìàíäíîé ñòðîêè, à âòîðàÿ îòîáðàæàåò ïîëüçîâàòåëüñêèé èíòåðôåéñ ïðè çàïóñêå ïàêåòà. Îñîáåííîñòüþ óòèëèòû dtexec ÿâëÿåòñÿ òî, ÷òî îíà ìîæåò èñïîëüçîâàòüñÿ äëÿ îáåñïå÷åíèÿ íåîáõîäèìîãî óðîâíÿ áåçîïàñíîñòè è çàïóñêàòüñÿ ñ çàøèôðîâàííûìè àðãóìåíòàìè.  òî æå âðåìÿ óòèëèòà dtexecui ìîæåò èñïîëüçîâàòüñÿ äëÿ ãåíåðèðîâàíèÿ òåêñòîâûõ ôàéëîâ,
6.3. Èíñòðóìåíòû ðàáîòû ñ ïàêåòàìè
159
ñîäåðæàùèõ êîìàíäû è ïàðàìåòðû, êîòîðûå íåîáõîäèìû äëÿ íîðìàëüíîé ðàáîòû dtexec. Îáùèé âèä èíòåðôåéñà dtexecui ïîêàçàí íà ðèñ. 6.12.
Ðèñ. 6.12. Óòèëèòà äëÿ âûïîëíåíèÿ ïàêåòîâ
Ñåðâèñû íîòèôèêàöèè
7
Ñåðâèñû íîòèôèêàöèè âïåðâûå áûëè ïðåäñòàâëåíû âìåñòå ñ SQL Server 2000.  íîâîé âåðñèè SQL Server ñåðâèñû íîòèôèêàöèè îïðåäåëèëèñü â êà÷åñòâå îòäåëüíîãî ïðîãðàììíîãî ïðîäóêòà, ïîñòàâëÿåìîãî âìåñòå ñ ÿäðîì ñèñòåìû SQL Server 2005. ×òî ïðåäñòàâëÿåò ñîáîé äàííûé íàáîð ñåðâèñîâ? Ýòî ñðåäà, ïîçâîëÿþùàÿ ðàçðàáîò÷èêàì ñîçäàâàòü ïðèëîæåíèÿ äëÿ îáìåíà ñîîáùåíèÿìè íà îñíîâå ìåõàíèçìà ïîäïèñêè èëè ïðèíóäèòåëüíîé äîñòàâêè. Ñåðâèñû íîòèôèêàöèè èñïîëüçóþòñÿ âî ìíîãèõ êîìïàíèÿõ äëÿ äîñòàâêè ïåðñîíàëèçèðîâàííîé èíôîðìàöèè ïîäïèñ÷èêàì ðàçëè÷íûõ ñåðâèñîâ. Íàïðèìåð, â îäíîé èç ñëóæá Microsoft ñåðâèñû íîòèôèêàöèè èñïîëüçóþòñÿ äëÿ äîñòàâêè íîâîñòåé íà ìîáèëüíûå óñòðîéñòâà ðàçëè÷íûõ òèïîâ. Íà ñàéòå www.ESPN.com ñóùåñòâóåò ïîäïèñêà, êîòîðàÿ ïîçâîëÿåò èíôîðìèðîâàòü ïîäïèñ÷èêà î ñ÷åòå ðàçëè÷íûõ ñïîðòèâíûõ ìàò÷åé. Ýòà ïîäïèñêà òàêæå èñïîëüçóåò ñåðâèñû íîòèôèêàöèè îò êîìïàíèè Microsoft. Ìîæíî íàçâàòü åùå äîñòàòî÷íî ìíîãî ðàçëè÷íûõ êîìïàíèé, â êîòîðûõ èñïîëüçóþòñÿ ñåðâèñû íîòèôèêàöèè. Ñ ïîìîùüþ ýòîé ñðåäû ðàçðàáîòêè ìîæíî ñîçäàâàòü ïðèëîæåíèÿ, êîòîðûå áóäóò ðàññûëàòü ïåðñîíàëèçèðîâàííóþ èíôîðìàöèþ, õðàíÿùóþñÿ â áàçå äàííûõ Microsoft SQL Server, ïîäïèñ÷èêó íà îñíîâå îïðåäåëåííûõ èì ïðåäïî÷òåíèé.  ýòîé ãëàâå ìû ðàññìîòðèì ñòðóêòóðó ñåðâèñîâ íîòèôèêàöèè è ñäåëàåì îáùèé îáçîð âîçìîæíîñòåé ñåðâèñîâ. Ïîñëå ýòîãî ìû èçó÷èì âîçìîæíîñòè ñèñòåìû ïî ñîçäàíèþ ïðèëîæåíèé (ñåðâèñîâ íîòèôèêàöèè), à çàòåì ðàññìîòðèì íåñêîëüêî ïðèìåðîâ ïîäîáíûõ ïðèëîæåíèé.  õîäå ðàññìîòðåíèÿ âîçìîæíîñòåé ñèñòåìû ìû áóäåò îñòàíàâëèâàòüñÿ íà ïðèìåðàõ è ëèñòèíãàõ ïðîãðàììíîãî êîäà, ÷òî ïîçâîëèò áîëåå äåòàëüíî èçó÷èòü âîçìîæíîñòè ñåðâèñîâ íîòèôèêàöèè è ñîçäàòü ïðîñòåéøåå ïðèëîæåíèå.
7.1. Îáçîð è àðõèòåêòóðà ñåðâèñîâ íîòèôèêàöèè Ñåðâèñû íîòèôèêàöèè ïðåäñòàâëÿþò ñîáîé ïðîãðàììíûé ñëîé, êîòîðûé ðàñïîëàãàåòñÿ ìåæäó èñòî÷íèêîì äàííûõ (â ýòîì ñëó÷àå áàçîé äàííûõ íà îñíîâå SQL Server)
7.1. Îáçîð è àðõèòåêòóðà ñåðâèñîâ íîòèôèêàöèè
161
è ïîëó÷àòåëåì ýòèõ äàííûõ. Îáðàáîòêà äàííûõ ìîæåò âûïîëíÿòüñÿ êàê ñðåäñòâàìè SQL Server, òàê è ñðåäñòâàìè ñåðâèñîâ íîòèôèêàöèè. Ñåðâèñû íîòèôèêàöèè ìîãóò áûòü íàñòðîåíû òàêèì îáðàçîì, ÷òî îíè áóäóò âûïîëíÿòü ìîíèòîðèíã êàêèõ-ëèáî ñîáûòèé è íà îñíîâå ýòèõ ñîáûòèé âûïîëíÿòü ôèëüòðàöèþ è ïåðåñûëêó èíôîðìàöèè, îòíîñÿùåéñÿ ê äàííûì ñîáûòèÿì èëè íå èìåþùóþ ïðÿìîãî îòíîøåíèÿ ê íèì. Äëÿ îïðåäåëåíèÿ ïàðàìåòðîâ óñòðîéñòâà, íà êîòîðîå áóäåò âûïîëíÿòüñÿ äîñòàâêà ñîîáùåíèÿ, à òàêæå ñïîñîáà äîñòàâêè èñïîëüçóåòñÿ ðàñïèñàíèå.  ðàñïèñàíèè äîñòàâêè çàäàåòñÿ ôîðìàò è àäðåñ äîñòàâêè ñîîáùåíèÿ â îïðåäåëåííûå ïðîìåæóòêè âðåìåíè. Ñåðâèñû íîòèôèêàöèè ñîäåðæàò ñëåäóþùèå îñíîâíûå êîìïîíåíòû: · ÿäðî ñåðâèñà íîòèôèêàöèè; · ñîáûòèÿ; · ïîäïèñêà; · íîòèôèêàöèÿ.  ñëåäóþùèõ ðàçäåëàõ ìû áîëåå äåòàëüíî ðàññìîòðèì êàæäóþ èç ñîñòàâíûõ ÷àñòåé ñåðâèñîâ íîòèôèêàöèè. Íà ðèñ. 7.1 ïîêàçàíà îáùàÿ àðõèòåêòóðà ñåðâèñà íîòèôèêàöèè, ñîäåðæàùàÿ ïåðå÷åíü îñíîâíûõ êîìïîíåíòîâ.
Ðèñ. 7.1. Êîìïîíåíòû ñåðâèñà íîòèôèêàöèè
7.1.1. ßäðî ñåðâèñà íîòèôèêàöèè Îñíîâíûì ýëåìåíòîì ñåðâèñà íîòèôèêàöèè ÿâëÿåòñÿ ÿäðî íîòèôèêàöèè. ßäðî íîòèôèêàöèè — ýòî ïðèëîæåíèå, êîòîðîå çàíèìàåòñÿ ïîñòîÿííûì ìîíèòîðèíãîì ñîáûòèé è âûïîëíÿåò ñðàâíåíèå ïðîèçîøåäøèõ ñîáûòèé ñ ïàðàìåòðàìè ïîäïèñêè.  ñëó÷àå ñîâïàäåíèÿ ïîäïèñ÷èêó îòïðàâëÿåòñÿ íîòèôèêàöèîííîå ñîîáùåíèå â ôîðìàòå, îïðåäåëåííîì ðàçðàáîò÷èêîì èëè ïîëó÷àòåëåì ñîîáùåíèÿ. Ãèáêîñòü ñåðâèñà íîòèôèêàöèè çàâèñèò îò òîãî, êàêèå ïàðàìåòðû ñîáûòèÿ ñðàâíèâàþòñÿ ñ òåìè ïàðàìåòðàìè ñîáûòèÿ, êîòîðûå îïðåäåëåíû â ïîäïèñêå. ×åì èõ êîëè÷åñòâî áîëüøå, òåì áîëåå ãèáêèì ÿâëÿåòñÿ òîò èëè èíîé ñåðâèñ ïîäïèñêè. Ñïåöèàëèñòû Microsoft ðàçðàáàòûâàëè ïëàòôîðìó ñåðâèñîâ íîòèôèêàöèè SQL Server 2005 òàêèì îáðàçîì, ÷òîáû îíà ìîãëà îäíîâðåìåííî îáðàáàòûâàòü ìèëëèîíû ñîáûòèé, îòñëåæèâàòü òàêîå æå êîëè÷åñòâî ïîäïèñ÷èêîâ è îòïðàâëÿòü îäíîâðåìåííî íå ìåíüøåå êîëè÷åñòâî íîòèôèêàöèîííûõ ñîîáùåíèé. Äëÿ ýòîãî ñïåöèàëèñòàì Microsoft íåîáõîäèìî áûëî âîñïîëüçîâàòüñÿ ôóíêöèîíàëüíîñòüþ ÿäðà SQL Server 2005, ÷òî ïîçâîëèëî áûñòðî èçâëåêàòü ñòðîêè èç òàáëèöû ñîáûòèé, ñðàâíèâàòü èõ ñ ñîîòâåòñòâóþùèìè ñòðîêàìè òàáëèöû ïîäïèñêè è îòïðàâëÿòü íîòèôèêàöèîííûå ñîîáùåíèÿ â ñëó÷àå ñîâïàäåíèÿ ýòèõ ñòðîê.
162
Ãëàâà 7 • Ñåðâèñû íîòèôèêàöèè
7.1.2. Ñîáûòèÿ Ñîáûòèÿ ñåðâèñîâ íîòèôèêàöèè ïðåäñòàâëÿþò ñîáîé îäíî èëè íåñêîëüêî äåéñòâèé, êîòîðûå ïðîèñõîäÿò ñ ñèñòåìîé ïîä âîçäåéñòâèåì îêðóæàþùèõ ñèñòåì, äåéñòâèé ïîëüçîâàòåëåé èëè äåéñòâèé îïåðàöèîííîé ñèñòåìû.  êà÷åñòâå ïðèìåðà ñîáûòèÿ ñåðâèñà íîòèôèêàöèè ìîæíî ïðèâåñòè ðåãèñòðàöèþ íîâîãî ïîäïèñ÷èêà íà îïðåäåëåííóþ ïîäïèñêó èëè ñîâïàäåíèå ñèñòåìíîãî âðåìåíè ñ ïóíêòîì ðàñïèñàíèÿ äëÿ ðàññûëêè ýëåêòðîííûõ ñîîáùåíèé. Ñîáûòèÿ ñåðâèñà íîòèôèêàöèè õðàíÿòñÿ â âèäå îòäåëüíûõ ñòðîê â òàáëèöå. ×òåíèå è îáðàáîòêà äàííûõ ñòðîê ïîçâîëÿþò ðåàëèçîâàòü ïðîãðàììíîå ðåøåíèå äëÿ ðàññûëêè ñîîáùåíèé ïîäïèñ÷èêàì (áóäü òî ïîëüçîâàòåëü èëè ïðîãðàììíîå ðåøåíèå).
7.1.3. Ïîäïèñêà Ïîäïèñêà — ýòî ñïîñîá ñîîáùèòü ñåðâèñó íîòèôèêàöèè î òîì, êàêóþ èíôîðìàöèþ äîëæåí ïîëó÷àòü ïîäïèñ÷èê, â êàêîì ôîðìàòå è ñîãëàñíî êàêîìó ãðàôèêó. Ôîðìàò è ãðàôèê ïîëó÷åíèÿ ïîäïèñêè ìîãóò áûòü èçíà÷àëüíî îïðåäåëåíû â ñèñòåìå, òàêèì îáðàçîì, ïîäïèñ÷èê, îòïðàâëÿÿ ýëåêòðîííîå ñîîáùåíèå íà çàäàííûé àäðåñ, ñîãëàøàåòñÿ ñ îïðåäåëåííûìè óñëîâèÿìè ïîäïèñêè (íàïðèìåð, ýëåêòðîííûå ñîîáùåíèÿ áóäóò îòïðàâëÿòüñÿ îäèí ðàç â äåíü â 12:00). Êàæäûé ïîëüçîâàòåëü, êîòîðûé õîòÿ áû ðàç ïîëüçîâàëñÿ ñåðâèñàìè ïîäïèñêè, ïîíèìàåò, êàê ìîæíî âûïîëíèòü ïîäïèñêó íà òó èëè èíóþ ãðóïïó íîâîñòåé. Äëÿ õðàíåíèÿ ïîäïèñêè ïîëüçîâàòåëåé íà íîâîñòè èëè ñîáûòèÿ â ñåðâèñàõ íîòèôèêàöèè èñïîëüçóåòñÿ òàáëèöà, â êà÷åñòâå ñòðîê êîòîðîé õðàíÿòñÿ çàïèñè î ïîäïèñ÷èêàõ è èõ àäðåñàõ äëÿ äîñòàâêè íîòèôèêàöèîííîãî ñîîáùåíèÿ.
7.1.4. Íîòèôèêàöèÿ Íîòèôèêàöèÿ — ýòî ñîîáùåíèå, êîòîðîå áóäåò îòïðàâëåíî ïîëüçîâàòåëþ (ïîäïèñ÷èêó) ïðè íàñòóïëåíèè òîãî èëè èíîãî ñîáûòèÿ (âíåøíåãî èëè ñèñòåìíîãî). Íîòèôèêàöèÿ îòïðàâëÿåòñÿ ïîäïèñ÷èêó ñîãëàñíî ïàðàìåòðàì ïîäïèñêè. Îíà ìîæåò èìåòü íåñêîëüêî ôîðìàòîâ â ñîîòâåòñòâèè ñ òåìè ïàðàìåòðàìè, êîòîðûå çàäàë ðàçðàáîò÷èê âî âðåìÿ ñîçäàíèÿ ñèñòåìû èëè íàñòðîèë ïîäïèñ÷èê ñ ïîìîùüþ çàäàííîãî èíòåðôåéñà. Íàïðèìåð, â ñëó÷àå ïîäïèñêè íà íîâîñòíóþ êîëîíêó íà îäíîì èç ñàéòîâ ïîëüçîâàòåëü áóäåò ïîëó÷àòü íîòèôèêàöèîííûå ñîîáùåíèÿ ïî ýëåêòðîííîé ïî÷òå. Ôîðìàò äàííûõ ñîîáùåíèé íàñòðàèâàåòñÿ âî âðåìÿ óñòàíîâêè ñèñòåìû è ìîæåò ó÷èòûâàòü òèï óñòðîéñòâà, íà êîòîðîå áóäóò ïðèõîäèòü ýëåêòðîííûå ñîîáùåíèÿ (íàïðèìåð, îáû÷íûé êîìïüþòåð, PDA èëè ñìàðòôîí).
7.1.5. Àðõèòåêòóðà ñåðâèñîâ íîòèôèêàöèè Êàê ìû óïîìèíàëè ðàíåå, ñåðâèñû íîòèôèêàöèè ïðåäñòàâëÿþò ñîáîé ïëàòôîðìó äëÿ ñîçäàíèÿ ïðèëîæåíèé, êîòîðûå áóäóò îáðàáàòûâàòü ñîáûòèÿ è íà îñíîâå ýòèõ ñîáûòèé îòïðàâëÿòü îïîâåùåíèÿ ïîäïèñ÷èêàì. Ýòî ïëàòôîðìà, ïîçâîëÿþùàÿ ñîçäàâàòü è ðàçâåðòûâàòü ïðèëîæåíèÿ äëÿ ðàññûëêè óâåäîìëåíèé, ýëåêòðîííûõ ñîîáùåíèé è ñîîáùåíèé â äðóãèõ ôîðìàòàõ ïîäïèñ÷èêàì ñîãëàñíî îïðåäåëåí-
7.1. Îáçîð è àðõèòåêòóðà ñåðâèñîâ íîòèôèêàöèè
163
íûì èìè ïàðàìåòðàì ïîäïèñêè. Ïðèëîæåíèÿ ñåðâèñîâ íîòèôèêàöèè ñîçäàþòñÿ ñ èñïîëüçîâàíèåì T-SQL è XML. Èíòåãðàöèÿ ñ Microsoft .NET Framework ïîçâîëÿåò èñïîëüçîâàòü äðóãèå ðàñïðîñòðàíåííûå òåõíîëîãèè êîìïàíèè Microsoft äëÿ ñîçäàíèÿ ñåðâèñîâ íîòèôèêàöèè è ïðèëîæåíèé ðàññûëêè ñîîáùåíèé. Ïîääåðæèâàåòñÿ âîçìîæíîñòü ñîçäàíèÿ êàê 32-ðàçðÿäíûõ ïðèëîæåíèé, òàê è 64-ðàçðÿäíûõ. Îáùèé âèä àðõèòåêòóðû ñåðâèñîâ íîòèôèêàöèè ïðèâîäèòñÿ íà ðèñ. 7.2.
Ðèñ. 7.2. Àðõèòåêòóðà ñåðâèñà íîòèôèêàöèè
 âåðõíåé ÷àñòè äàííîé ñõåìû ðàñïîëàãàåòñÿ ïîëüçîâàòåëüñêîå ïðèëîæåíèå, êîòîðîå ñîçäàíî ðàçðàáîò÷èêîì äëÿ îòïðàâêè îïîâåùåíèé î òåõ èëè èíûõ ñîáûòèÿõ. Îíî òàêæå ïîçâîëÿåò äîáàâëÿòü èíôîðìàöèþ î ïîäïèñ÷èêå â ñîîòâåòñòâóþùóþ òàáëèöó ñåðâèñà íîòèôèêàöèè. Ïîäîáíîå ïðèëîæåíèå ìîæåò áûòü íàïèñàíî íà ASP.NET (ÿâëÿòüñÿ âåá-ïðèëîæåíèåì), íà îäíîì èç ÿçûêîâ îáúåêòíî-îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ (Win32-ïðèëîæåíèå) èëè ìîæåò ÿâëÿòüñÿ ïðèëîæåíèåì ëþáîãî äðóãîãî äîñòóïíîãî òèïà, êîòîðîå ñìîæåò âûçûâàòü ôóíêöèè API, èñïîëüçóÿ íàáîð êëàññîâ .NET COM Interop.  ëåâîé ÷àñòè ðèñ. 7.2 îòîáðàæåíà ÷àñòü àðõèòåêòóðû ñåðâèñîâ íîòèôèêàöèè SQL Server 2005, êîòîðàÿ îòâå÷àåò çà ñîáûòèÿ, ãåíåðèðóåìûå âíåøíèìè èëè âíóòðåííèìè èñòî÷íèêàìè ñîáûòèé. Ñîáûòèÿ çàïèñûâàþòñÿ â ñîîòâåòñòâóþùèå òàáëèöû ñ ïîìîùüþ ïðîâàéäåðîâ ñîáûòèé. Ïðîâàéäåðû ñîáûòèé èñïîëüçóþòñÿ äëÿ ìîíèòîðèíãà âíåøíèõ èñòî÷íèêîâ äàííûõ íà ìîìåíò èõ èçìåíåíèÿ.  ñëó÷àå
164
Ãëàâà 7 • Ñåðâèñû íîòèôèêàöèè
âîçíèêíîâåíèÿ ñîáûòèÿ ïðîâàéäåð çàïèñûâàåò ñîîòâåòñòâóþùóþ èíôîðìàöèþ â òàáëèöó ñîáûòèé ñåðâèñà íîòèôèêàöèè.  SQL Server 2005 ðåàëèçîâàíû äâà òèïà ïðîâàéäåðîâ ñîáûòèé: · ñèñòåìíûé íàáëþäàòåëü — èñïîëüçóåòñÿ äëÿ ìîíèòîðèíãà èçìåíåíèé è ñîáûòèé íà óðîâíå îïåðàöèîííîé ñèñòåìû; · ïðîâàéäåð ñîáûòèé SQL Server — ïîçâîëÿåò âûïîëíÿòü ìîíèòîðèíã áàç äàííûõ SQL Server èëè ñåðâèñîâ àíàëèòèêè íà ïðåäìåò èçìåíåíèé èëè âîçíèêíîâåíèÿ êàêèõ-ëèáî ñîáûòèé. Ïàðàìåòðû ñåðâèñîâ íîòèôèêàöèè ìîãóò áûòü ðàñøèðåíû çà ñ÷åò ìîíèòîðèíãà âíåøíèõ èñòî÷íèêîâ äàííûõ ñ èñïîëüçîâàíèåì ïðîâàéäåðîâ ñîáûòèé. Êàê òîëüêî ïîëüçîâàòåëüñêèé ïðîâàéäåð ñîáûòèé çàôèêñèðóåò òî èëè èíîå ñîáûòèå, îí âûïîëíÿåò åãî çàïèñü â ñîîòâåòñòâóþùóþ òàáëèöó ñåðâèñîâ íîòèôèêàöèè.  öåíòðå ñõåìû íà ðèñ. 7.2 ðàñïîëàãàåòñÿ ÿäðî ñåðâèñà íîòèôèêàöèè (èëè ãåíåðàòîð). Îíî èñïîëüçóåòñÿ äëÿ ðàññûëêè íîòèôèêàöèîííûõ ñîîáùåíèé ñîãëàñíî ñîáûòèÿì, êîòîðûå áûëè çàôèêñèðîâàíû ñîîòâåòñòâóþùèìè ïðîâàéäåðàìè.  òîì ñëó÷àå, åñëè ïðîèçîøåäøåå ñîáûòèå ñîâïàäàåò ñ ïàðàìåòðàìè ñîáûòèÿ, êîòîðîå îïðåäåëåíî â ïîäïèñêå, ÿäðî ñåðâèñà íîòèôèêàöèè äîáàâëÿåò ñòðîêó, ñîäåðæàùóþ îïèñàíèå ñîáûòèÿ è èíôîðìàöèþ î ïîäïèñ÷èêå, â òàáëèöó íîòèôèêàöèè ñ öåëüþ äàëüíåéøåé ðàññûëêè ñîîòâåòñòâóþùåé èíôîðìàöèè ïîäïèñ÷èêó.  ïðàâîé ÷àñòè ñõåìû ñåðâèñîâ íîòèôèêàöèè ðàñïîëàãàåòñÿ áðîêåð. Áðîêåð âûïîëíÿåò ìîíèòîðèíã íîâûõ íîòèôèêàöèé, êîòîðûå çàíîñÿòñÿ â òàáëèöó ÿäðîì ñåðâèñà, è âûïîëíÿåò ðàññûëêó ñîîòâåòñòâóþùèõ ñîîáùåíèé. Êàê òîëüêî ãåíåðàòîð äîáàâëÿåò íîâóþ çàïèñü â òàáëèöó íîòèôèêàöèè, áðîêåð ïîëó÷àåò íîâîå âõîæäåíèå èç ýòîé òàáëèöû è ïðèñòóïàåò ê ôîðìèðîâàíèþ ñîîáùåíèÿ â òîì ôîðìàòå, â êîòîðîì îíî îïðåäåëåíî â ïîäïèñêå. Ñíà÷àëà ñîîáùåíèå ñòðîèòñÿ â ôîðìàòå XML ñ èñïîëüçîâàíèåì XSLT, îïðåäåëåííîãî ïî óìîë÷àíèþ. Ïîñëå ýòîãî îïðåäåëÿþòñÿ ïàðàìåòðû óñòðîéñòâà, íà êîòîðîå áóäåò ïåðåäàíî äàííîå ñîîáùåíèå.  êà÷åñòâå ïîäîáíûõ óñòðîéñòâ ìîãóò âûñòóïàòü ïî÷òîâûå êëèåíòû, «òîíêèå» è «òîëñòûå» êëèåíòû, à òàêæå äðóãèå ïîëüçîâàòåëüñêèå ïðèëîæåíèÿ, ñîçäàííûå ñïåöèàëüíî äëÿ ýòèõ öåëåé. Âíóòðè áðîêåðà ñóùåñòâóþò òðè ïðîâàéäåðà: · ïðîâàéäåð SMTP — èñïîëüçóåòñÿ äëÿ äîñòàâêè ýëåêòðîííûõ ñîîáùåíèé ÷åðåç ïî÷òîâûå ñåðâåðû, ïîääåðæèâàþùèå äàííûé ïðîòîêîë; · ïðîâàéäåð ôàéëîâ — èñïîëüçóåòñÿ äëÿ äîñòàâêè îòäåëüíûõ ôàéëîâ íà êëèåíòñêèå êîìïüþòåðû; · ïðîâàéäåð HTTP — èñïîëüçóåòñÿ äëÿ äîñòàâêè ñîîáùåíèé â ôîðìàòå HTML, à òàêæå â äðóãèõ ôîðìàòàõ, ïîääåðæèâàþùèõ ïðîòîêîë HTTP. Òàêæå äàííûé ïðîâàéäåð ìîæåò èñïîëüçîâàòüñÿ äëÿ ðàññûëêè SMS-ñîîáùåíèé, íîòèôèêàöèé òèïà .NET Alert è SOAP-íîòèôèêàöèé. Ïîìèìî ñóùåñòâóþùèõ ïðîâàéäåðîâ ðàçðàáîò÷èêè ìîãóò ñîçäàâàòü ñâîè ñîáñòâåííûå èëè èñïîëüçîâàòü íàðàáîòêè äðóãèõ ãðóïï â êà÷åñòâå ïîëüçîâàòåëüñêèõ ïðîâàéäåðîâ äëÿ äîñòàâêè ñîîáùåíèé â ñïåöèàëüíîì ôîðìàòå èëè íà ñïåöèàëüíûå óñòðîéñòâà, êîòîðûå ïîääåðæèâàþò íåñòàíäàðòíûå ïðîòîêîëû.
7.2. Ðàçðàáîòêà ñåðâèñîâ íîòèôèêàöèè
165
7.2. Ðàçðàáîòêà ñåðâèñîâ íîòèôèêàöèè  ïåðâîé ÷àñòè äàííîé ãëàâû ìû ðàññìàòðèâàëè àðõèòåêòóðó ñåðâèñîâ íîòèôèêàöèè SQL Server 2005. Äàëåå ìû ðàññìîòðèì âîçìîæíîñòè ñîçäàíèÿ ïðèëîæåíèé äëÿ ðàññûëêè íîòèôèêàöèè, à òàêæå ýòàïû èõ ðàçðàáîòêè. Ñíà÷àëà ìû ðàññìîòðèì ýòàïû ðàçðàáîòêè ïîäîáíûõ ïðèëîæåíèé, âêëþ÷àþùèå ñîçäàíèå ñõåì è ïðàâèë, è ïîñëåäóþùåå êîìïèëèðîâàíèå ïðèëîæåíèé. Ïîñëå ýòîãî ìû ïåðåéäåì ê ñîçäàíèþ ïðèëîæåíèÿ íà ïðèìåðå.
7.2.1. Ýòàïû ðàçðàáîòêè ñåðâèñîâ íîòèôèêàöèè Ïðîöåññ ðàçðàáîòêè ïðèëîæåíèÿ äëÿ ðàáîòû ñ ñåðâèñàìè íîòèôèêàöèè ïîäðàçóìåâàåò íåñêîëüêî ýòàïîâ: · Ñîçäàíèå ñõåìû è ïðàâèë, ïî êîòîðûì áóäåò ðàáîòàòü ïðèëîæåíèå. · Êîìïèëÿöèÿ ïðèëîæåíèÿ. · Ñîçäàíèå èíòåðôåéñà, êîòîðûé ïîçâîëèò ïîëüçîâàòåëþ âûïîëíÿòü ïîäïèñêó è íàñòðàèâàòü ïàðàìåòðû ïðèëîæåíèÿ. · Äîáàâëåíèå ïîëüçîâàòåëüñêîãî êîìïîíåíòà, êîòîðûé ìîæåò ïîòðåáîâàòüñÿ ñîãëàñíî ëîãèêå ðàáîòû ïðèëîæåíèÿ. Ðàññìîòðèì ïåðå÷èñëåííûå ýòàïû áîëåå äåòàëüíî.
7.2.2. Ñõåìû è ïðàâèëà Ðàçðàáîò÷èê ïðèëîæåíèÿ äëÿ ðàáîòû ñ ñåðâèñîì íîòèôèêàöèè èñïîëüçóåò êîìáèíàöèþ XML è T-SQL, ÷òîáû ñîçäàòü ñõåìó è îïðåäåëèòü óñëîâèÿ ðàáîòû ïðèëîæåíèÿ. Âî âðåìÿ ñîçäàíèÿ ñõåìû è ïðàâèë ðàçðàáîò÷èê íà ñàìîì äåëå îïèñûâàåò ñîáûòèÿ, äëÿ ìîíèòîðèíãà êîòîðûõ áóäåò èñïîëüçîâàòüñÿ ïðèëîæåíèå. Ïîìèìî ýòîãî ñõåìà è ïðàâèëà ïîçâîëÿþò îïðåäåëèòü ïàðàìåòðû ïîäïèñêè, íîòèôèêàöèè è ëîãèêó ðàáîòû ïðèëîæåíèÿ, îáðàáàòûâàþùåãî èíôîðìàöèþ, êîòîðóþ ââîäèò ïîëüçîâàòåëü. Äëÿ òîãî ÷òîáû îïðåäåëèòü ïàðàìåòðû ñõåìû è ïðàâèëà îáðàáîòêè, èñïîëüçóþòñÿ äâà êîíôèãóðàöèîííûõ ôàéëà: adf.xml è config.xml. Ñîçäàâàòü è ðåäàêòèðîâàòü äàííûå ôàéëû ìîæíî ñ ïîìîùüþ îáû÷íîãî òåêñòîâîãî ðåäàêòîðà èëè ðåäàêòîðà äëÿ ðàáîòû ñ XML-äîêóìåíòàìè, ÷òî çíà÷èòåëüíî óïðîñòèò è óñêîðèò ñîçäàíèå òàêîãî ïðèëîæåíèÿ. Áîëåå äåòàëüíî ñòðóêòóðó ïåðå÷èñëåííûõ êîíôèãóðàöèîííûõ ôàéëîâ ìû ðàññìîòðèì äàëåå â ðàçäåëå 7.2.7 «Ñîçäàíèå è èñïîëüçîâàíèå êîíôèãóðàöèîííûõ ôàéëîâ».
7.2.3. Êîìïèëèðîâàíèå ïðèëîæåíèÿ Ïîñëå òîãî êàê áóäóò ñîçäàíû ñõåìà è ïðàâèëà îáðàáîòêè, ìîæíî ïðèñòóïèòü ê ñîçäàíèþ ïðèëîæåíèÿ ñåðâèñîâ íîòèôèêàöèè è åãî êîìïèëÿöèè. Ïðè ýòîì íåîáõîäèìî âûïîëíèòü ðåãèñòðàöèþ ñåðâèñà, êîòîðûé áóäåò óïðàâëÿòü ðàáîòîé ñîçäàííîãî ïðèëîæåíèÿ. Äëÿ êîìïèëÿöèè ïðèëîæåíèÿ â SQL Server 2005 èñïîëüçóåòñÿ óòèëèòà ñ êîìàíäíîé ñòðîêîé, êîòîðàÿ ïîçâîëÿåò ñîçäàâàòü, ðåãèñòðèðîâàòü
166
Ãëàâà 7 • Ñåðâèñû íîòèôèêàöèè
è îáíîâëÿòü ïðèëîæåíèå ñåðâèñîâ íîòèôèêàöèè. Ïîìèìî ýòîãî ðàáîòàòü ñ ïðèëîæåíèåì ñåðâèñîâ íîòèôèêàöèè ìîæíî, èñïîëüçóÿ SQL Server Management Studio. SQL Server Management Studio ðåàëèçóåò ïîëíûé ñïåêòð âîçìîæíîñòåé äëÿ ñîçäàíèÿ, êîìïèëÿöèè, ðàçâåðòûâàíèÿ è óïðàâëåíèÿ ïðèëîæåíèåì ñåðâèñîâ íîòèôèêàöèè.
7.2.4. Íàñòðîéêà ïðèëîæåíèÿ Ïîìèìî ñîçäàíèÿ ñàìîãî ïðèëîæåíèÿ ñåðâèñà íîòèôèêàöèè, êîòîðîå áóäåò âûïîëíÿòü ðàññûëêó ñîîáùåíèé ñîãëàñíî çàäàííûì êðèòåðèÿì, íåîáõîäèìî ðåàëèçîâàòü èíòåðôåéñ äëÿ ïîëüçîâàòåëÿ. Ñ ïîìîùüþ äàííîãî èíòåðôåéñà ïîëüçîâàòåëü ñìîæåò îïðåäåëÿòü ïàðàìåòðû ðàññûëêè, íàñòðàèâàòü ãðàôèê, ôîðìàò ñîîáùåíèÿ è ÷àñòîòó ðàññûëêè. Ïðèëîæåíèå äëÿ ââîäà ïîëüçîâàòåëüñêîé èíôîðìàöèè ìîæåò áûòü ðàçíûõ òèïîâ. Îáû÷íî îíî ñîçäàåòñÿ äëÿ ðàáîòû ñ ïîìîùüþ «òîíêîãî» êëèåíòà èëè â êà÷åñòâå Win32-ïðèëîæåíèÿ. Äëÿ ñîçäàíèÿ ïðèëîæåíèÿ ïîä «òîíêèé» êëèåíò ìîãóò èñïîëüçîâàòüñÿ òåõíîëîãèè ASP.NET èëè HTML. Äëÿ ñîçäàíèÿ Win32-ïðèëîæåíèé ìîãóò èñïîëüçîâàòüñÿ êàê ÿçûêè ñðåäû ðàçðàáîòêè .NET, òàê è ñðåäû ðàçðàáîòêè îò ñòîðîííèõ ïðîèçâîäèòåëåé (òàêèõ, êàê Delphi).
7.2.5. Ïîëüçîâàòåëüñêèå êîìïîíåíòû Ïîñëåäíèì ýòàïîì ðàçðàáîòêè ïðèëîæåíèÿ äëÿ ñåðâèñîâ íîòèôèêàöèè ìîæåò ÿâëÿòüñÿ äîáàâëåíèå êàêîãî-ëèáî ïîëüçîâàòåëüñêîãî êîìïîíåíòà, êîòîðûé òðåáóåòñÿ â ëîãèêå ðàáîòû ïðèëîæåíèÿ. Ïîëüçîâàòåëüñêèé êîìïîíåíò — ýòî îòäåëüíûé ìîäóëü èëè öåëîå ïðèëîæåíèå, êîòîðîå ìîæåò ïðåäñòàâëÿòü ñîáîé îäíî èç ñëåäóþùèõ ðåøåíèé: · ïðîâàéäåð ñîáûòèé; · ìîäóëü ôîðìèðîâàíèÿ ñîîáùåíèé; · ïðîòîêîë äëÿ äîñòàâêè ãîòîâîãî ñîîáùåíèÿ èëè ëþáîé äðóãîé ìîäóëü.
7.2.6. Ïðèìåðû ñåðâèñîâ íîòèôèêàöèè  ñëåäóþùåì ðàçäåëå ìû ðàññìîòðèì ïðèìåð ñåðâèñà íîòèôèêàöèè. Îí áóäåò âûïîëíÿòü ìîíèòîðèíã îïðåäåëåííîé òàáëèöû Microsoft SQL Server. Êàê òîëüêî çíà÷åíèå îïðåäåëåííîé ÿ÷åéêè â ýòîé òàáëèöå ïðåâûñèò ïîðîãîâîå, ñåðâèñ îòïðàâèò ïîëüçîâàòåëþ ýëåêòðîííîå ñîîáùåíèå. Ýòîò ïðèìåð ïðåäñòàâëÿåò ñîáîé íå ÷òî èíîå, êàê óïðîùåííóþ âåðñèþ ñêëàäñêîé ïðîãðàììû, ðàíåå ïðåäñòàâëåííîé â íàáîðå ïðèìåðîâ ñåðâèñîâ íîòèôèêàöèè SQL Server 2000. Îí ïîçâîëÿë âûïîëíÿòü àíàëîãè÷íûå äåéñòâèÿ ëèøü ïðè óñëîâèè èñïîëüçîâàíèÿ ñðåäñòâ SQL Server 2000.  íîâîé âåðñèè äëÿ ïðîâåðêè ñîäåðæèìîãî òàáëèöû è îáðàáîòêè ñîáûòèÿ, âîçíèêàþùåãî â ñëó÷àå ïðåâûøåíèÿ ïîðîãîâîãî çíà÷åíèÿ, èñïîëüçóåòñÿ áðîêåð ñåðâèñîâ.  äàííîì ïðèëîæåíèè ïîìèìî îáðàáîò÷èêà ñîáûòèé íåîáõîäèìî ïðåäóñìîòðåòü âîçìîæíîñòü ïîäïèñêè ïîëüçîâàòåëÿ íà èçìåíåíèå òàáëèöû. Òàêæå íåîáõîäèìî ïðåäóñìîòðåòü âîçìîæíîñòü ìîäèôèêàöèè ïðàâèëà,
7.2. Ðàçðàáîòêà ñåðâèñîâ íîòèôèêàöèè
167
â ñîîòâåòñòâèè ñ êîòîðûì ïîëüçîâàòåëþ áóäåò îòïðàâëÿòüñÿ íîòèôèêàöèÿ.  êà÷åñòâå ñîîáùåíèÿ ñåðâèñ áóäåò îòïðàâëÿòü êîíå÷íîìó ïîëüçîâàòåëþ ñôîðìèðîâàííûé XML-ôàéë.
7.2.7. Ñîçäàíèå è èñïîëüçîâàíèå êîíôèãóðàöèîííûõ ôàéëîâ Ïðèëîæåíèå ñåðâèñà íîòèôèêàöèè â îáùåì ñëó÷àå ñîñòîèò èç äâóõ ôàéëîâ: îïèñàíèå ïðèëîæåíèÿ (ADF-ôàéë) è ôàéë êîíôèãóðàöèè ïðèëîæåíèÿ (ACF-ôàéëà). Îáà ýòè ôàéëà ïðåäñòàâëÿþò ñîáîé XML-ôàéëû, êîòîðûå äîëæíû áûòü ïîñòðîåíû ïî ñîîòâåòñòâóþùèì XSD-ñõåì. XSD-ñõåìû ïîçâîëÿþò ðàçðàáîò÷èêàì áûòü óâåðåííûìè, ÷òî â XML-ôàéëå áóäóò ñîäåðæàòüñÿ âñå íåîáõîäèìûå àòðèáóòû è ýëåìåíòû, êîòîðûå íåîáõîäèìû âî âðåìÿ ñîçäàíèÿ è íàñòðîéêè ïðèëîæåíèÿ. ADF-ôàéë ïðåäñòàâëÿåò ñîáîé ÿäðî ïðèëîæåíèÿ ñåðâèñà íîòèôèêàöèè.  äàííîì ôàéëå ñîäåðæèòñÿ çíà÷åíèå è îïèñàíèå ñëåäóþùèõ ýëåìåíòîâ: · ñòðóêòóðà ïðèëîæåíèÿ íîòèôèêàöèè, êîòîðîå áóäåò âûïîëíÿòü ðàññûëêó ñîîáùåíèé; · ñîáûòèÿ, ñîãëàñíî êîòîðûì áóäåò âûïîëíÿòüñÿ ðàññûëêà ñîîáùåíèé; · ïðàâèëà îáðàáîòêè ñîáûòèé.  ACF-ôàéëå ñîäåðæèòñÿ ñëåäóþùèé íàáîð àòðèáóòîâ: · èìÿ ýêçåìïëÿðà SQL Server 2005, ñ êîòîðûì âçàèìîäåéñòâóåò ïðèëîæåíèå; · íàèìåíîâàíèå òàáëèö, èç êîòîðûõ áóäóò ñ÷èòûâàòüñÿ çíà÷åíèÿ; · íàèìåíîâàíèå ñåðâèñà íîòèôèêàöèè; · ïàïêà, â êîòîðîé ðàñïîëàãàþòñÿ ôàéëû ïðèëîæåíèÿ, à òàêæå äðóãàÿ êîíôèãóðàöèîííàÿ è íàñòðîå÷íàÿ èíôîðìàöèÿ.  SQL Server 2000 íåîáõîäèìî áûëî ñîçäàâàòü îáà ôàéëà ïðàêòè÷åñêè «ñ íóëÿ».  SQL Server 2005 ðàçðàáîò÷èêè ïðèíÿëè ðåøåíèå àâòîìàòèçèðîâàòü äàííóþ ðàáîòó. Äëÿ ýòîãî áûëî ñîçäàíî ñïåöèàëüíîå ïðèëîæåíèå, êîòîðîå ïîçâîëÿåò â àâòîìàòè÷åñêîì ðåæèìå ñîçäàâàòü ACF- è ADF-ôàéëû. Êàê óïîìèíàëîñü ðàíåå, ñîçäàíèå ïðèëîæåíèÿ ñåðâèñà íîòèôèêàöèè íå îãðàíè÷èâàåòñÿ ñîçäàíèåì ýòèõ äâóõ ôàéëîâ — íåîáõîäèìî òàêæå ðàçðàáîòàòü ïðèëîæåíèå, êîòîðîå ïîçâîëèò ïîëüçîâàòåëÿì ïîäïèñûâàòüñÿ íà äàííûé ñåðâèñ. Ïîäîáíîå ïðèëîæåíèå ñîçäàåòñÿ ñ ïîìîùüþ ñðåäñòâ ãðàôè÷åñêîãî ïðîãðàììèðîâàíèÿ (íàïðèìåð, âõîäÿùèõ â ñîñòàâ .NET Framework). Íà îïèñàíèè ïðîöåññà ñîçäàíèÿ ïîäîáíûõ ïðèëîæåíèé â íàøåì ïðèìåðå ìû îñòàíàâëèâàòüñÿ íå áóäåì. Ðàññìîòðèì ñíà÷àëà ëèñòèíãè ACF- è ADF-ôàéëîâ, êîòîðûå ìîãóò èñïîëüçîâàòüñÿ â êà÷åñòâå ïðèìåðà.  ëèñòèíãå 7.1 ñîäåðæèòñÿ ACF-ôàéë. Ëèñòèíã 7.1. Ïðèìåð ïðîñòåéøåãî ACF-ôàéëà