Реферат: SQL Server 2000

Введение.

SQLServer 2000является довольносложным продуктом, работу с которымможно рассматриватьс разных сторон.В частности, можно выделитьдва основныхразделаработы с сервером, каждый из которыхпри ближайшемрассмотренииможет бытьлегко разделенна более мелкиеблоки: Оадминистрирование; Опрограммирование.

АдминистрированиеSQLServer 2000 всвою очередьможно разделитьна двечасти: администрированиесобственносервера иадминистрированиебаз дан­ных.Таким образом, администрированиебаз данныхпредставляетсобой от­дельнуюобласть работыс SQLServer 2000.Оно включаетразработкуструктуры базыданных, еереализацию, проектированиесистемы безопасности, созданиепользователейбазы данных, предоставлениеим прав доступа, создание объек­тови т. д. Кроме того, администраторбазы данныхдолжен периодическисозда­ватьрезервныекопии, выполнятьпроверку целостностиданных и следитьза размеромфайлов каксамой базыданных, так ижурнала транзакций.Указан­ныйсписок можнолегко продолжить, так как мыперечислилидалеко не всезадачиадминистрирования.

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

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

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

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

База данных— поименованнаясовокупностьвзаимосвязанныхданных, находящихся

под управле­ниемсистемы управлениябазами данных(СУБД). СУБД —это комплекс

программныхи языковыхсредств, необходимыхдля созданиябаз данных,

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

информации.

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

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

Различаютцентрализованныеи распределенныебазы данных.ОРаспределеннаябаза данныхсостоит изнесколькихчастей, хранимыхв раз­личныхЭВМ вычислительнойсети. Этот способобработкиподразумеваетналичиенесколькихсерверов, накоторых можетхранитьсяпересекающая­сяили даже дублирующаясяинформация.Для работы стакой базойдан­ныхиспользуетсясистема управленияраспределеннымибазами данных(СУРБД).

'ОЦентрализованнаябаза данныххранится впамяти однойвычислительнойсистемы, то есть базаданных располагаетсяна одном компьютере.Если для это­гокомпьютераустановленаподдержка сети, то множествопользователейс кли­ентских компьютеров могут одновременно обращаться к информации, хранящейсяв центральнойбазе данных.В локальныхсетях чащевсего исполь­зуетсяименно такойспособ обработкиданных. Системыцентрализованныхбаз данныхмогут существенноразличатьсяв зависимостиот их архитектуры.» Файл-сервер.БД располагаетсяна файл-сервере(или несколькихфайл-сер­верах), в качествекоторого можетиспользоватьсянаиболее мощнаяиз ПЭВМ, объединенныхв сеть. Функциифайл-серверазаключаются, в ос­новном, в хранении БДи обеспечениидоступа к нимпользователей, рабо­тающихна различныхкомпьютерах.Файлы базыданных в соответствиис пользовательскимизапросамипередаютсяна рабочиестанции, гдев основ­номи производитсяобработка.Переданныеданные обрабатываютсяСУБД, которая находитсяопять же накомпьютерахпользователей.После тогокак пользователивыполнят необходимыеизмененияданных, онико­пируютфайлы обратнона файл-сервер, где другиепользователи, в свою очередь, могут сноваих использовать.Кроме того, каждый пользовательможетсоздавать налокальномкомпьютересвои собственныебазы данных, используемыеим монопольно.Эта схема работаетпри не оченьбольших объемахданных. Приувеличениичисла компьютеровв сети или ростеБД производительностьрезко падает.Это связанос увеличениемобъема дан­ных, передаваемыхпо сети, таккак вся обработкапроисходитна компью­терепользователя.Явным недостаткомподобногоподхода являетсявысокая вероятностьпотери изменений, выполненныходними пользователями, при сохраненииизмененныхфайлов на центральныйсервер. Делов том, что пользователимогут и неподозревать, что помимо нихеще кто-то изменялданные.Примерами СУБД, предназначенныминепосредственнодля разра­боткилокальныхпользовательскихприложенийБД, то естьприложений, работающихна одном локальномкомпьютерелибо в компьютерной, сети являются:MicrosoftVisual FoxPro, Microsoft Access,Paradox,fpr Windows, dBasefor Windows идр.

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

обеспечиватьвыполнениеосновногообъема обработкиданных. Притехно­логииклиент-серверзапрос на выполнениеоперации сданными (напри­мер, обычная выборка), выдаваемыйклиентом (рабочейстанцией), порождаетнасервере поиски извлечениеданных. Извлеченныеданные (но нефай­лы)транспортируютсяпо сети от серверак клиенту дж.Система, использующаятехнологиюклиент-сервер, разделяетсяна две части: клиент­скаячасть (front-end)обеспечиваетграфическийинтерфейс инаходится накомпьютерепользователя; серверная часть(back-end), котораянаходит­сяна специальновыделенныхкомпьютерах, обеспечиваетуправлениедан­ными, разделениеинформации, администрированиеи безопасность.ПримерамиСУБД технологииклиент-серверявляются MicrosoftSQL Server,Oracle, IBM DB2, Sybase идр. Спецификойархитектурыклиент-серверявляетсяиспользованиеспециальногоязыка структурированныхзапросов(StructuredQuery Language, SQL), обеспечивающегопользовате­ляпростым и эффективныминструментомдоступа к данным.

Помимоподразделениябаз данных пометодам обработкиможно классифици­роватьих по используемоймодели (илиструктуре)данных. Модельданных — совокупностьструктур данныхи операций поих обработке.С помощью моделиданных можнонаглядно представитьструктуруобъектов иустановленныемеж­дуними связи. Длятерминологиимоделей данныххарактерныпонятия «эле­ментданных» и «правиласвязывания».Элемент данныхописывает любойна­борданных, а правиласвязыванияопределяюталгоритмывзаимосвязиэлементовданных. К настоящемувремени разработаномножестворазличныхмоделей дан­ных, но на практикеиспользуетсятри основных.Выделяютиерархическую, сетевуюи реляционнуюмодели данных.Соответственноговорят обиерархичес­ких, сетевых и реляционныхСУБД.

О Иерархическаямодель данных.Иерархическиорганизованныеданные встре­чаютсяв повседневнойжизни оченьчасто. Например, структуравысшего учеб­ногозаведения —это многоуровневаяиерархическаяструктура.Иерархичес­кая(древовидная)БД состоит изупорядоченногонабора элементов.В этой моделиисходные элементыпорождаютдругие элементы, причем этиэлементы всвою очередьпорождаютследующиеэлементы. Каждыйпорожденныйэле­ментимеет толькоодин порождающийэлемент/

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

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

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

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

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

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

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

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

Атрибут(или данное) —это некоторыйпоказатель, который характеризуетнекийобъект и принимаетдля конкретногоэкземпляраобъекта некотороечис­ловое, текстовое илииное значение.Информационнаясистема оперируетна­борамиобъектов, спроектированнымиприменительнок данной предметнойобласти, используя приэтом конкретныезначения атрибутов(данных) техилииных объектах.Например, возьмемв качественабора объектовклассы в школе.Число учениковв классе — этоданное, котороепринимаетчисловое значение(у одного класса28, у другого —32). Название класса— это данное, принимающеетекстовоезначение (уодного — 10А, удругого — 9Б ит. д.).

Атрибутнекоторогонабора объектовсам может бытьнабором объектов, име­ющихсобственныеатрибуты. Например, атрибутом лица(как экземпляранабо­раобъектов «Лица»)является вуз, который этолицо окончило(МГУ, МИФИ и т.п.). С другойстороны, конкретныйвуз — это экземплярнабора объектов«Вузы»и характеризуетсямножествомданных: фамилиейректора, адресом, спе­циализацией, числом студентови т. д. Наконец, ректор в своюочередь являетсяэкземпляромнабора объектов«Лица». Такимобразом, возникаетвозможностьустановлениясвязи междуэкземплярамиобъектов изразных наборов.

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

Основоположникомтеории реляционныхбаз данныхсчитаетсясотрудник фирмыIBMдокторЭ. Кодд, опубликовавший6 июня 1970 г. статьюARelational Modelof Data for Large Shared Data Banks (Реляционнаямодель данныхдля большихколлективныхбанков данных).В этой статьевпервые былиспользо­вантермин «реляционнаямодель данных», что и положилоначало реляцион­нымбазам данных.

Теорияреляционныхбаз данных, разработаннаяв 70-х годах в СШАдокто­ромЭ. Коддом, имеетпод собой мощнуюматематическуюОснову, описывающуюправилаэффективнойорганизацииданных. РазработаннаяЭ. Коддом теорети­ческаябаза сталаосновой дляразработкитеории проектированиябаз данных.

Э. Кодд, будучи математикомпо образованию, предложилиспользоватьдля обработкиданных аппараттеории множеств(объединение, пересечение, раз­ность, декартовопроизведение).Он доказал, чтолюбой наборданных можнопредставитьв виде двумерныхтаблиц особоговида, известныхв математикекак«отношения».

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

Таблицасостоит изстолбцов (полей)и строк (записей); имеет имя, уникаль­
ноевнутри базыданных. Таблицаотражает типобъекта реальногомира (сущ­
ность), а каждая еестрока— конкретныйобъект. Так, таблица Спортивная
секциясодержитсведения обовсех детях, занимающихсяв данной спортивной
секции, а ее строкипредставляютсобой наборзначений атрибутовкаждого кон­
кретногоребенка. Каждыйстолбец таблицы— это совокупностьзначенийконк­
ретногоатрибута объекта.Столбец Вес, например, представляетсобой
совокупностьвсех весовыхкатегорийдетей, занимающихсяв секции. Встолбце
Полмогутсодержатьсятолько дваразличныхзначения: «муж.»и «жен.». Этизначениявыбираютсяиз множествавсех возможныхзначений атрибутаобъекта, котороеназываетсядоменом (domain).Так, значения встолбце выбира­ютсяиз множествавсех возможныхвесов детей.

В самомобщем видедомен определяетсязаданием некоторогобазового' типаданных, к которомуотносятсяэлементы домена, и произвольногологическоговыражения, применяемогок элементамданных. Еслипри вычислениилогическо­гоусловия относительноэлемента данныхв результатеполучено значение«исти­на», то этот элементпринадлежитдомену. В простейшемслучае доменопределяетсякакдопустимоепотенциальноемножествозначений одноготипа. Например, со­вокупностьдат рождениявсех сотрудниковсоставляет«домен датрождения», аимена всехсотрудниковсоставляют«домен именсотрудников».Домен дат рож­денияимеет тип данных, позволяющийхранить информациюо моментахвреме­ни, а домен именсотрудниковдолжен иметьсимвольныйтип данных.

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

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

таккак, по всейвероятности, оно не имеетсмысла. Например, из сравненияимении даты рождениясотрудниканичего определенногоне выйдет.

В большинствесистем управленияреляционнымибазами данныхпонятие доменане реализовано.Каждыйэлемент данныхв отношенииможет бытьопределен суказанием егоадреса в форматеA[i,j], гдеА — элементданных, i—строка отношений,j— номератрибута отношения.

Количествоатрибутов вотношенииопределяетего порядок(или степень).Порядокотношения, приведенногов табл., равен4.


--PAGE_BREAK--Создание иобслуживаниебаз данных

Любаябаза данныхSQLServer 2000состоит изнабора таблиц, содержащихданные, и дополнительныхобъектов, создаваемыхдля обработкиданных. К та­кимобъектам относятся, например, представления, триггеры ихранимые про­цедуры.Данные сохраняютсяв таблицах всоответствиис их логическимопре­делением, например, данныеоб имеющихсяна складе товараххранятся водной таблице, а список персонала— в другой.

SQLServer позволяетодновременноподдерживатьмножество базданных, которыемогут иметьсвязи с другимибазами данныхлибо существоватьнеза­висимо.

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


Настоятельнорекомендуюне создаватьв системнойбазе данныхmasterникакихпользователь­скихобъектов, хотяэто и возможно.База данныхmasterсодержитсистемныетаблицы, которыехранят данныео параметрахфункционированияSQLServer. Поэтомуповреждениеданных в этойбазе можетпривести кнепредсказуемымпоследствиям.


SQLServer 2000предлагаетнесколько путейсоздания базданных. ОИспользованиеEnterpriseManager. Длясоздания базыданных с помощью

EnterpriseManager вконтекстномменю папкиDatabasesнанужном сервере.

выберитепункт NewDatabase (новаябаза данных). ;

О Использованиемастера CreateDatabase Wizard. Напанели инструментовEnterpriseManager щелкнитена кнопке Runa Wizard (запуститьмастера) и выберитенужного мастера.

О ИспользованиеTransact-SQL.Этотметод предполагаетвыполнениекоманды

CREATE DATABASE.

Кромеперечисленныхметодов имеетсяеще несколькоспособов созданиябаз данных, например средствамиSQL-DMO.Работас этими механизмамиявляет­сятемой отдельнойкниги и здесьрассматриватьсяне будет.

Один серверможет поддерживать, максимум, 32 767 базданных.

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

Перед созданиембазы данныхнеобходимоуяснить следующиемоменты:

О поумолчанию базыданных разрешеносоздаватьчленам фиксированныхро­лейсервера sysadminиdbcreator, хотяразрешениена созданиебаз данныхможнопредоставлятьи другим пользователям;

О пользователь, создающий базуданных, автоматическистановитсяее владель­цем;

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

О Primaryпервичныйфайл. Каждаябаза данныхобязательноимеет такойфайл, причемтолько один.В этом файлехранится системнаяинформацияо базеданных и ееобъектах. Здесьже размещаютсясистемныетаблицы. Крометого, в первичномфайле могутхраниться ипользовательскиеданные. По умол­чаниюэтот файл имеетрасширение.mdf.

О Secondary—вторичный файл.Здесь содержатсяпользовательскиеданные, непоместившиесяв первичномфайле. Еслибаза данныхнебольшая инет на­добностисоздаватьвторичныефайлы, то всюинформациюможно хранитьв первичномфайле. Однакоесли база данныхимеет большиеразмеры, можноиметьнескольковторичныхфайлов, причемдля удобстваработы с даннымиэтифайлы можнохранить наразных дисках.По умолчаниювторичныефай­лы имеютрасширение.ndf.

О TransactionLog файлжурнала транзакций.Минимальныйразмер такогофайла—512Кбайт.База данныхдолжна иметь, по крайнеймере, один файлжурналатранзакций.В этом файлебудет хранитьсяинформацияо транзак­циях, выполняемыхв базе данных.По умолчаниюфайлам журналатранзак­цийприсваиваетсярасширение.Idf.Отметим, что файл журналатранзакцийне можетбыть помещенна сжатый дискили удаленныйсетевой диск(обще­доступныйсетевой каталог).


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


Использованиенеформатированныхразделов

SQLServer 2000позволяетиспользоватьдля созданияфайлов базыданных такназываемыенеформатированные(или «сырые»— raw)разделы.Неформатиро­ванныйраздел — этораздел диска, который былсоздан с помощьюутилиты fdisk(MSDOS, Windows 95/98)или DiskAdministrator (Windows NT, Windows 2000), но не был отформатирован.На таком разделене существуетфайловой системы(FATилиNTFS), поэтомутам невозможнохранение файловоперационнойсис­темы.Тем не менее, если при созданиибазы данныхв качествефизическогоиме­ни файлав конструкцииуказатьнеформатированныйраздел, то SQLServer2000 создаств этом разделеблок данных(назовем егофайлом), которыйзаймет всесвободноепространство.Так как присоздании файлабудет занятовсе доступноепространство, то увеличениеразмера файлав данном случаеневоз­можно.Следовательно, указание параметровMAXSIZEиFILEGROWнеобязательно.Такжене обязательноуказаниепервоначальногоразмера файла.В качествефи­зическогоимени файланеобходимоуказать толькобукву раздела, например F:.Задание неформатированногораздела другимспособом (атакие имеются— на­примерформат, используемыйв файле boot.ini)недопускается.То есть, чтобыиметь возможностьразместитьфайл базы данныхна неформатированномразде­ле, нужноприсвоить этомуразделу конкретнуюбукву, сконфигурировавего, та­кимобразом, в качествелогическогодиска.


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

Дажепосле того какSQLServer создаств этом разделефайл, операционнаясистемабудет восприниматьраздел какнеформатированныйили как разделс неизвестнойфайловой системой.Обычные операцииработы с файлами, выпол­няемыеоперационнойсистемой, будутнедоступны.То есть нельзябудет вы­полнятькопирование, удаление, изменениеили перемещениесозданногофайла. Крометого, операциирезервногокопированияс помощью утилитыWindowsNT Backupтакжебудут недоступны.Однако допускаетсясоздание резервныхко­пийбазы данныхи журнала транзакцийсредствамиSQLServer 2000.


Прииспользованиинеформатированныхразделов недоступныинструментыпроверки целостностидиска. Болеетого, невозможна«горячая»замена поврежденныхкластеров, которая выполняетсядляфайловой системыNTFSнадисках SCSI.

Путемиспользованиянеформатированныхразделов можнообеспечитьвы­сокийуровень безопасностиинформациив базе данных.При размещениифай­ловбазы данныхна обычныхдисках с файловойсистемой всегдаимеется возможностьскопироватьэти файлы иподключитьк другому серверуSQLServer2000. Решитьэту проблемув той или инойстепени можетпомочь файло­ваясистема NTFS.Еслиже вы используетефайловую системуFAT, тов случае остановаSQLServer 2000файлы баз данныхмогут бытьскопированыбезо вся­кихзатруднений.


Я отдельноотметил, чтодля копированияфайлов базданных необходимоостановитьSQLServer2000, аточнее, службуMSSQLServer.Впротивномслучае файлыбаз данныхблокируютсяи к ним не удастсяполучить доступ.

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

Увеличениебазы данных

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

В предыдущихверсиях SQLServer необходимобыло вручнуюдобавлятьно­воесвободноепространствов базу данных, сначала создаваяновые устройстваилирасширяясуществующие, а затем увеличиваясаму базу данныхили журналтранзакций.Начиная с SQLServer 7.0, реализованавозможностьавтоматическо­гоувеличенияразмеров базыданных (autogrow). Этавозможностьреализуетсяна уровне файловбазы данных, для которыхможно разрешитьавтоматическоеувеличениеразмера приполном заполнениибазы данных.Если возможностиав­томатическогороста исчерпаны(например, кончилосьсвободное местона диске илиразмер файладостиг максимальнойвеличины) илиподдержкаавтоматичес­когоувеличенияфайлов вообщене была задействована, то администратордол­женвручную увеличитьразмер базыданных (expandingdatabase). Дляэтого он либоувеличиваетразмер существующихфайлов, либосоздает новыефайлы. Это касаетсякак файловсамой базыданных, так ифайлов журналатранзакций.

Особенноевниманиеадминистратордолжен уделитьсистемной базеданных tempdb, вкоторой создаютсявсе временныеобъекты. Поумолчаниюмаксималь-, ныйразмер файловбазы данныхне ограничен.Тем не менее, если места надиске мало, то через какое-товремя возможностиувеличениябазы данныхtempdbбудутисчерпаны.Сервер не сможетсоздаватьвременныеобъекты и, следовательно, пользо­вателине смогут успешноработать слюбой базойданных, расположеннойна этом сервере.Администратордолжен своевременноотслеживатьналичие необходимогосвободногопространстваи при необходимостидобавлять кбазе данныхфайлы, расположенныена дисках сдостаточнымколичествомсвободногопространства.

ИспользованиеTransact-SQL

В этойглаве подробнорассматриваютсяразличныеаспекты созданиябаз дан­ныхи управленияими в SQLServer 2000.Как уже былосказано, дляработысбазами данныхв SQLServer 2000могут бытьиспользованыразличныесред­ства— мастер CreateDatabase Wizard, утилитаEnterpriseManager икоманды Transact-SQL.В этомразделе мыпознакомимсяс созданиеми изменениембаз данных, атакже с управлениембазами данныхсредствамиTransact-SQL.Этотметодявляется наиболеесложным из всехперечисленных, но обладаетмакси­мальнымивозможностями.В сущности, двадругих методапредоставляютвсе­го-навсегографическихинтерфейс длявыполнениясоответствующихсистем­ныххранимых процедур.

Дляэффективногоуправлениябазами данныхSQLServer 2000вовсе не обя­зательновиртуозновладеть системнымихранимымипроцедурами.В большин­ствеслучаев вполнедостаточносредств, предлагаемыхEnterpriseManager. Темне менееистинный профессионалдолжен уметьдобиться нужногорезультатаи в томслучае, когдав его распоряженииимеются лишьпростые средствавыпол­нениязапросов, аиспользованиекрасивых графическихоболочек вродеEnterpriseManagerпотем или инымпричинам оказываетсяневозможным.

Создание базданных

Первое, с чем сталкиваетсяадминистраторпри реализациибазы данных, это ее создание.Казалось бы, что может бытьпроще, чем указатьимя базы данных, и на этомдело бы закончилось.Однако базаданных SQLServer 2000является до­вольносложной структурой.Более того, процесс созданиябазы данныхможет представлятьсобой не толькособственносоздание новойбазы, но и присоедине­ниеготовых файловданных. В EnterpriseManager невсегда пользователиполу­чаютвсе возможныесредства созданиябаз данных, предлагаемыеSQLServer 2000.Доступк этим средствамобеспечиваюттолько командыTransact-SQL.


Этапусозданиянепосредственнопредшествуетфаза планирования, которая включаетв себя про­ектированиесостава файлови групп файлов, из которыхбудет состоятьбаза данных.Это плани­рованиефизическойчасти. Неотъемлемойчастью процессасоздания базыданных являетсяи планированиелогическойархитектуры, в которую входитпроектированиетаблиц с использовани­емнормализации.Однако созданиесобственнобазы данныхне требуетпредварительногопроек­тированиятаблиц.

Итак, начнем рассмотрениеработы с базамиданных с еесоздания. ВTransact-SQLсозданиебазы данныхвыполняетсяс помощью командыCREATEDATABASE, имеющейследующийсинтаксис:

CREATE DATABASE databasejiame

[ ON[ PRIMARY]

[ [ ....n] ]

[, [ ,...n] ]

]

[ LOGON { [ ,...n] } ]

[ COLLATEcollationjiame ]

[ FORLOAD | FOR ATTACH ]

Рассмотримподробно назначениекаждого изаргументов.Оdatabase_name.Спомощью этогоаргументауказываетсяимя, котороебудет присвоеносоздаваемойбазе данных.При выбореимени следуетследовать общимправилам именованияобъектов. Еслиимя базы данныхсодержит пробелыили другиенедопустимыесимволы, онодолжно бытьзаключено вогра­ничители(двойные кавычкиили квадратныескобки). Имябазы данныхдол­жно бытьуникальнымв пределахсервера и неможет превышать128 симво­лов.Если имя журналатранзакцийявно не указано, то сервер укорачиваетимябазы данныхтаким образом, чтобы оно непревышало 123символов. Этоделаетсяиз-за того, чтосервер по умолчаниюиспользуетдля имени журна­латранзакцийимя базы данныхи добавляетк нему в концесимволы _Log.

О О N.Это ключевоеслово означает, что далее следуетопределениефайлов базыданных.

О PRIMARY.Этоключевое словоозначает, чтодалее следуетописание первично­гофайла базыданных. Напомним, что в этом файлехранятся всесистемныеданные и таблицы.Только одинфайл в базеданных можетбыть определенкак первичный.Если первичныйфайл не определенявно, то в этомкачестве будетиспользоватьсяпервый файл, указанный вконструкции<f i espeo.>первичнойгруп­пойфайлов (primaryfile group). Первичнаягруппа назначаетсягруппойфайлов поумолчанию(defaultfile group), ив нее будутвключены всефайлы, для ко­торыхявно не указанапользовательскаягруппа файлов(userfile group).

О LOGON. Этоключевое словоозначает, чтофайлы журналатранзакцийбудут определеныявно. После LOGON должноследоватьопределениефайлов жур­налатранзакций.Если это ключевоеслово не используется, то есть пользо­вательне задает явнофайлы журналатранзакций, то серверавтоматическисоздаетединственныйфайл размером25% от общей суммыразмеров файловданных.Имя файлагенерируетсяна основе именибазы данных, но в конце кнему добавляютсясимволы _Log.

О FORLOAD. Этотаргумент оставленв большей степенидля обеспеченияобрат­нойсовместимостис предыдущимиверсиями SQLServer (доSQLServer 7.0).Он предписываетсерверу создатьбазу данныхв режиме использованиятоль­ковладельцем(dbouse only). Этоделается, еслинеобходимовыполнитьвос­становлениебазы данныхиз резервнойкопии. Дело втом, что в раннихвер­сияхSQLServer восстановлениебазы данныхбыло возможнотолько в ужесуществующуюбазу данных, установленнуюв режим FORLOAD. Начинаяс SQLServer7.0, принеобходимостибаза данныхможет бытьсоздана автоматическив ходевыполнениякоманды RESTORE.Болеетого, допускаетсявосстановлениерезервнойкопии поверхсуществующейбазы данных.

О FORATTACH. Этотаргументиспользуется, когда необходимовыполнитьприсое­динение(attach)базыданных. В этомслучае на дискеуже должнысущество­ватьфайлы с данными.Таким образом, создание базыданных происходиттолькона логическомуровне — в системнуютаблицу sysdatabasesбазыдан­ныхmasterвносятсясоответствующиезаписи, но созданиесобственнофай­ловне выполняется.Для подключениябазы данныхбывает достаточноука­зать толькоразмещениепервичногофайла базыданных. Информацияо местоположениивсех другихфайлов базыданных (вторичныхи журналатран­закций)хранится впервичном файлебазы данных.Однако еслиместополо­жениефайлов базыданных с моментаее отсоединенияизменилось, то необ­ходимобудет указатьполный путьк каждому файлубазы данных.


Присоединениебазы данныхможно такжевыполнить ис помощью системнойхранимой процеду­рыsp_attach_db, котораянапрямую работаетс системнойтаблицей sysdatabasesитаблицамиса­мой базыданных, вносяв нее необходимыеизменения.

Еслиприсоединениеучаствующейв репликациибазы данныхвыполняетсяне на «родном»серве­ре, то необходимоудалить поддержкурепликации.Для этогоиспользуетсяхранимая процедураsp_removedbreplication[@dbname =] «dbname».

Оcollation_name.Спомощью этогоаргументауказываетсясопоставлениепо умолчаниюдля всех объектов, создаваемыхв базе данных.Это же сопостав­лениебудет использоватьсяи для системныхтаблиц. Разрешаетсяуказывать каксопоставленияWindows, таки сопоставленияSQLServer. Еслисопос­тавлениене указывается, то для базыданных будетиспользоватьсясопос­тавление, определенноена уровне сервера, то есть тосопоставление, которое быловыбрано приустановке SQLServer 2000.

Каквидно из синтаксисакоманды CREATETABLE иуже рассмотренныхаргу­ментовэтой команды, при созданиибазы данныхможно определитьнабор файлов, изкоторых будетсостоять создаваемаябаза данных.Уже было сказано, что файл определяетсяс помощью конструкции, синтаксискоторой приведенниже.Эта конструкцияимеет одинаковыйформат для всехтипов файлов(первич­ного, вторичногои журналатранзакций).Чтобы соответствующийфайл был пер­вичным, перед егоопределениемнеобходимоуказать ключевоеслово PRIMARY.Журналтранзакцийопределяетсяс помощью ключевогослова LOGON. Еслини одноиз этих ключевыхслов не указывается(указываетсятолько словоON), тосоответствующийфайл будетвторичным.Дополнительнофайлы данныхмогут бытьвключеныв группы. Этобудет рассмотренонесколько позжев этом же разделе.

( [ NAME=Iogica1_file_name, ]

FILENAME=«os_file_name»

[, SIZE= size]

[. MAXSIZE= { max_size| UNLIMITED }]

[. FILEGROWTH= growthjincrement ] )[. ...n]

Рассмотримназначениеиспользуемыхаргументов.

О NAME= logical_file_name.Логическоеимя файла, подкоторым онбудет опознаватьсяпри выполненииразличныхкоманд Transact-SQL.Логическоеимя файла должнобыть уникальнымв пределах базыданных. Имяфайла журналатранзакцийне должно совпадатьс именем файласамой базыдан­ных. Использованиеключевого словаNAMEнетребуется, есливыполняетсяприсоединениебазы данных, однако такимобразом можноуказать новоело­гическоеимя для физическогофайла.

О FILENAME= «os_f11 e_name».Еслис помощью предыдущегоаргументауказы­валосьлогическоеимя файла, торассматриваемыйаргумент предназначендля указанияполного путии названиясоответствующегофизическогофайла, ко­торыйбудет созданна жесткомдиске. Это имябудет иметьфайл на уровнеоперационнойсистемы. Есливы воспользуетеськакой-либопрограммойпро­смотрадиска, то послеуспешноговыполнениякоманды CREATEDATABASE сможетеувидеть файлс указаннымименем. Напомним, что SQLServer 2000не позволяетсоздавать файлыбазы данныхна сжатых томахи сетевых дисках.


filespec>filespec> filegroup> filespec>!espec>    продолжение
--PAGE_BREAK--

Поумолчанию дляфайлов базданных используютсярасширения.mdf,.ndf и.Idfсоответственнодля первичного, вторичныхфайлов и файловжурнала транзакций.В принципе, выможете указатьлюбоедругое расширение, но вряд ли найдетсясерьезнаяпричина делатьэто. Чтобы несоздаватьпутаницы, советуемоставлятьзначения поумолчанию, тоесть при описаниифайла не указыватьрасширение.

О SIZE=size. Спомощью этогоаргументауказываетсяпервоначальныйраз­мер, который будетиметь соответствующийфайл. Размерможет бытьуказан либов мегабайтах, либо в килобайтах.Для явногозадания величиныможно использоватьприставки Мbи КЬ. По умолчаниюсчитается, чторазмер задает­сяв мегабайтах.Минимальныйразмер файласоставляет512 Кбайт. Еслираз­мерфайла не указываетсяявно, то по умолчаниюбудет созданфайл размером> 1 Мбайт.Отметим, чтов качестверазмера файларазрешаетсязадавать толькоцелочисленныезначения. Такимобразом, еслинеобходимозадать дробноеко­личествомегабайт, следуетуказать соответствующеезначение вкилобайтах.

О FILEGROWTH=growth_iincrement.Приописании физическойархитектурыбазы данныхв главе 4 былосказано, чтоначиная с SQLServer 7.0поддерживает­сяавтоматическоеувеличение(autogrow) размерабазы данных, что реали­зуетсяпутем последовательногоавтоматическогоувеличенияразмеров фай­лов, входящих всостав базыданных. SQLServer 2000позволяетконтролироватьвеличину приростакаждого изфайлов базыданных отдель­ноот других, задаваяшаг приростане на уровнебазы данных, а на уровнеотдельногофайла. С помощьюрассматриваемогоаргументазадается величи­наприроста файлабазы данных.Шаг приростаможет бытьуказан как ваб­солютномвыражении ввиде конкретногоколичествамегабайт (М Ь)или килобайт(Kb), таки в относительномв виде определенногопроцента (%)отпервоначальногоразмера файла.По умолчаниюпредполагается, что указы­ваетсязначение вмегабайтах.Если аргументFILEGROWTHопущен, то файл будетувеличиватьсяна 10 % от первоначальногообъема. Минимальныйраз­мер, на которыйможет бытьувеличен файл, составляет64 Кбайт. Отметим, чтов сумме первоначальныйразмер файлаи выбранныйшаг приростане должныпревышатьуказанныймаксимальныйразмер файла.

О MAXSIZE= { max_size|UNLIMITED}.Автоматическоеувеличениефайлов связанос определеннымипроблемами.В частности, если диск сфайлом базыданныхиспользуетсядля хранениявременныхфайлов различныхприложе­ний, то увеличениефайла базыданных до большогоразмера можетпривести кнарушениюработоспособностиприложений.Для избежанияэтой и другихподобныхпроблем SQLServer 2000позволяетограничиватьрост файловкон­кретнымразмером. Дляэтого и требуетсярассматриваемыйаргумент.Мак­симальныйразмер можетбыть указанв мегабайтах(Mb—используетсяпо умолчанию)или килобайтах(Kb).Отметим, что ограничениероста отдель­ногофайла не ограничиваетвозможностьувеличенияроста всей базыдан­ных, таккак размер базыданных можетувеличиватьсяза счет проростадру­гих файлов.Если ограничиватьмаксимальныйразмер файлане нужно, то

необходимоуказать значениеUNLIMITEDиливообще опуститьаргумент MAXSIZE, таккак по умолчаниюразмер файлане ограничивается, и он будет расти, пока не заполнитвсе доступноепространствона диске. Мырассмотрелисинтаксисконструкции, котораяиспользуетсядляописания файловбазы данных.Как уже былосказано, файлыданных (mdfи ndf)могутобъединятьсяв так называемыегруппы файлов.Подобное объеди­нениевыполняетсяс целью упрощенияуправленияфайлами. Например, при созданиирезервных копийможно выполнятьархивированиене всей базыдан- • ныхцеликом, а лишьопределеннойгруппы файлов.Основным женазначениемгруппфайлов являетсяразмещениев них данныхопределенныхтаблиц или ихотдельныхстолбцов, атакже хранениеиндексов. Присоздании таблицывы мо­жетеявно указать, в какой группефайлов должныхранитьсяданные тогоили иного столбца.Как следствие, подобным образомможно предписатьхранить данныестолбцов наразных логическихили физическихдисках.

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

:: =

FILEGROUPfilegroupjiame [,..'.n]

Аргументfi1egroup_nameопределяетимя группыфайлов, подкоторым онабудетраспознаватьсяпри выполнениикоманд Transact-SQL.Послеимени группыфайловследует определениевключаемыхв нее файлов.Как видно изсинтакси­са, в одну группуфайлов можетбыть включеномножествофайлов.

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

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


Длясоздания переносимойбазы данныхиспользуетсяхранимая процедураsp_create_removable.Чтобыпосле созданиябазы данныхпроверить, соответствуетли она требованиямпереносимойбазыданных, можноиспользоватьхранимую процедуруsp_certify_removable.


Управлениебазами данных

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

Большинстводействий поизменениюконфигурациибазы данныхвыполня­етсяс помощью командыALTERDATABASE:

ALTER DATABASE database

{ ADDFILE [ ,...n] [TOFILEGROUPfilegroupjiame ]

|ADD LOG FILE [ ....n]

jREMOVE FILE logicaljfilejiame [WITHDELETE ]

| ADD FILEGROUP filegroupjiame

j REMOVE FILEGROUP filegroupjiame

jMODIFY FILE

jMODIFY NAME =new_dbname

j MODIFY FILEGROUP filegroupjiameNAME=new_filegroup_name

|MODIFY FILEGROUP filegroupjiame filegroupjproperty }

jSET [….'.n] [ WITH ]

jCOLLATE

}

Как видноиз синтаксиса, за один вызовкоманды можетбыть измененоне

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

шагов. Рассмотримболее подробноназначениекаждого изаргументов.

О database.Имябазы данных, которую необходимомодифицировать.Естествен­но, указанная базаданных должнасуществоватьна сервере.


Чтобыиметь возможностьизменить базуданных, необходимо, чтобы с ней неработал ни одинпользо­ватель.Если же в базеданных имеетсяхоть одна активнаятранзакция, то попыткавыполнениякоман­ды ALTERDATABASE завершитсяошибкой. В этомслучае нужнодождаться, покабудут завершенывсе транзакции, либо воспользоватьсяаргументомWITHTERMINATION, которыйбудет рассмотрендалее.

О ADDFILE[,… .n].Этотаргументиспользуется, когда в базуданныхнеобходимодобавить новыефайлы данных.Как видно изсинтакси­са, одновременноможно добавитьмножествофайлов. Как ипри работе скомандойCREATEDATABASE, файлыописываютсяс помощью конструкции, синтаксиси использованиекоторой былирассмотреныв преды­дущемразделе прирассмотрениисоздания базыданных.

• ТОFILEGROUPf11egroup_name.Используетсяв сочетаниис предыдущимар­гументомдля добавленияфайлов в определеннуюгруппу файлов.Если ар­гументТО FILEGROUPнеуказывается, то файлы будутдобавлены вгруппу файловпо умолчанию.

О ADDLOGFILE[,… .n].Еслис помощью двухпредыдущихар­гументовможно добавлятьв базу данныхфайлы данных, то аргументADDLOG FILEиспользуетсядля добавленияв базу данныходного илиболее файловжурналатранзакций.


О REMOVEFILE1 ogica1_fi1 e_name.Впротивоположностьпредыдущим, с по­мощьюрассматриваемогоаргументаосуществляетсяудаление избазы дан­ныходного из файлов.Отметим, чтоза одну командуALTERDATABASE мож­ноудалить всегоодин файл. АргументREMOVEFILEиспользуетсякак для удаленияфайлов данных, так и для удаленияфайлов журналатранзакций.Однако преждечем станетвозможнымудаление файла, он должен бытьос­вобожденот данных. Впротивномслучае серверне разрешитего удаление.


Освободитьфайл от данныхможно с помощьюкоманды DBCCSHRINKFILE (file_name, EMPTYFILE). АргументEMPTYFILEпредписываетраспределитьвсе данные изфайла междудругими файламигруппы.Добавлениеновых данныхв файл не разрешается.

О ADDFILEGROUPfi legroup_name.Используетсядля созданияв базе данныхгруппы файловс указаннымименем. Каквидно из синтаксиса, при созданиигруппы неуказывается, какие файлыдолжны в неевойти. Переноссуществующихфайлов вновую группувыполняетсяотдельно. Вбазе данныхможет бытьсоздано до 256групп файлов.Напомним, чтогруппы файловсоздаютсятолько дляфайлов данных.Файлы журналатранзакцийне могут бытьорганизованыв группы.

О REMOVEFILEGROUPfilegroup_name.Используетсядля удаленияиз базы дан­ныхуказаннойгруппы файлов.При этом такжебудут удаленывсе файлы, включенныев эту группу.Однако передвыполнениемэтой операциинеоб­ходимопредварительноудалить изфайлов вседанные.

О MODIFYFILE.Используетсядля измененияпараметровфайла базыданных, таких как логическоеимя (NAME), первоначальныйразмер (SIZE), мак­симальныйразмер (MAXSIZE)и шагприращения(FILEGROWTH).Заодин вы­зовкоманды ALTERDATABASEможетбыть изменентолько одинпараметр одногоиз файлов. Хотядля описанияфайла и используетсяконструкция, еесинтаксиснесколько иной, чем при созданиибазы данных.Отличительнойособенностьюявляется наличиеаргументаNEWNAME, спомо­щьюкоторого можноизменить логическойимя файла. Востальном жесин­таксиси использованиеконструкциианалогичнырассмотреннымранее.

::=

( NAME=logical_file_narne

[. NEWNAME=new_log1cal_name]

[, FILENAME=«os_file_name»]

[. SIZE= size]

[. MAXSIZE= { max_s1ze| UNLIMITED }]

[. FILEGROWTH=growthjncrement] )

О MODIFYNAME= new_dbname.Какнетрудно догадаться, этот аргументпозво­ляетизменять имябазы данных.Для этого достаточновсего-навсегоуказать новоеимя с помощьюпараметраnew_dbname.

О MODIFYFILEGROUPfi1egroup_nameNAME=new_fi1egroup_name.Помимоизмененияимени базыданных такжеможно переименоватьи отдельнуюгруп­пуфайлов. Это иделается спомощью рассматриваемогоаргумента. Все, что нужнодля измененияимени группы,— указать текущееимя с помощьюпа­раметраfi I egroup_nameи новоеимя—с помощьюпараметраnew_fiIegroup_name.


О MODIFYFILEGROUPfi1egroup_namefilegroup_property.Этотаргумент позволяетуправлятьсвойствамигруппы файлов.Имя группыфайлов, свой-• ствакоторой предполагаетсяизменить, задаетсяпараметромfi I egroup_name, тогдакак параметрfi I egroup_property предназначендля указаниясвойства, котороедолжно бытьназначено длягруппы файлов.Поддерживаютсясле­дующиезначения параметраfilegroup_property.

* READONLY.Приуказании этогозначения группафайлов переводитсяв ре­жим«только длячтения». В этомрежиме запрещаетсявыполнениелюбых модификацийданных в файлах, принадлежащихсоответствующейгруппе. Переключениегруппы файловв режим «толькодля чтения»могут выпол­нятьтолько пользователи, имеющие монопольныйдоступ к базеданных. Нельзяустанавливатьв режим «толькодля чтения»первичнуюгруппу файлов, так как в этомслучае системныетаблицы будутзаблокированыи выполнениелюбых измененийв базе данных(в том числе иотмена длягруппыфайлов режима«только длячтения») станетневозможным.

* READWRITE.Действиеэтого значенияобратно предыдущему.Использует­сядля разрешенияизменений вгруппе файлов, установленнойв режим «толькодля чтения».Работа с этимзначением, каки с предыдущим, раз­решенатолько пользователям, имеющим монопольныйдоступ к базедан­ных.

* DEFAULT.Используетсядля маркировкиуказаннойгруппы файловкак группыфайлов по умолчанию(defaultfilegroup). Вэту группуфайлов будутвключатьсявсе файлы данных, которые явноне включеныни в какуюдругую группуфайлов. Болеетого, все объекты(индексы, таблицыи ихстолбцы), длякоторых явноне указано, вкакой группефайлов онидолжнырасполагаться, будут размещеныв группе файловпо умолчанию.Группафайлов, котораядо этого былагруппой файловпо умолчанию, становитсяобычной группой.

О WITH.Вполневозможна ситуация, когда попыткаизменения базыданных происходитпри выполнениикакой-либотранзакции.Как уже говорилось, эти две операциинесовместимыи одна из нихдолжна бытьот­ложенадо окончаниядругой. То естьадминистратордолжен либоподождатьзавершениявсех активныхтранзакций, либо принудительнопрервать ихвы­полнение.В первом случаеадминистраторможет довольнодолго ждатьза­вершениявсех транзакций.Более того, ничто не помешаетпользователямначинать новыетранзакции.В предыдущихверсиях, в томчисле и в SQLServer 7.0, это было единственнымрешением. Ксчастью, в SQLServer 2000появиласьвозможностьпринудительногопрерываниявсех пользовательскихтранзакций.Именно дляэтого и используетсяаргумент WITH, которыйопределяетметод прерываниятранзакций.Синтаксисконструкцииследующий:

::=ROLLBACKAFTER integer [SECONDS] | ROLLBACK IMMEDIATE| NO WAIT

» ROLLBACKAFTERnum_second[SECONDS]— вэтом случаесервер будетожидатьуказанноеколичествосекунд, преждечем прерветвсе активныеи обслуживаниебаз данныхтранзакции.Предварительноможно отправитьпользователямсообщение посети, что черезстолько-тосекунд всетранзакциибудут принудитель­нооткачены. Заэто времяпользователидолжны либозафиксировать, либо откатитьсвои транзакции.* ROLLBACKIMMEDIATE —в этом случаеоткат пользовательскихтранзакций

выполняетсянемедленнобез каких-либопауз.

» NOWAIT— каки в предыдущемслучае, откатпроисходитсразу же. ОCOLLATE.С помощью этогоаргументауказываетсясопо­ставлениепо умолчаниюдля всех объектов, создаваемыхв базе данных.Из­менениесопоставленияпо умолчаниюне влияет насопоставления, исполь­зуемымиуже созданнымиобъектами базыданных. РазрешаетсяуказыватьсякаксопоставленияWindows, таки сопоставленияSQLServer. Определяетсо­поставлениедля базы данных.ПоумолчаниюзадаетсясопоставлениеSQLServer.

О SET[,… n]. Спомощью аргументаSETпользовательможет управлятьразличнымисвойствамибазы данных.Свойства указываютсяс по­мощьюконструкции, котораяимеет довольнообъемную струк­туру.Более подробноуправлениесвойствамибазы данныхбудет рассмотре­нодалее в этойглаве в разделе«Управлениесвойствамибазы данных».


В предыдущихверсиях SQLServer, включаяи SQLServer 7.0, не поддерживалась

возможностьиз­менениясвойств базыданных с помощьюкоманды ALTERDATABASE.

Уменьшениеразмера базыданных

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

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

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


conation_name > termination>!espec>lespec>collationjiame>termination>optionspec>filespec>filespec>filespec>    продолжение
--PAGE_BREAK--

Автоматическоеуменьшениеразмера базыданных происходитв том случае, когда серверобнару­живаетв базе данныхслишком многонеиспользуемогопространства.

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

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

sp_dboption «database_name»,«autoshrink».(«true»| «false»)

С помощьюпервого аргументауказываетсяимя базы данных, свойства кото­ройпредполагаетсяизменять. Второйаргумент долженоставатьсятаким, как онприведен выше.Указывая значение«true»или" fal se", можносоответствен­норазрешать изапрещатьавтоматическоеуменьшениефайлов базыданных.


Автоматическоеуменьшениеразмера базыданных можноразрешить ис помощью командыALTERDATABASE, воспользовавшисьаргументомSET.Болееподробно управлениесвойствамибазы дан­ныхбудет рассмотренов следующемразделе.

Помимоавтоматическогоможно такжевыполнятьручное уменьшениераз­мерабазы данных.Это делаетсяс помощью командыконтролясогласованности(илицелостности)базы данных(databaseconsistency check, DBCC):

DBCC SHRINKDATABASE

( databasejname[,target_percent]

[, { NOTRUNCATE| TRUNCATEONLY }]

)

Рассмотримназначениеаргументов.

Оdatabase_name.Имябазы данных, которую необходимосжать.

Оtarget_percent.Количествопроцентовсвободногопространства, которое же­лательнооставить в базеданных послевыполненияее сжатия. Говоряточ­нее, с помощьюрассматриваемогоаргументауказываетсяпроцент отобщего объемафайлов базыданных, которыйдолжен бытьнезаполненным.Напри­мер, если в файлеразмером 10 Мбайтимеется 4 Мбайтасвободногопростран­ства, то для уменьшенияколичестванеиспользуемогопространствадо 2 Мбайт необходимоуказать значениеаргументаtarget_percentравным25. Снача­ласервер вычисляетобъем свободногои занятогопространства(соответствен­но4 и 6 Мбайт). Чтобыполучить искомые25 процентов, соотношениесво­бодногои занятогопространствадолжно быть3 к 1. Путем нехитрыхвычисленийсервер приходитк выводу, чтонужный результатбудет полученприразмере файла, равном 8 Мбайт.После этогосервер переноситвсе данныеиз последних2 Мбайт файлав первые 8 Мбайт, помещая их влюбое незанятоеместо на странице.После того каквсе данныебудут перенесены, выполняетсяуменьшениеразмера файла.Заметим, чтов аргументеtarget_percentнельзяуказыватьразмер, превышающийтекущий процентсвободногопространства.В противномслучае уменьшениеразмера файлавыполненоне будет. Такимобразом, выполняякоманду DBCCSHRINKDATABASE

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

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

О TRUNCATEONLY.Призадании этогоаргументасервер удаляетвсе свободноепро­странствов файле за последнимиспользуемымэкстентом.Значение аргументаtarget_percentприэтом игнорируется.Не предпринимаетсяникакой по­пыткиперемещенияданных дляболее эффективногоих распределенияв фай­ле.Если в файлеразмером 2 Мбайтвыделено всегодва экстентав начале и всередине файла, то при использованиикоманды DBCCSHRINKDATABASEбу­детосвобожденатолько половинафайла, начинаяот второгоэкстента и доконцафайла. Размерфайла будетсоставлятьоколо 1 Мбайт, хотя в принци­пеон мог бытьуменьшен до128 Кбайт.

Правана сжатие базыданных с помощьюкоманды DBCCSHRINKDATABASEвыданытолько членамфиксированнойроли сервераsysadminификсирован­нойроли базы данныхdbowner.Этиправа не могутбыть переданыпользовате­люникаким другимспособом, кромекак включениемего в одну изэтих ролей.Чтобы уменьшитьколичествосвободногопространствав базе данныхpubsдо15% срезервированиемосвобожденногопространствадля дальнейшегоис­пользования, необходимовыполнитьследующуюкоманду: DBCCSHRINKDATABASE (pubs.15.NOTRUNCATE)


Heимеетзначения, вконтексте какойбазы данныхвыполняетсякоманда DBCCSHRINKDATABASE, таккак при ее вызовеявно указываетсяимя нужной базыданных.

После выполнениякоманды сервервыдаст примерноследующеесообщение:

DbldFileldCurrentSizeMinSize UsedPages EstimatedPages

5 2 96 63 96 56

(1 row(s)affected)

DBCC execution completed. If DBCC printed errormessages, contact your system

administrator.

Рассмотримназначениестолбцов вполученномрезультате.О Dbld—идентификационныйномер базыданных. Этотномер-будетодинаков

для всехотображаемыхстрок.

О Fileld—идентификационныйномер файлабазы данных, размер которогобылуменьшен впроцессе сжатиябазы данных.Если некоторыефайлы не былисжаты, то информацияо них не выводится.

О CurrentSize—количествостраниц, котороеимеется в файле, причем учи­тываютсякак заполненные, так и свободныестраницы.

О MinimumSize—минимальноеколичествостраниц, докоторого можетбыть уменьшенфайл. Это значениеможет ограничиватьсяначальнымразмером файла, установленнымпри его создании.В ином случаеоно равно значениюв столбцеEstimatedPages.

О UsedPages—количествостраниц, содержащихданные.

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


Списокбаз данных исоответствующихидентификационныхномеров хранитсяв таблицеsysdatabasesсистемнойбазы данныхmaster.Дляполученияидентификационногономера базыданных можноиспользоватькоманду DB_ID(«databasename»). Еслиже необходимоопределитьимя базы данныхпо идентификационномуномеру, то можновоспользоватьсякомандойDB_NAME(database_id).

КомандаDBCCSHRINKDATABASE работаетс целой базойданных. Еслиже не­обходимоуменьшитьразмер конкретногофайла базыданных, то дляэтого сле­дуетиспользоватькоманду DBCCSHRINKFILE, имеющуюследующийсинтаксис:

DBCCSHRINKFILE

( { filejname| fllejd }

{ [. target_size]

j [. {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY }]

Выполнениеэтой команды, в отличие откоманды DBCC SHRINKDATABASE, должнопроизводитьсяв контекстетой базы данных, файл которойпредполага­етсяуменьшить.Напомним, чтодля переключениябаз данныхиспользуетсякомандаUSE.Рассмотримназначениеаргументовкоманды DBCCSHRINKFILE.О fi 1 e_name | f i 1 e_id. Имяфайла, которыйнеобходимосжать, или егоиден-

тификационныйномер. Для полученияидентификационногономера файла

базыданных можноиспользоватькоманду FILE_ID:FILE ID («filename»)

ПРИМЕЧАНИЕ

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

О target_size.Желательныйразмер (целоечисло в мегабайтах), который дол­жениметь файлпосле выполнениясжатия. Еслиразмер неуказывается, то файл сжимаетсядо минимальновозможногоразмера. Привыполнениико­мандыDBCCSHRINKFILEсерверпри необходимостивыполняетперемещениеданныхиз части файла, которая должныбыть удалена, в ту часть, котораябудетоставлена. Еслиразмер target_sizeменьше, чем минимальновозмож­ныйразмер файла, то сжатие файлабудет выполнятьсятолько до минималь­новозможногоразмера. Например, если файл размером20 Мбайт содержит14 Мбайт данных, а пользовательпытается сжатьего до 10 Мбайт, то файл будетсжат толькодо 14 Мбайт. Еслиразмер файлапосле сжатиястановится

меньшепервоначальногоразмера, тоновый размерстановитсяминимальнымразмеромфайла.

О EMPTYFILE.Прииспользованииэтого аргументасервер выполняетперенос дан­ныхиз файла в другиефайлы, включенныев ту же группу, что и сжимае­мыйфайл. Серверне будет добавлятьновые данныев файл, сжатыйс аргу­ментомEMPTYFILE.Такойфайл может бытьуничтожен спомощью командыALTERDATABASE REMOVE FILE.

О NOTRUNCATE.Использованиеэтого аргументапредписываетсерверу невозвра­щатьосвободившеесяместо операционнойсистеме. Такимобразом, размерфайла на самомделе не уменьшается.Данные в файлерасполагаютсяболее компактнои смещаютсяк началу файла.Если аргументNOTRUNCATEнеука­зан, то освободившеесяпространствовозвращаетсяоперационнойсистеме, тоестьразмер файлауменьшается.

О TRUNCATEONLY.Приуказании этогоаргументасервер выполняетурезание ча­стифайла, начинаяот последнейиспользуемойстраницы доконца файла.Зна­чениеаргументаtarget_sizeв этомслучае игнорируется.Никакого пере­мещенияданных дляболее компактногоих расположенияне предпринимается.Длясжатия файладанных базыданных pubsдо1 Мбайт введитеследую­щуюкоманду:

USE Pubs

DBCCSHRINKFILE (pubs, 1)

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

выполнениикоманды DBCC SHRINKDATABASE. Состави назначениестолбцов в

обоих случаяханалогичны:

Dbld Fileld CurrentSize MinimumSize UsedPages EstimatedPages

5 1 296 80 288 288

(1 row(s) affected)

DBCCexecution completed. If DBCC printed error messages, contactyour system

administrator.

Удостоверимся, что файлом сидентификационнымномером 1 являетсяфайл pubs:

SELECT FILE_ID(«pubs»)SELECTFILE_NAME(1)

В итоге будетполучен следующийрезультат:

1

(1 row(s)affected)

pubs

(1 row(s) affected)

Правана выполнениекоманды DBCC SHRINKFILEвыдаютсятаким же обра­зом, как и для командыDBCCSHRINKDATABASE.


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


Управлениесвойствамибазы данных

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

sp_dboption[[@dbname =] «database»] [.[@optname=]«optionjiame»][.[@optva«lue=] „value“]

Аргумент»database"содержитимя базы данных, в которой необходимовыполнитьизменениеконфигурации.Аргумент «value»определяетзначение параметра.Возможны дваварианта: значениеONилиTRUE(параметразадан) и значениеOFFилиFALSE(параметране задан). Аргумент«option_name»опре­деляетимя параметра, который необходимоизменить. Возможныезначения этогоаргументаприведены втабл. с краткимуказаниемназначениякаж­догопараметра.

Таблица.Параметрыконфигурациибазы данных

данных

Таблица(продолжение)

Параметр Назначение

subscribed Разрешениеподписки напубликацию
singleuser Использованиебазы данныхв режимеподдержкиодного
пользователя

tornpage detection Обнаружениеповрежденныхстраниц

trunc.log on chkpt____Усечениежурнала транзакцийпри выполненииконтрольнойточки

Например, для переключениябазы данныхpubsводнопользовательскийре­жим нужновыполнитьследующуюкоманду: ЕХЕСsp_dboption«pubs», «singleuser»,«true»

Частьустановленныхадминистраторомпараметровконфигурациибазы дан­ныхможет бытьизмененапользователемс помощью командыSETнауровне соединения, транзакции, хранимой процедуры, пакета команди т. д. Эти изме­нениядействуюттолько в пределахсоединения(транзакции, хранимой проце­дурыи т. д.) и будутпотеряны сразуже после отсоединенияпользователя.При последующемсоединенииснова будутиспользоватьсяпараметры, установлен­ныеадминистратором.

Использованиесистемнойхранимой процедурыsp_dboptionдляуправле­ниясвойствамибазы данныхбыло единственнымвариантом впредыдущихвер­сиях.Даже при работес SQLServer 7.0администраторимел в своемраспоряжениитолько этупроцедуру. ВSQLServer 2000изменениепараметровбазыданных такжеможет выполнятьсяс помощью командыALTERDATABASE саргументомSET. Какнетрудно догадаться, свойства базыдан­ных, которые предполагаетсяизменить, указываютсяс помощью конструкции, имеющейследующийсинтаксис:

::=

[

|

|

|

.- .- =

{ SINGLEJJSER| RESTRICTED_USER | MULTIUSER }

| { OFFLINE | ONLINE }

| { READJ3NLY| READ_WRITE }

ROLLBACKAFTER integer [SECONDS]

| ROLLBACK IMMEDIATE

| NO WAIT

:: =

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

| (CURSOR_DEFAULT { LOCAL | GLOBAL }

{ AUTO_CLOSEON | OFF }

| {AUTO_CREATE_STATISTICSON | OFF }

|{ AUTO_SHRINKON | OFF }

| {AUTO_UPDATE_STATISTICSON | OFF }

::=

ANSI_NULL_DEFAULT { ON | OFF }

| ANSI_NULLS { ON | OFF }

jANSI_PADDING {ON | OFF }

jANSIJIARNINGS {ON | OFF }

|ARITHABORT {ON | OFF }

| CONCAT_NULL_YIELDS_NULL {ON | OFF }

| NUMERIC_ROUNDABORT {ON | OFF }

|QUOTEDJDENTIFIER {ONJ OFF }

| RECURSIVEJRIGGERS {ON | OFF }

::=

RECOVERY{ FULL | BULK_LOGGED | SIMPLE }

|TORN_PAGE_DETECTION {ON | OFF }

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

Присоединениеи отсоединениебазы данных

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

Отсоединениеи присоединениев основномиспользуютсядля переносабаз данныхс одного дискаили серверана другой. Еслитребуетсяскопироватьбазу данныхна один илинесколькоудаленныхсерверов, можновыполнитьрезерв­ноекопированиебазы данныхи разослатькопии. Другойспособ — выполнитьотсоединениебазы данныхи разослатьпользователямвсе ее файлы.У себя на серверепользователисмогут выполнитьприсоединениебазы данныхи сразу же начатьработать с ней.Процедураотсоединенияи присоединениязанимает го­раздоменьше времени, чем созданиеи восстановлениерезервнойкопии. Крометого, отсоединеннуюбазу данныхможно записатьна компакт-дискии разо­слатьпользователям.Пользователисмогут работатьс базой данныхнепосред­ственнос компакт-дискав режиме «толькодля чтения».Такой подходособенно эффективенпри рассылкекаталогов, которые недолжны изменяться.

Еслипланируетсяскопироватьбазу данныхна компакт-диск, предварительнонеобходимоустано­витьвсе ее группыфайлов в режим«только длячтения». Дляэтого используетсякоманда ALTERDATABASEMODIFY FILEGROUP filegroup_name READONLY.

Выполнятьоперацииприсоединенияи отсоединениябазы данныхмогут толь­кочлены фиксированнойроли сервераsysadmin.Этиправа не могутбыть пе­реданыникаким другимспособом, кромекак включениемпользователейв эту фиксированнуюроль сервера.

Для отсоединениябазы данныхиспользуетсяследующаяхранимая процедура:

sp_detach_db[@dbname=] «dbname» [,[@skipchecks=]«skipchecks»]

Аргумент«dbname»указываетимя базы данных, которую необходимоотсоеди­нить.Аргумент «skipchecks»управляетобновлениемстатистикипри отсоедине-

нии.Если значениеэтого аргументаравно TRUE, тообновлениестатистикипропус­кается, если же указываетсяFALSE, тообновлениестатистикибудет выполнено.Дляотсоединениябазы данныхpubsнужноиспользоватьследующуюкоманду:

ЕХЕСsp_detach_db «pubs»


recovery_option> sql_option> auto_option> cursor_option > termination> state_option>recovery_option>sql_option>auto_option> cursor_option> state_option>    продолжение
--PAGE_BREAK--

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

Дляприсоединенияотсоединеннойбазы данныхиспользуетсясистемнаяхра­нимаяпроцедураsp_attach_db:

sp_attach_db[@dbname=] «dbname»,[(Pfilenamel=]«filenameji»[,...16]

Аргумент«filename_n»долженсодержатьполный путьк первичномуфай­луприсоединяемойбазы данных.Описание остальныхфайлов базыданных хра­нитсяв первичномфайле. Еслиположение этихфайлов былоизменено, тонеобходимоявно указатьих положениепри вызовехранимой процедуры— че­реззапятую в аргументе«fi lename_n».


Количествофайлов, котороеможно присоединитьс помощью хранимойпроцедурыsp_attach_db, ограничивается16. Если необходимовыполнитьподключениебазы данныхс большим количествомфайлов, используетсякоманда CREATEDATABASE FOR ATTACH.

Дляприсоединениябазы данныхpubsнужновыполнитьследующуюкоман­ду:sp_detach_db«pubs».

«d:\mssql\data\pubs.mdf» .

«d:\mssql\data\pubs_log.Idf»

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

sp_attach_sing1e_file_db [@dbname =] «dbname».

[@physname=]«physicaljiame»

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

Дляприсоединениябазы данныхpubsсиспользованиемтолько первичногофайланеобходимаследующаякоманда:sp_attach_single_file_db«pubs», «d:\mssql\data\pubs.mdf»

Передача праввладения

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

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

sp_changedbowner [(Ploginame=] «login»

[,[@map=] remap_al1as_f1ag]

Рассмотримназначениекаждого изаргументовхранимой процедуры.О [Ologiname=]«login».Имяучетной записипользователя, которого требу­етсясделать владельцембазы данных.Эта учетнаязапись не должнаиметь доступак базе данныхни через псевдоним, ни через отображениев пользова­телябазы данных.В противномслучае передвыполнениемхранимой проце­дурынеобходимосначала удалитьвсе отображенияучетной записив пользо­вателябазы данных.

О [map=] remap_alias_flag.Этотаргумент можетприниматьзначение TRUEилиFALSE.ЗначениеTRUEозначает, что учетнаязапись староговладельца базыданныхбудет отображатьсяв учетную записьнового владельца.Если заданоFALSE, учетнаязапись староговладельцауничтожается.Если этот аргументопускается, то есть принимаетзначение NULL, товсе существующиеdboбу­дутотражены вучетную записьнового владельцабазы данных.Хранимаяпроцедураsp_changedbownerдолжнавыполнятьсяв контекстебазы данных, владельцакоторой необходимоизменить. Например, для изменениявла­дельцабазы данныхKHSUнеобходимовыполнитьследующуюкоманду:

USE khsu

EXECsp_changedbowner «MATRIXXAdmlnistrator»

Изменение именибазы данных

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

sp_renamedb[@old_name=] «old_name».[@new_name=] «new_name»

Аргумент«old_name»долженсодержатьстарое имя базыданных. Новоеже имяуказываетсяс помощью аргумента«new_name».

Правана выполнениеэтой хранимойпроцедуры имеюттолько членыфиксированнойроли сервераsysadmin.

Просмотр свойствбазы данных

Частобывает необходимополучитьисчерпывающуюинформациюо структуреи параметрахбазы данных.В этом разделебудут рассмотренысредстваTransact-SQL, спомощью которыхможно получитьразличнуюинформациюо базе данных.Дляпросмотразначения параметровконфигурациибазы данных, установ­ленныхс помощью хранимойпроцедурыsp_dboptionилисредствамиEnterpriseManager, можноиспользоватьсистемнуюхранимую процедуруsp_dboptionсуказаниемтолько именибазы данных.Например, дляполученияинформациио параметрахбазы данныхpubsможновыполнитьследующуюкоманду: EXECsp_dbopt1on«pubs»

Будет возвращенпримерно следующийрезультат:

The following options are set:

published

trunc.log on chkpt. tornpage detection autocreate statistics auto update statistics

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

ЕХЕСspjboption«pubs», «ANSI null default»

В результатевыполненияэтой командыбудет полученпримерно следую­щийрезультат:

OptionName CurrentSetting

ANSI null default off

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

Settable database options:

ANSI null default

ANSI nulls

ANSI padding

ANSI warnings

arithabort

auto create statistics

auto update statistics

autoclose

autoshrink

concat null yields null

cursor close on commit

dbo use only

default to local cursor

mergepublish

numeric roundabort

offline

published

quoted identifier

readonly

recursivetriggers

select into/bulkcopy

single user

subscribed

torn page detection

trunc. log on chkpt.

Помимохранимой процедурыsp_dboptionдляполучениязначения техже инекоторыхдополнительныхпараметровконфигурацииможно использоватьследующуюкоманду:DATABASEPROPERTY(«database_name». «property»)

Аргументdatabase_nameдолженсодержать имябазы данных, свойства ко­торойнеобходимопросмотреть.Возможныезначения аргументаpropertyи ихназначениеперечисленыв табл. 14.2.

ТаблицаАргументыкоманды DATABASEPROPERTY

Аргумент

IsAnsiNullDefault

IsAnsiNullEnabled

IsAnsiWarningEnabled

IsAutoClose

IsAutoShrink

IsAutoUpdateStatistics

IsBulkCopy

IsCloseCursorOnCommit-Enabled

IsDboOnly

IsDetached

IsEnergencyMode

IsFulltextEnabled

IsInLoad

IsInRecovery

IsInStandby

IsLocalCursorsDefault

IsNotRecovered IsNullConcat

IsOffline IsQuotedldentifiersEnabled

leReadOnly

IsRecursiveTriggersEnabled

IsShutDown


Назначение

Аналог аргумента «ANSI null default» процедуры sp_dboption

Аналог аргумента «ANSI nulls» процедуры sp_dboption

Аналог аргумента «ANSI warning» процедуры sp_dboption

Аналог аргумента «autoclose» процедуры sp_dboption

Аналог аргумента «autoshrink» процедуры sp_dboption

Аналог аргумента «auto update statistic» процедуры sp_dboption

Аналог аргумента «select into/bulk copy» процедуры sp_dboption

Аналог аргумента «cursor close on commit» процедуры spjdboption

Аналог аргумента «dbo use only» процедуры sp_dboption

База данных отделялась командой sp_detach

Разрешение работы с «подозрительной» базой

Поддержка полнотекстового поиска

База данных была загружена из резервной копии

Выполняется восстановление базы данных

База данных работает в режиме «только для чтения»

Аналог аргумента «default to local cursor» процедуры sp_dboption

Восстановление базы данных завершилось с ошибкой

Аналог аргумента «concat null yields null» процедуры sp_dboption

Аналог аргумента «offline» процедуры sp_dboption

Аналог аргумента «quoted identifier» процедуры sp_dboption

Аналог аргумента «read only» процедуры sp_dboption

Аналог аргумента «recursive triggers» процедуры sp_dboption

В базе при запуске сервера возникают ошибки__

Таблица(продолжение)

Аргумент Назначение

IsSingleUser Аналогаргумента«singleuser» процедуры

sp_dboption

IsSuspect Имеютсясомнения вцелостностибазы данных
IsTruncLog Аналогаргумента«trunc.log on chkpt.» процедуры

sp_dboption

Version Внутреннийномер версиисервера SQLServer,
________________________ накотором быласоздана база

данных_________

Результатомвыполнениякоманды DATABASEPROPERTYбудетлибо значениеО, соответствующеезначению FALSEилиOFFхранимойпроцедурыsp_dbopt1on, либозначение1, соответствующеезначению TRUEилиON.Исключениемиз правилаяв­ляетсязначение, возвращаемоедля параметраVersion.Дляэтого параметравоз­вращаетсязначение типаint, котороеможет приниматьлюбое положительноезначение.Если значениепараметра неопределено, то командавернет значениеNULL.

Приведемпример использованиякоманды DATABASEPROPERTYдляполуче­нияинформациио режиме слияниядвух значенийNULL, установленномдля базы данныхpubs:SELECTDATABASEPROPERTY («pubs», "IsNullConcat")

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

О

(1 row(s)affected)

Дляполучениянекоторой общейинформациио базе данныхможно исполь­зоватьследующуюхранимую процедуру:spjielpdb[[@dbname=] «name»]

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

Дляполученияинформациио файлах базыданных из хранимойпроцедурыspjielpdbпроисходитвызов хранимойпроцедурыsp_helpfile, котораяи выдает информациюо параметрахфайла. Поэто­муформат результатавыполненияэтих хранимыхпроцедур одинаков.Более подробноформат данныхбудет рассмотренниже.

Дляполученияинформациио базе данныхpubsможноиспользоватьследу­ющуюкоманду:

ЕХЕСspjielpdb«pubs»


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

Дляполученияинформациио конкретномфайле базыданных можноис­пользоватьследующуюхранимую процедуру:sp_helpfile [[^filename= ] «name»]

Этапроцедуравыдает информациюо файле в следующихстолбцах: ОName—логическоеимя файла вбазе данных;

О Filename—физическоеимя файла воперационнойсистеме, котороевклю­чаетполный путьк файлу;

О Filegroup—имягруппы файлов, к которой принадлежитфайл;

О Size —текущий размерфайла;

О Maxsize—максимальныйразмер файла, установленныйпри его создании;

О Growth— шагприроста размерафайла;

О Usage—типиспользованияфайла; возможноодно из двухзначений: dataonly(файлиспользуетсядля храненияданных) или logon! у(файл исполь­зуетсядля храненияжурнала транзакций).

Дляполученияинформациио группе файловможно использоватьследую­щуюхранимую процедуру:sp_helpfilegroup[[Ofilegroupname =] «name»]

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

Дляполученияинформациио группе файловPRIMARYбазыданных pubsможноиспользоватьследующуюкоманду: ЕХЕСsp_helpf11egroup «primary»

Будетполучен примерноследующийрезультат:groupname groupid fllecount

PRIMARY 1 1

f11e_in_group fileid filename size maxsize growth

pubs 1 pubs.mdf2688 KB Unlimited Ш

В столбцеFilenameбудетуказан полныйпуть к файлу.

Для просмотраинформацииоб использованиипространствавнутри базыдан­ных можноприменитьследующую, системнуюхранимую процедуру:

sp_spaceused[[@objname=] «objname»][,[@updateusage=] «updateusage»]

Аргумент«objname»содержитимя таблицыбазы данных, о которой необхо­димополучить информацию.Аргумент«updateusage»управляетвыполнениемкомандыDBCCUPDATEUSAGE иможет приниматьзначения TRUEилиFALSE.

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

database_name

pubs

reserved data


database_s1ze 3.63 MB

Index size


unallocated space 1.10 MB unused

(12 row(s) affected)

DBCCexecution completed. If DBCC printed error messages, contact yoursystem administrator.

Всяинформацияо файлах и группахфайлов базыданных хранитсяв сис­темныхтаблицах. Хранимыепроцедурыобращаютсяк этим таблицами возвра­щаютпользователюрезультат вудобном виде.Хотя в некоторыхслучаях бываетпрощенапрямую считатьданные из системныхтаблиц, чемвыполнятьхрани­мыепроцедуры,Microsoftнастоятельносоветует неприбегать кпрямому об­ращениюк системнымтаблицам, таккак их структураможет бытьизменена вследующихверсиях, и поэтомупрограммы, успешно работающиес одной из версийSQLServer, могутработать неправильноили вообще неработать сосле­дующимиверсиями этойСУБД. При использованиихранимых процедурMicrosoftгарантирует, что совместимостьбудет сохранена.

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

Списокфайлов базыданных хранитсяв системнойтаблице sysfiles.Каж­даястрока этойтаблицы соответствуетодному файлубазы данных.Таблица sysfilesявляетсявиртуальнойи не может бытьизмененанепосредственнос помощьюкоманд DELETE,UPDATE илиINSERT.Темне менее, пользователимогут считыватьданные из этойтаблицы, используякоманду SELECT.Структуратаб­лицыsysfiI es приведенав табл. 14.3.

Таблица.Структурасистемнойтаблицы sysfiles

Имя столбца


    продолжение
--PAGE_BREAK--

Тип данных


Назначение


Field


Smallint


Идентификационный номер (ID) файла в базе данных


GroupID


Smallint


ID группы файлов, к которой принадлежит файл


Size


Int


Текущее количество страниц в файле


Maxsize


Int


Максимальный размер файла. Значение -1 означает,




что размер файла не ограничен


Growth


Int


Шаг приращения


Status


Int


Текущий статус файла


Perf


Int


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


Name


Nchar(128)


Логическое имя файла


Filename


Nchar(260)


Физическое имя файла


Таблицаsysfliesописываетподробнуюструктуруфайлов. Болеекомпакт­ноеописание файловхранится втаблице sysfilesl, котораясодержит столбцыstatus,field,nameиfilename, назначениекоторых аналогично.Для просмот­раинформациио файлах базыданных с помощьютаблицы sysfileslможновыполнитьследующуюкоманду: SELECT* FROMsysfilesl

В итогебудет возвращенследующийрезультат:
status fileid name filename

3 1 pubs ...\data\pubs.mdf

49218 2 pubsjog ...\data\pubs_log.ldf

(2 row(s) affected)

Описаниегрупп файлов, созданных вбазе данных, хранится всистемнойтаблицеsysfilegroups.Каждаястрока этойтаблицы соответствуетодной группе.Структураэтой таблицыприведена втабл.

Таблица.Структуратаблицы sysfilegroups

Имя столбца


Тип данных


Назначение



GroupID Allocpolicy Status Groupname


Smallint Smallint Ins Sysname


Идентификационный номер группы файлов Зарезервировано Текущий статус группы: 0x8— READONLY, 0x10 — Имя группы файлов


DEFAULT


Например, для полученияинформациио группах файлов, определенныхв базе данныхpubs, можноиспользоватьследующийзапрос:

SELECT * FROM sysfilegroups

Будет возвращенпримерно следующийрезультат:

groupld allocpolicy status groupname

1 0 16 PRIMARY
(1row(s)affected)

Удаление базыданных

Дляудаления базыданных используетсяследующаякоманда: DROPDATABASE databasejiame [,...n]

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

Например, для удалениябаз данных PubsиNorthwindнужновыполнитьследующуюкоманду: DROP DATABASE Pubs. Northwind

Управлениепользовательскимитипами данных

В главе5 в разделе «Типыданных» былирассмотренывстроенныев SQLSer­ver2000 типыданных. Этитипы данныхвсегда имеютсяв распоряжениипользо­вателейи могут бытьиспользованыдля столбцовтаблиц, представлений, пере­менныхи т. д. Однакопомимо встроенныхтипов данныхпользователимогут на ихоснове создаватьсвои собственныетипы данных— так называемыепользо­вательскиетипы данных.

Пользовательскиетипы данных(user-defineddata type) —это типы данных, создаваемыепользователями.Они создаютсяна основе системныхтипов дан­ных.Пользовательскиетипы данныхчасто используются, когда в несколькихтаблицахнеобходимохранить однотипныезначения, причемгарантировать, что столбцыв таблице будутиметь одинаковыйразмер, типданных и чувствитель­ностьк данным NULL.Например, с помощьюпользовательскоготипа данныхможнохранить номераи серии паспорта.

Длясозданияпользовательскоготипа данныхиспользуетсясистемнаяхра­нимаяпроцедураsp_addtype:

sp_addtype [ @typename= ] type.[ @phystype= ] system_data_type[. [@nulltype= ]«null_type»] [, [ @owner= ] «ownername» ]


Еслинеобходимосделать пользовательскийтип данныхдоступным вовсех создаваемыхбазах дан­ных, добавьте этоттип в базу данныхmodel.

Здесь используютсяследующиеаргументы.

О type— имясоздаваемоготипа данных.При выбореимени создаваемоготипа данныхнеобходимоследоватьустановленнымправилам именованияобъек­тов.Имя должно бытьуникальнымв пределахвладельца, тоесть не совпа­датьс именами другихобъектов. Разныепользователимогут употреблятьоди­наковыеимена для создаваемыхобъектов.

Оsystem_data_type—системный типданных, на основекоторого создаетсяпользовательскийтип данных.Можно выбратьодин из следующихтипов данных:

«binary(n)» Image smalldatetime

Bit Int smallint

«char(n)» «nchar(n)» ' text

Datetime Ntext tinyint

Decimal Numeric uniqueidentifier

«decimal[(p[,s])]» «numeric[(p[,s])]» «varbinary(n)»

Float «nvarchar(n)» «varchar(n)»

«float(n)» Real

Кавычкинеобходимы, когда помимосамого типаданных требуетсяуказаниедополнительныхпараметров.Аргумент пидентифицируетдлину системноготипаданных в пользовательскомтипе данных, аргумент р —максимальноесуммарное(до и последесятичнойточки) количествоцифр для числовыхтиповданных в пользовательскомтипе данных, аргумент s—максимальноеколичестводесятичныхцифр послезапятой впользовательскомтипе данных.


Нельзясоздать пользовательскийтип данных наоснове системноготипа timestamp.

О «null_type».Значение этогоаргументаопределяет, будет ли пользовательскийтип данныххранить значенияNULLАргументnull_typeимееттип varchar(S)имо­жетпринимать одноиз трех следующихзначений: NULL(разрешаетсяхранение NULL),NOTNULL (хранениеNULLзапрещается)или NONULL(используетсязначение поумол­чанию).Если аргументnull_typeнеуказывается, то при созданиипользовательс­коготипа используетсязначение поумолчанию, установленноедля базы данныхс помощью системнойхранимой процедурыsp_dboption.Текущеезначение, уста­новленноев базе данных, можно получитьс помощью функцииGETANSINULL


Значениеаргументаnull_typeтребуетсядля пользовательскоготипа данныхтолько какзначение поумолчанию присоздании столбцатаблицы. Еслипри созданиистолбца явноопределеносвой­ство NULLилиNOTNULL, тозначение аргументаnull_typeигнорируется.

О «owner_name».Определяетвладельца илисоздателянового типаданных. По умолчаниювладельцемнового типаданных считаетсятекущий пользователь.Параметрowner_nameимееттип данныхsysname.

Например, при созданиипользовательскихтипов данныхдля описанияно­меровфакса и телефонаможно использоватьследующий код: ЕХЕСsp_addtypetelephone, «varchar(24)», «NOTNULL» EXECsp_addtypefax, «varchar(24)», «NULL»

Хранимаяпроцедураsp_addtypeдобавляетописание типав системнуютаб­лицуsystypesтекущейбазы данных.В принципе, если посмотретьна эту таблицу, то можно заметить, что в ней такжеперечисленывстроенныетипы данных.То есть и типыданных, выглядящиевстроенными, на уровне конк­ретнойбазы данныхявляютсяпользовательскими, но имеющимите же свой­стваи имена, что ивстроенные.Например, выберемиз таблицыsystypesбазыданных pubsсписокдоступных типовданных:

SELECTnameFROMsystypes

Будет возвращенследующийрезультат:

name

image

text

uniqueidentifier

tinyint

smallint

int

smalldatetime

real

money

datetime

float

sql_variant

ntext

bit

decimal

numeric

small money

bigint

varbinary

varchar

binary

char

timestamp

nvarchar

nchar

sysname

id

tid

empid

(29 row(s)affected)

Каквидно, в однойтаблице перечисленыи встроенные, и пользовательскиетипыданных (id, ti d иemid).

Управлениеправилами

Правила(rules)являютсяодним из средствобеспеченияцелостностиданных, хранящихсяв базе. Правилаоставлены дляобеспеченияобратнойсовместимос­тис предыдущимиверсиями SQLServer. Вновой версииони замененыограни­чениямицелостностиCHECK, которыеявляются болеемощным средствоми опре­деляютсяпри созданиитаблицы. Правилаже создаютсякак отдельныеобъекты, которыевпоследствиисвязываютсяс конкретнымиполями таблиц.В этом раз­делебудут рассмотреныправила каксамостоятельныеобъекты базыданных.

Длястолбца таблицыможно определитьтолько одноправило, нонесколькоограниченийцелостностиCHECK.Еслидля одногостолбца определеныограни­ченияцелостностии правило, тобудут учитыватьсякак ограниченияцелостно­сти, так и правило.

Созданиеправила неможет выполнятьсяв одном пакетес другими командамиTransact-SQL.

Длясоздания правилаиспользуетсяследующаякоманда Transact-SQL:CREATERULE ruleAScondition_exdivssion

Рассмотримаргументыкоманды. Оrule—имяправила. Привыборе именинеобходимопридерживатьсяобщих

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

Оcondition_exdivssion—логическоевыражение, определяющееусловие, на­кладываемоена значения.В качествеусловия можноиспользоватьлюбые логи­ческиекоманды, арифметическиеоператоры, встроенныефункции и предика­ты(например IN,BETWEEN,LIKE).Ввыраженииcondition_exdivssionнельзяссылатьсяна столбцытаблиц или налюбые другиеобъекты базыданных. Встро­енныефункции такжене должны ссылатьсяна объекты базыданных. В выра­жениидопустима одналокальнаяпеременная, начинающаясяс символа @. Вкачествеимени переменнойможно использоватьпроизвольнуюстроку. Привыполненииправила переменнаябудет содержатьзначение, котороепользо­вательпытается ввестив столбец спомощью командыINSERTилиUPDATE.Пе­ременнаяможет использоватьсяв любых логическихоперациях.Приведемпример созданияправила: CREATERULE rule_oneAS @val>=100AND(ava1

(PlistIN («MATRIX». «ACC», «SIS», «KIT»)

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

Длясвязыванияправила состолбцом таблицыили пользовательскимтипом данныхиспользуетсяхранимая процедураsp_bindru1eсоследующимсинтакси­сом:

sp_b1ndrule[@ru1ename =] «rule». [@objname =]«objectjname»[.[@futureonly=]«futureonlyjflag»]

Назначениепараметровпроцедурыsp_bindruleсоответствуетназначениюаналогичныхпараметровхранимой процедурыsp_bindefault, описаннойв пре­дыдущемразделе.

Для«отвязывания»правила используетсяхранимая процедураsp_unbindrule:sp_unb1ndrule [@objname=] «object_name»[.[@futureonly=]«futureonly_flag»]

Дляполучениясведений оправиле (именивладельца идаты создания)ис­пользуйтехранимую процедуруsp_help суказанием вкачестве аргументаиме­ниправила: sp_he1p«rule_name»

Дляполучениятекста кодаTransact-SQL, определяющегоправило, исполь­зуйтехранимую процедуруsp_helptext:sp_helptext «rule_name»

Дляизменения имениправила используйтехранимую процедуруsp_rename:sp_rename@objname='rule_one'@newname='rule_two'

Управлениеумолчаниями

Умолчание(default)— этозначение, котороебудет присвоеностолбцу табли­цыпри вставкестроки, еслив команде вставкиявно не указанозначение дляэтогостолбца.

Каки правила, умолчанияоставлены вSQLServer 2000для обеспеченияобратнойсовместимостис предыдущимиверсиями продукта(до версии SQLServer 7.0).Версия SQLServer 2000позволяетзадавать умолчаниядля столб­цовтаблицы илипользовательскоготипа данныхпри их создании, используяключевоеслово DEFAULT.Применениеумолчаний иправил какотдельныхобъек­товбазы данныхбыло вызваноневозможностьюизменениятаблиц до версииSQLServer 7.0.Было гораздопроще создатьновое правилоили умолчание, чем удалятьтаблицу и создаватьее заново. Таккак версии SQLServer 7.0 и2000 разрешаютсвободно изменятьструктурутаблиц, то надобностьв правилах иумолчанияхкак отдельныхобъектах отпаласама собой.Поэтому, есливы еще толькосоздаете собственнуюбазу данных, нет необходимостииспользоватьустаревшиеконструкции, подобные правилами умолчаниям.К тому же нетабсолютноникакой гарантии, что Microsoftбудетподдерживатьэти объектыв следующихреализацияхSQLServer, такчто при использованииправил и умолчанийперед вами раноили поздновстанет вопрособ измененииструкту­рыбазы данных.

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

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

Длясоздания умолчанияиспользуетсяследующаякоманда: CREATEDEFAULT default AS constant_exdivssion

Здесьdefault—имяумолчания, aconstant_exdivss1on— егозначение.

Привыборе имениумолчанияследует придерживатьсяустановленныхпра­вил именованияобъектов. Крометого, имя умолчаниядолжно бытьуникально длякаждого владельца.Указание именивладельцаумолчания приего созданиинеобязательно.

В качествезначенияconstant_exdivssionможноиспользоватьне только кон­станты, но и любыематематическиевыражения ивстроенныефункции. Строкисимволов и датыдолжны заключатьсяв одиночныекавычки. Передбинарнымиданнымидолжен указыватьсяпрефикс Ох, а передденежным типом— символ $. Еслиразмер значенияпо умолчаниюпревышаетразмер, заданныйдля данных встолбце, выполняетсяусечение значенияпо умолчаниюдо требуемогоразмера.

Приведемпример созданиятекстовогоумолчания:CREATEDEFAULT defaultone AS «RIACIndustries»

Созданиеумолчания неможет выполнятьсяв одном пакетес другими командамиTransact-SQL.

Умолчаниеможет бытьсоздано тольков текущей базеданных. Послетого как умолчаниесоздано, егоможно связатьсо столбцомтаблицы илипользователь­скимтипом данных.Для связыванияумолчания собъектом базыданных исполь­зуетсяхранимая процедураsp_bindefault, имеющаяследующийсинтаксис:

sp_bindefault [@defname=] «default»,

[(Pobjname=]«objectjiame»

[. [@future]only=]«futureonly_flag»]

Здесь используютсяследующиеаргументы.

О «default»— имяумолчания. Этоимя, указанноепри созданииумолча­нияв команде CREATEDEFAULT.

О «object_name»— имяобъекта, к которомупривязываетсяумолчание. Длясвя­зыванияумолчания состолбцом таблицыимя объектауказываетсяв форме column.tab!e.Еслиже используетсядругая формаимени, то считается, что умолчаниесвязываетсяс пользовательскимтипом данных.Умолчание немо­жетбыть связаносо столбцомтипа timestamp, столбцомс установленнымог­раничениемцелостностиIDENTITYилисо столбцом, связанным сдругим умол­чанием.В последнемслучае необходимоотвязатьотстолбца староеумолчание, ауже затем привязыватьновое. Еслиумолчаниесвязываетсясо столбцом, име­ющимпользовательскийтип данных, ис этим типомданных связанодругое умолчание, то умолчание, определенноедля столбца, имеет приоритетнад умол­чанием, установленнымдля пользовательскоготипа данных.Если в имениобъектаприсутствуютнедопустимыесимволы, то варгументе object_nameне­обходимоиспользоватьразделители[ и ] для указанияимени объекта.

О«futureonly_flag»—этотаргумент требуетсятолько присвязыванииумол­чанияс пользовательскимтипом данныхи не нужен присвязываниисо столб-

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

ЕХЕС sp_b1ndefault «default_one»,

"[employes013].[companyname]"

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

ЕХЕСsp_bindefault «default_one».

«emp_data».«futureonly»


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

Когдаумолчаниесвязываетсясо столбцомтаблицы, информацияо связываниисохраняетсяв системнойтаблице базыданных syscolumns.Присвязыванииумол­чанияс пользовательскимтипом данныхинформациясохраняетсяв таблице systypes.

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

Привставке новойстроки безуказания значенийдля столбцовэтим столб­цамприсваиваетсялибо значениепо умолчанию(если таковоеопределено), либо значениеNULL(еслидля столбцаразрешенохранение значенийNULL).Еслидля столбцане определенозначение поумолчанию изапрещенохранение значенийNULL, топри вставкепустой строкисервер выдастсообщение обошибке. Еслидлястолбца разрешенохранение значенийNULLиустановленозначение поумол­чанию, то при вставкепустой строкизначение поумолчанию будетиметь при­оритетнад значениемNULL.

Дляудаления умолчанияиз базы данныхиспользуетсяследующаякоманда: DROPDEFAULT {default} [,...n]

Здесьаргумент defaultопределяетимя умолчания, которое необходимоуда­лить.Используя однукоманду DROPDEFAULT, можноудалить несколькоумол­чаний.Для этого необходимоперечислитьих через запятую.

Нельзяудалить умолчание, связанное состолбцом таблицыили пользователь­скимтипом данных.Перед удалениемнеобходимоотвязать умолчаниеот всех объек­тов, а уже затемвыполнятькоманду DROPDEFAULT. Дляотвязыванияумолчанияиспользуетсяхранимая процедураsp_unbindefaultсоследующимсинтаксисом:

sp_unbindefault[@objname=] «object_name»

[, [@futureonlу=] «futureonly_flag»]

Здесь используютсяследующиеаргументы.

О «object_name»—имястолбца таблицыили пользовательскоготипа данных, откоторых необходимоотвязать умолчание.Когда умолчаниеотвязываетсяотпользовательскоготипа данных, оно автоматическиотвязываетсяото всех столбцов, имеющих этоттип данных, если толькоумолчание небыло связа­нос этими столбцамиявно и в командене указан аргумент«futureonly».

О " futureonl y_f 1ag"— указываетсятолько дляпользовательскихтипов данных.Еслиэтот аргументимеет значение«futureonly», тоумолчание неотвязыва­етсяот столбцов, имеющих пользовательскийтип данных.Если этот аргументотсутствует, сервер автоматическиотвяжет умолчаниеот всех столбцов.Дляполучениясведений опредставлении(имени владельцаи даты созда­ния)используйтехранимую процедуруsp_helpсуказанием вкачестве аргу­ментаимени умолчания:spjielp «default_one»

Дляполучениятекста кодаTransact-SQL, определяющегоумолчание, исполь­зуйтехранимую процедуруsp_helptext:sp_helptext «default_one»

Дляизменения имениумолчанияиспользуйтехранимую процедуруsp_rename:sp_rename@objname='default_one' @newname='default_two'


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

Мамаев Е., Шкарина Л. «Microsoft SQl Server 2000 для профессионалов».-СПб: Питер, 2001

Хоторн Роб «Разработка баз данных, Micrososoft SQL Server 2000».-Вильямс, 2001

Шарон Б., Мэйбл Грэг «Sql Server 2000, Энциклопедия программиста».-ДиаСофт, 2001


170>--PAGE_BREAK--

ID сотрудника


Имя сотрудника


№ паспорта


Дата рождения


12576893


Мамаев Евгений


357934 ХИ-БА


13.08.78


56387934


Шкарина Лилия


463865 XIV-БА


07.10.72


85973002


Салихов Тимур


653473 Х1И-БА


17.12.80


24856892


Волков Иван


395789 XVII-БА


05.05.79


76578243


Мамаев Сергей


312642 XVII-БА


21.09.80


Множествозначений А [ i, j ] припостоянномiи всехвозможных jобразу­юткортеж (илипопросту строкутаблицы). Количествовсех кортежейв отно­шенииопределяетего мощность, или кардинальноечисло. Мощностьотношения втабл. 2.2 равна5. Мощностьотношения, вотличие отпорядка отношения, мо­жет со временемменяться.Совокупностьвсех кортежейобразует телоотноше­ния(или собственнотаблицу).


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

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

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

Таккак строки втаблице неупорядочены, невозможновыбрать строкупо ее позиции— среди них несуществует«первой», «второй»,«последней».Любая таблицаимеет один илинесколькостолбцов, значенияв которых однозначноидентифицируюткаждую ее строку.Такой столбец(или комбинациястолбцов) называетсяпервичнымключом (primarykey). Втаблице Спортивнаясекцияпервичныйключ — это столбецФ.И.О.Такойвыбор первичногоключа имеетсуще­ственныйнедостаток: невозможнозаписать всекцию двухдетей с одними тем жезначение поляФ.И.О., чтона практикевстречаетсяне так уж редко.Именно поэтомучасто вводятискусственноеполе, предназначенноедля нумерацииза­писейв таблице. Такимполем, например, может быть егопорядковыйномер в журналедля каждогоребенка, которыйсможет обеспечитьуникальностькаж­дойзаписи в таблице.Ключ долженобладать следующимисвойствами.ОУникальностью.В каждый моментвремени никакиедва различныхкортежа отношенияне имеют одинаковогозначения длякомбинациивходящих в ключатрибутов.То есть в таблицене может бытьдвух строк, имеющих одинако­выйидентификационныйномер или номерпаспорта.

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

Выполнениеусловия уникальностиявляетсяобязательным.В то же времяпри необходимостимо­жетбыть допущенонарушениеусловия минимальности.

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

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

Взаимосвязьтаблиц являетсяважнейшимэлементомреляционноймодели данных.Она поддерживаетсявнешними ключами(foreignkey). Рассмотримпри­мер. В базеданных содержатсясведения оразличныхкасредрахуниверситета(таблица Кафедры), а также сведенияо работникахэтих кафедр(таблица Со­трудники).Первичнымключом таблицыСотрудникиявляетсяполе ID, атабли­цыКафедры—полеКафедра.ПолеКафедратаблицыСотрудникиявляетсявнешнимключом длясвязи с таблицейКафедры.

Приописании моделиреляционнойбазы данныхдля одного итого же поня­тиячасто употребляютразличныетермины, чтозависит отуровня описания(теория илипрактика) исистемы (Access,SQL Server, dBase). Втабл. приве­денасводная информацияоб используемыхтерминах.

ТаблицаТерминологиябаз данных

ТеорияБД_________РеляционныеБД_______SQLServer___________

Отношение(Relation) Таблица(Table) Таблица(Table)

Кортеж(Tuple) Запись(Record) Строка(Row)

Атрибут(Attribute) Поле(Field)___________Столбецили колонка(Column)


Краткая характеристикаредакции SQL Server 2000

Первыйвопрос, которыйнеобходиморешить, преждечем приступитьнепосред­ственнок установкеSQL Server 2000,— это выборредакции. SQLServer 2000 поставляетсяв несколькихредакциях, обладающихразной функциональностью\ и имеющихсвои отличительныеособенности.Вы должны выбратьименно ту ' редакцию, которая болеевсего подходитдля решениястоящих передвами за­дач.Например, еслитребуетсявсего-навсегообеспечитьпереноснойкомпьютер. соперационнойсистемнойWindows 98высокофункциональнымхранилищемданных, товряд ли стоитприобретатьSQL Server 2000Developer Edition. Луч­шимрешением будетSQL Server 2000Personal Edition.

Enterprise Edition

Используетсяв качествепромышленногосервера базданных. Поддерживаетвсе воз­можности, доступные вSQL Server 2000и системхранения данных.
SQLServer 2000 EnterpriseEdition поддерживаетсяследующимиоперацион­
нымисистемами:
ОWindows NT 4.0Server;
ОMicrosoft Windows 2000DataCenter;
ОWindows 2000Advanced Server;
ОWindows 2000Server;
ОMicrosoft Windows NT 4.0Server, Enterprise Edition.

Standard Edition

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

Standard Editionподдерживаетсяследующимиоперационнымисистемами: ..
ОWindows NT 4.0Server;

О MicrosoftWindows 2000 DataCenter

О Windows2000 AdvancedServer;

О Windows2000 Server;

О MicrosoftWindows NT 4.0 Server,Enterprise Edition.

Personal Edition

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

Personal Editionподдерживаетсяследующимиоперационнымисистемами:

О MicrosoftWindows 98;

О WindowsNT 4.0 Workstation;

О WindowsNT 4.0 Server;

О Windows2000 Professional;

О MicrosoftWindows 2000 DataCenter;

О Windows2000 AdvancedServer;

О Windows2000 Server;

О MicrosoftWindows NT 4.0 Server,Enterprise Edition.

DeveloperEdition

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

Developer Editionподдерживаетсяследующимиоперационнымисистемами: ОMicrosoft Windows 98(используяDesktop Engine); ОWindows NT 4.0Workstation; ОWindows NT 4.0Server; ОWindows 2000Professional; ОMicrosoft Windows 2000DataCenter; ОWindows 2000Advanced Server; ОWindows 2000Server;

О MicrosoftWindows NT® 4.0 Server,Enterprise Edition.

Desktop Engine Edition /

Используетсянезависимымиразработчикамидля встраиванияхранилищ данныхв разрабатываемыесистемы. DesktopEngine включаетв себя толькоинструмен­тыобработкипользовательскихзапросов (engine).В эту редакциюне входят:

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

О инструментыэлектроннойдокументацииBooks Online; Оинструментыподдержкирепликациисведением; Опримеры кода(code samples); Обиблиотекиразработки.

Хотя большейчастью редакцияDesktop Engine обеспечиваетту же функциональность, что и другиередакции, ноимеет некоторыеограничения.В частно сти, не реализованораспараллеливаниезапросов, индексированиепредставленийи некоторыедругие функции, характерныедля большихпромышленныхсерв ров.Кроме того, если на сервереодновременновыполняетсяболее пяти пакетов команд, то производительностьих выполненияснижается.Отличительно^чертойредакции DesktopEngine являетсятакже и то, чтоона не требуетклиен скихлицензий доступа(Client Access Licenses, CAL).Все описанныехаракте ристикиделают SQLServer 2000 DesktopEngine идеальнымвыбором присо| зданиисистем с встроеннымихранилищамиданных и приработе с данныкв автономномрежиме (off-line).

РедакцияDesktop Engine поставляетсяв виде модулейWindows Installer, которые могутбыть включеныв установочныйпакет. SQLServer 2000 DesktojfEngine поддерживаетвсе интерфейсыAPI, доступныев других редакциях.Эт API такжемогут бытьиспользованыдля администрированиясервера.

Desktop Engineподдерживаетсяследующимиоперационнымисистемами: \ ОMicrosoft Windows 98; О Windows NT 4.0Workstation; ОWindows NT 4.0Server; ОWindows 2000Professional; ОMicrosoft Windows 2000DataCenter; ОWindow's 2000Advanced Server; ОWindows 2000Server; ОMicrosoft Windows NT 4.0Server, Enterprise Edition.

Windows CE Edition

Используетсякак хранилищеданных на устройствахMicrosoft Windows g|Благодаряподдержкерепликациидопускаетсякопированиеданных с SQLI ver 2000Enterprise иStandard Editions.

Windows CE EditionподдерживаетсяMicrosoft Windows CE.

EnterpriseEvaluation Edition

Это полнофункциональнаяверсия SQLServer Enterprise Edition. Однакопр назначенаона только длязнакомствас данным продуктом, так как срокработы" сней истекаетчерез 120 днейпосле установки.Распространяетсяредакция EnterpriseEvaluation Edition свободнои доступна длязагрузки изИнтернета.Enterprise Evaluation Editionподдерживаетсяследующимиоперационнымисистемами: О WindowsNT 4.0 Server;

О MicrosoftWindows 2000 DataCenter;

О Windows2000 AdvancedServer;

О Windows2000 Server;

О MicrosoftWindows NT 4.0 Server,Enterprise Edition.

Возможностиредакций

Клиентскоепрограммноеобеспечениедля всех редакцийSQL Server 2000, за исключениемSQL Server Windows CE Edition, запускаетсяна любых версияхMicrosoft Windows NT,Microsoft Windows 2000 и MicrosoftWindows 95/98. Од­наковозможностьустановкисерверной частиSQL Server 2000, отвечающейза выполнениепользовательскихзапросов, зависитот используемойредакции иоперационнойсистемы. Так, серверная частьSQL Server 2000Enterprise Edition неможет бытьустановленана Windows 2000Professional, Windows NTWorkstation или Windows98. Тем неменее компакт-дискс SQL Server 2000Enterprise Editionобеспечиваетустановкуклиентскогопрограммногообеспече­нияна любой изэтих операционныхсистем.

В табл. 7.1.обобщена информацияо поддержкетой или инойредакциейразличныхмеханизмовSQL Server 2000, связанных сиспользованиембаз данных(БД).

Подготовкак установке

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

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

Непосредственнопроцесс подготовкик установкеSQL Server состоитиз трех этапов:

О проверкасоответствияаппаратнымтребованиям; О установканеобходимогопрограммногообеспечения; О конфигурированиеучетных записейдля служб MSSQLServerи SQLServer-Agent.


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

Аппаратныетребования

Для установкиинструментарияи библиотекMicrosoft SQL Server 2000компьютердолженотвечать минимальнымтребованиямк аппаратномуобеспечениюком­пьютера(табл. 7.3). Цифры, приведенныев таблице, практическине отличают­сяот аналогичныхпоказателейдля SQLServer 7.0. Это связанос тем, что ядроSQL Server 2000осталось восновном темже, что и в SQLServer 7.0.

Таблица.Требованияк аппаратнойчасти

Аппаратнаячасть_Минимальныетребования_

Компьютер Intelили совместимыйс ним.

Pentium 166MHz иливыше, PentiumPRO, Pentium III илипроцессор,

требующийсядля вашейоперационнойсистемы (с учетомредакции

SQL Server)
Память(RAM) Enterprise Edition: 64Мбайт

Standard Edition: 32Мбайт
Пространство SQLServer 2000:
жесткогодиска полнаяустановка: 180Мбайт;

типичнаяустановка: 170Мбайт;

минимальнаяустановка: 65Мбайт;

установкатолько утилитадминистрирования:90 Мбайт;

+50 Мбайт: установка OLAP;______________+12 Мбайт: установкаEnglishQuery________________________

Для успешнойработы рекомендуетсяк вышеперечисленнымтребованиямдоба­витьразмеры пользовательскихбаз данных, атакже учестьвозможностьроста сис­темныхбаз данных.Приведенныетребованияуказаны в расчетена системы, рабо­тающиес небольшимиобъемами данных.При увеличенииобъема базданных возрастаюти требованияк ресурсамкомпьютера.При этом следуетучитывать ивозможностиредакции, которуювы используете.Напомним, чтомаксимальныевозможностипредоставляетредакция SQLServer 2000 EnterpriseEdition, обеспечи­вающаяиспользованиесерверов с 32процессорамии объемом памятидо 64 Гбайт.


Не следуетприведенныев таблице требованиявосприниматькак требованияк ресурсам ваи.компьютера.Данные цифрыкасаются самогопакета SQLServer 2000. Крометого, следуетуче требованияоперационнойсистемы, которыемогут существенноотличаться.Например, дляопера­ционнойсистемы Windows98 достаточнобудет 8-16 Мбайтоперативнойпамяти, тогдакак опера­ционнойсистеме Windows2000 AdvancedServer для работынеобходимо, как минимум,128 Мбайт оперативнойпамяти.

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

Взаимодействиес операционнымисистемами

Как ужестало ясно приописании редакцийSQL Server 2000, каждая из нихрабо­тает подуправлениемлишь некоторыхоперационныхсистем семействаWindows. Поэтомувыбор редакциинакладываетограниченияи на операционнуюсистему, подкоторой будетработать SQLServer 2000. В табл.7.4 приведенасводная инфор­мацияо том, под управлениемкаких операционныхсистем можетработать таили инаяредакция, атакже указано, на каких операционныхсистемах разрешаетсяус­тановкатолько клиентскихкомпонентови соединениес SQL Server 2000.

При установкеSQL Server 2000на компьютер, работающийпод управлениемоперационнойсисте­мы WindowsNT Server 4.0 илиWindows NT Workstation 4.0, требуетсяустановкаService Pack вер­сии5.0 или болеепоздней. Приустановке SQLServer 2000 на Windows2000 установкасервисныхпакетовне требуется.

ТаблицаИспользованиередакций наразличныхоперационныхсистемах

Редакцияили компонент Операционныесистемы

SQL Server2000_____________________________________________

EnterpriseEdition Microsoft Windows NT Server4.0, MicrosoftWindows NT Server

Enterprise Edition 4.0,Windows 2000Advanced Server, Windows2000 DataCenter Server

StandardEdition Microsoft Windows NT Server 4.0,Windows 2000Server,

Microsoft Windows NTServer Enterprise Edition, Windows 2000Advanced Server, Windows 2000Data Center Server

PersonalEdition Microsoft Windows 98, WindowsNT Workstation 4.0,

Windows 2000Professional, MicrosoftWindows NT Server 4.0,

Windows 2000Server
DeveloperEdition Все операционныесистемы семействаWindows NT

и Windows2000

Толькоклиентскиеутилиты Всеоперационныесистемы семействаWindows NT
(включаявозможностьвыбора и Windows2000, а такжеWindows98
компонентов)
Установкасоединения Все операционныесистемы семействаWindows NT

и Windows2000, а такжеWindows 98и Windows 95

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


    продолжение
--PAGE_BREAK--Взаимодействиес программнымобеспечениемИнтернета

Для установкивсех редакцийMicrosoft SQL Server 2000необходимоналичие воперационнойсистеме MicrosoftInternet Explorer 5.0. Исключениемявляется установкав режиме ConnectivityOnly (толькосоединение), которая требуетMicrosoft Internet Explorer4.01 с ServicePack 2 и обеспечиваеттолько возмож­ностьустановкисоединенияс SQL Server 2000.

НаличиеInternet Explorer необходимодля работыпрограммыMicrosoft ManagementConsole (MMC), с помощьюкоторой реализованинструментадми­нистрированияEnterprise Manager, атакже для работыэлектроннойсправочнойсистемыBooks Online, реализованнойв виде компилированногоHTML-файла.При установкеSQL Server 2000на компьютерс Windows 2000устанавливатьотдельноброузер InternetExplorer 5.0 не придется, так как оннепосредственновстроенв эту операционнуюсистему.

В SQLServer 2000 быладобавленаподдержкатехнологииXML. Однакодоступ к даннымс использованиемэтой технологииосуществляетсясредствамиMicrosoft Internet InformationServer (US). Такимобразом, еслипредполагаетсяобеспечитьпользовате­лямвозможностьработы с даннымипосредствомтехнологииXML, следуетдополни­тельноустановитьInternet Information Server. Вэтом случаенеобходимоучесть, что этоналагаетдополнительныетребованияк ресурсамкомпьютера.

При работес операционнойсистемой Windows2000 установкаInternet Information Server нетребу­ется, так как этаоперационнаясистема поставляетсявместе с пятойверсией этогопродукта.

Взаимодействиес сетевым программнымобеспечением

Все современныеоперационныесистемы семействаWindows имеютвстроен­нуюподдержкувозможностиработы с сетью.В большинствеслучаев никакоедополнительноеобеспечениене требуется.Исключениемявляются протоколыBanyan VINES илиAppleTalk ADSP, работас которымиобеспечиваетсяпро­дуктамитретьих производителей.

Если планируетсяиспользованиеSQL Server 2000в качествекорпоративногосер­верабаз данных, ккоторолгупредполагаетсяобращениемножествапользователейсети, то воперационнойсистеме необходимоустановитьсоответствующиесетевые протоко­лы.Мастер установкиSQL Server 2000не выполняетустановкусетевых протоколов, поэтомуэта часть работыдолжна бытьвыполненапользователем.SQL Server 2000под­держиваетвсе основныепротоколыWindows 2000:NetBEUI, IPX/SPX иTCP/IP. Кроме того, возможна работапо протоколамAppleTalk ADSP, Banyan VINES инекоторымдругим редкоиспользуемымпротоколам.

Установкасетевых протоколовеще не даетвозможностиработать с SQLServer 2000.Для обеспеченияэтой возможностинеобходимоналичие программ­ногоинтерфейса, который быпозволял работатьс SQL Server 2000.Таким ин­терфейсомявляются такназываемыесетевые библиотеки(network libraries). Этибиблиотекипоставляютсяв составе SQLServer 2000 и автоматическиустанав­ливаютсяв операционнойсистеме приустановкесервера. Болееподробно архи-

тектураи конфигурированиесетевых библиотекбудут рассмотреныдалее в этойглаве вразделе «Установкасетевых библиотеки протоколов».

В качествеклиентов SQLServer 2000 могутвыступать нетолько приложе­ния, работающиепод управлениемоперационныхсистем семействаWindows, нои приложенияоперационныхсистем AppleMacintosh, OS/2, UNIX и т. д.Одна­ко внастоящее времяMicrosoft непредоставляетдрайверов ODBCпод UNIX, хотя связьс клиентамиUNIX возможна.Указанныедрайверы могутбыть раз­работанынезависимымипроизводителями.

Взаимодействиес продуктамиMicrosoft

Для взаимодействияMicrosoft Access 2000с SQL Server 2000необходимоуста­новитьMicrosoft Office 2000Service Release 1или Access2000 ServiceRelease 1. Тольков этом случаевы сможетеобращатьсяк диаграммамбазы данных, хра­нимымпроцедурам, данным о структуретаблиц и представлений, однако ника­кихвнесенныхпользователемизменений несохраняется.

При работес Microsoft VisualStudio® 6.0, вы несможете получитьдоступ кдиаграммамбазы данных, хранимым процедурам, данным о структуретаблиц ипредставленийв SQL Server 2000.Хотя установкаVisual Studio 6.0Service Pack 4и позволитвыполнятьизменения, всеже сохранитьих не удастся.

Планированиеконфигурациисервера

Если в вашейорганизациипредполагаетсяналичие несколькихсерверов базданных, взаимодействующихмежду собойи обменивающихсяданными, тоне­обходиморазработатьединую конфигурацию, которая будетреализованана всех серверахSQL Server вашегопредприятия.Существуетнесколькопараметровуста­новкисервера, которыесущественновлияют нафункционированиеSQL Server ине могут бытьизменены впроцессе работы.В SQL Server 7.0к ним отно­силисьследующие: Онабор символов(character set); ОсопоставлениеUnicode (Unicode collation); Опорядок сортировки(sort order).

Чтобыизменить любуюиз этих настроек, необходимобыло перестроитьсис­темнуюбазу данныхmasterс помощьюутилиты rebuildm.exe, котораяпозволяетизменитьпорядок сортировки, набор символови сопоставлениеUnicode. Однакопри выполненииподобногоперестроениятеряется любаяинформация, накопленнаяна сервере. Вэтом планеперестроениебазы данныхmasterможносравнить суда­лениеми повторнойустановкойсервера. Еслиже было необходимосохранитьпользовательскиебазы данныхи объекты, приходилосьсначала создаватьсцена­рии(script), описывающиесоздание всехобъектов, азатем копироватьданные, ис­пользуявозможностислужб преобразованияданных (DataTransformation Services, DTS)или утилитумассовогокопирования(bulk copy program, bcp).

В SQLServer 2000 большене нужно отдельноопределятькодовую страницу, используемуюдля символьныхданных, порядоксортировкисимвольныхдан­ных исопоставлениядля данныхUnicode. Вместоэтого вы простоуказываететребуемыеназваниесопоставленияи сортировку.

Физическоехранение символьныхстрок и операцииих сравненияв SQL Server2000 зависятот сопоставления.Сопоставлениеопределяетдвоичные об­разцы, которые представляюткаждый символ, и правила, покоторым символысортируютсяи сравниваются.При работе сSQL Server 7.0эти параметрызада­валисьпри установкесервера и былиедины для всехобъектов иданных, имею­щихсяв базах данныхэтого сервера.

В SQLServer 2000 значениесопоставления, указанное приустановкесерве­ра, рассматриваетсятолько какзначение поумолчанию, которое используетсяпри созданиивсех объектов.Разрешаетсясоздание разныхсопоставленийв од­нойи той же базеданных одногои того же сервераобъектов. Болеетого, в од­нойтаблице могутиметься столбцы, использующиеразличныесопоставления.

SQL Server 2000поддерживаетдва вида сопоставлений.

О СопоставлениеWindows (Windows Collation).Этот видсопоставленияопреде­ляетнабор правилдля храненияи сортировкисимвольныхданных, основан­ныхна правилах, определенныхдля операционнойсистемы Windows.

О СопоставлениеSQL (SQL Collation). Этотвид сопоставленияобеспечиваетсо­вместимостьс более раннимиверсиями MicrosoftSQL Server.

КаждоесопоставлениеSQL включаетв себя следующуюинформацию.

О Порядоксортировкидля данныхUnicode (nchar,nvarcharи ntext).Поря­доксортировкиопределяетпоследовательность, в которой сортируютсясим­волы, и то, как оцениваютсясимволы приоперацияхсравнения.

О Порядоксортировкидля символьныхданных, неотносящихсяк Unicode (char,varchar-иtext).

О Кодоваястраница, используемаядля сортировкисимвольныхданных, неот­носящихсяк Unicode.

Чтобы приустановкепроизвестиизменениязаданных поумолчаниюпара­метровнастройкисопоставления, используйтеокно CollationSettings (параметрысопоставления).Вариант CollationDesignator (назначениесопоставления)обеспечи­ваетнастройкупараметровсопоставленияWindows, авариант SQLCollations(сопоставлениеSQL) —настройкупараметровсопоставления, совместимыхс SQLServer 7.0, SQLServer 6.5 или болееранними версиями.


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

Выбор сопоставления

На одномиз этапов установкив окне CollationSettings (параметрысопоставле­ния)мастер установкиSQL Server 2000предлагаетвыбрать сопоставление(collation), котороебудет использоватьсяпо умолчаниюна сервере.Этот выборосуществляетсяс помощьюраскрывающегосясписка с вариантамидопустимыхсопоставлений.Например.

О ВариантLatinl_General предназначендля американизированногоанглийскогонаборасимволов (кодоваястраница 1252).

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

О ВариантArabic предназначендля всех разновидностейарабского языкадовая страница1256).

О Для Россиипо умолчаниюпредлагаетсяиспользоватьсопоставлениеWindows, называющеесяCyrillic_General, темне менее можноуказать любоедругое со­поставление.Также можновыбрать сопоставлениеSQL. Вэтом случаев рас­поряжениипользователяимеется множестворазличныхсопоставлений, каждое изкоторых имеетсвои отличительныехарактеристики.Сопоставлениядля Россиииспользуютнабор символов1251, то есть оканчиваютсяна строку foruse the 1251(Cyrillic) Character Set. Науровне серверауказанныесопоставленияотносятсяк семействусопоставленийSQL_Latinl_General. Вчастности, привыборесопоставленияWindows сименем Cyrillic_Generalна уровнесервера бу­детиспользоватьсясопоставлениеSQL_Latinl_General_Cpl_CI_AS.Это сопостав­лениеустроит большинствопользователей.В частности, при сравнениисим­воловне учитываетсярегистр.

Выбор порядкасортировки

СопоставлениеWindows определяеттолько наборсимволов, которыйбудет до­ступенпользователям.Однако собственносопоставлениене определяетправи­ла сравненияи сортировкисимвольныхданных. Поэтомуэти параметрыдолж­ныбыть сконфигурированыотдельно. Дляэтого в окнеCollation Settings (параметрысопоставления)используетсянабор флажковSort Order (порядоксортировки), с помощью которыхразрешаетсятот или инойметод сортировки.В табл. 7.5 указаноназначениефлажков.

Таблица. Типысортировки

Типсортировки______Описание________________________________

Binary Order (двоичнаясортировка)

Case-sensitive (сучетом регистра)

Accent-sensitive (сучетом диакритическихзнаков)


Двоичнаясортировкаявляется самымбыстрым методомсравненияданных и всегдаучитываетре­гистр.Однако прииспользованииэтой сортировкифлажки Case-sensitive(с учетомрегистра) иAccent-sensitive (сучетом диакритическихзнаков) будутнедоступны.

Как ужебыло сказано, выбранные приустановкесервера параме? рысопо­ставленияоказываютвлияние намногие аспектыфункционированияSQL Server2000. Например, порядок сортировкииграет большуюроль при сравне­ниипароля, введенногопользователем, с паролем, хранимымв системнойбазеданных.Если применяетсяпорядок сортировки, чувствительныйк региструсим­волов, то при вводепароля пользовательдолжен в точностисоблюдатьрегистр. Еслиже используетсянечувствительнаяк региструсортировка, то пользовательможет незаботитьсяо регистре, вкотором оннабирает пароль.

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

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

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

Выбор методаустановки

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

СистемаSQL Server 2000может бытьустановленас использованиемодного изследующихметодов установки: О Local Installation(локальнаяустановка); ОRemote Installation (удаленнаяустановка); ОUnattended Installation(автоматическаяустановка).

Рассмотримболее подробноиспользованиекаждого типаустановки.

Локальнаяустановка

При локальнойустановке всефайлы SQLServer устанавливаютсяна тот ком­пьютер, на котором онаинициирована.

Локальныйметод установкиявляется самымпростым из всехподдерживае­мых.В этом случаемастер установкипоследовательновыдает пользователюна­бор окон, в которых тотдолжен указатьпараметрыконфигурации.В процессеустановкивам будет необходимоввести своеимя, наименованиеорганизациии серийныйномер, полученныйпри покупкеSQL Server 2000.Эта информациятакже необходима, если вы обращаетесьв службу техническойподдержкиMicro­soft.На последующихэтапах необходимоввести информациюо размещениифай­ловсервера и базданных, кодовойстранице, порядкесортировки, сопоставле­нии, сетевых протоколахи библиотеках, а также сведенияоб учетныхзаписях, подкоторыми будетзапускатьсяSQL Server. Длязапуска мастераустановки SQLServer 2000 необходимозапуститьпрограммуSetupsql.exe.

По умолчаниюдля установкисервера выбираетсяпапка \ProgramFiles\Mic SQL Server, абазы данныхразмещаютсяв панке \Dataустановочнойпапки SQLServer 2000(Mssql). Впроцессе установкипрограммасобирает вседанные о пара­метрахконфигурации, вводимыепользователем, и сохраняетих в файле Setup.iss.Файл Setup.issвы можетенайти в папке\Install установочнойпапки SQLServer 2000.


Файл Setup.issвпоследствииможет оказатьсяочень полезнымдля повторнойлокальнойустанов­ки, а также длявыполненияудаленной илиавтоматическойустановки.

Кроме того, в процессеустановкиведется журнал, в которомотображаетсяинформацияо каждой фазеустановки.Журнал представляетсобой обычныйфайл с именемSqlstp.log, которыйсохраняетсяв корневойпапке операционнойсисте­мы, например впапке \WinNT.Информацияоб ошибках впроцессе установкизаписываетсяв файлы Errorlogи хранитсяв папке \l_ogустановочнойпапки SQLServer 2000.

После тогокак все файлысервера скопированыи все подготовительныеопе­рациивыполнены, программаустановкиприступаетк настройкепараметровра­ботысервера.

Удаленнаяустановка

Windows NT иWindows 2000предоставляютнам поистинепотрясающиевоз­можности, позволяя нетолько производитьудаленноеадминистрированиеком­пьютеровдомена, но иустанавливатьпрограммноеобеспечениена компьютере, находящемсяв соседнейкомнате, невставая из-зарабочего стола.

Удаленнаяустановказапускаетсятакже программойSetupsql.exe натом ком­пьютере, с которогопроизводитсяудаленнаяустановка.Однако кромеданных, не­обходимыхпри локальнойустановке, отвас потребуетсяввести еще идополни­тельнуюинформацию— это и понятно, так как в этомслучае используетсяеще и сеть: О Username(имя пользователя)— имя пользователя, учетная записькоторого

будетиспользованана удаленномкомпьютередля выполненияустановки SQL Server 2000;

О Password(пароль)— пароль пользователя;

О Domain(домен) —имя домена, ккоторому принадлежитучетная записьпользо­вателя;


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

О TargetComputer (целевойкомпьютер) —имя удаленногокомпьютера, на кото­рыйбудет производитьсяустановка SQLServer 2000;

О TargetPath (UNC) (целевойпуть в форматеUNC) —полное описаниепути в форматеUNC кпапке, в которуюпланируетсяустановитьSQL Server'.

О SetupSource Files (установочныефайлы) — полныйпуть в форматеUNC куста­новочнымфайлам SQLServer 2000 в сети.

После тогокак будут введенаинформациядля указанныхвыше параметров, последующаяработа мастераустановкивесьма напоминаетлокальнуюустанов­ку.Мастер собираетинформациюобо всех параметрахустановки, таких каксо­поставление, имена и паролиучетных записейдля запускаслужб SQLServer 2000, установочнаяпапка для самогосервера и папкадля хранениябаз данных, спи­сокустанавливаемыхкомпонентови т. д. После тогокак вся необходимаядля установкиSQL Server 2000информациявведена, она, как и при выполнениило­кальнойустановки, сохраняетсяв файле Setup.iss.Однакособственноустановкисерверапри этом мастерустановки невыполняет. Онлишь запускаетна уда­ленномкомпьютерепрограммуremsetup.exe, котораяи будет выполнятьустановку SQLServer 2000. На этомработа мастераустановкиInstallation Wizard(програм­мыsetup.sql) заканчивается.


    продолжение
--PAGE_BREAK--

Для удаленнойустановки можноиспользоватьготовый файлSetup.iss, сгенерированныйранее при выполнениилокальнойустановки. Принеобходимостив этот файлможно внестинекоторыеизме­нения.Для этого можноиспользоватьобычный текстовыйредактор.

На удаленномкомпьютерепрограммаremsetup.exe копируетфайлы, необхо­димыедля установки, в сетевую папкуAdmin$, втом числе ифайл Setup.iss, из которогосчитываетданные об установке.После этогоначинаетсясобственноустановкаSQL Server 2000.

УдаленнаяустановкапозволяетустановитьSQL Server набольшое количе­ствоудаленныхкомпьютеровс одного центральногокомпьютера.Для того что­быудаленнаяустановкапрошла успешно, мастеру установкинеобходимоиметь следующиеправа:

О на локальномкомпьютере— права на запускмастера установкии сохране­ниефайла Setup.iss;

О на удаленномкомпьютере— права доступас административнымиполномо­чиями.

Не обязательно, чтобы пользователь, запускающийпрограммуустановки, имелправа администра­торана удаленномкомпьютере.Мастер установкипозволяет явноуказать учетнуюзапись, кото­раябудет использованана удаленномкомпьютередля запускапрограммыRemsetup.exe. Крометого, подойдетлюбая учетнаязапись, в томчисле учетнаязапись пользователя, запускающегопрограммуSetupsqi.exe налокальномкомпьютере.Также можетбыть использованаодна из учет­ныхзаписей, сконфигурированныхдля запускаслужб SQLServer 2000. Единственнымтребованиемявляется наличиенеобходимыхправ доступа.

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

Автоматическаяустановка

Если вамнеобходимовыполнитьаналогичныеустановки SQLServer 2000 на несколькихкомпьютерах, вы можете реализоватьавтоматическуюустановку, котораяпозволяет невводить данныевручную, аиспользоватьспециальныйфайл, которыйсодержит всюинформациюо конфигурацииSQL Server. Кромтого, автоматическаяустановкаудобна дляповторнойустановки SQLServer 2000 стеми же параметрамиконфигурации, что и при первойустановке.

Автоматическаяустановка можетбыть выполненадвумя способами: О с использованиемMicrosoft Systems ManagementServer (SMS); О сиспользованиемфайла автоматическойустановкиSetup.iss.

ИспользованиеMicrosoft Systems ManagementServer

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

Microsoft SystemManagement Server — серверуправлениясистемой —явля­етсяключевым звеномпакета MicrosoftBackOffice, позволяясущественнооб­легчитьжизнь системныхадминистраторов.Одной из возможностейсервера SMSявляетсяего способностьвыполнятьтиповую установкупрограммногообеспе­ченияна большоечисло компьютеровсети с минимальнымучастиемпользова­теля.

Вы можетеиспользоватьMicrosoft System ManagementServer версии1.2 или вышедля автоматическойустановкиMicrosoft SQL Server 2000на множествекомпьютеровсети предприятия.

Компакт-дискс SQL Serverпоставляетсяс файлом Smssql.pdf, которыйавто­матическисоздает установочныйпакет SMS.После этогосервер можноустанав­ливатьс помощью SMSна многихкомпьютерах.Файлы .pdfпредставляютсо­бой обычныетекстовыефайлы, в которыхсодержитсяинформацияо действиях, которыедолжны бытьвыполненыMicrosoft SMS. ФайлSmssql.pdf содержитко­мандыдля запускаbat-файлов, поставляемыхна компакт-дискес дистрибути­вомSQL Server 2000.Файл smscli.batпредназначендля выполненияавтомати­ческойустановкиутилит администрированияSQL Server 2000с использованиемпакета SMS.Файл smssqins.batпредназначендля выполненияобычной установ­киутилит администрированияSQL Server 2000с использованиемпакета SMS.При необходимостипользовательможет скопироватьфайл smssql.pdfи внестив него необходимыеизменения.

Использованиефайла автоматическойустановки

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

Созданиефайла автоматотескойустановкиSetup.iss возможноодним из двухспосо­бов.Во-первых, можноиспользоватьдля этого любойтекстовыйредактор, напримерNotepad. Второйальтернативойбудет запускпрограммыSetupsql.exe сключом k=Rc.Этот ключуказываетпрограммеустановкисначала собратьвсе сведенияо конфигурации, а затемначать копированиефайлов. Когдасбор сведенийзаканчивается, появляетсядиалоговоеокно, предупреждающеео начале копированияфайлов. Еслищелкнуть накнопке Cancel(отмена), то программаустановкисохранит всевведенныеданные в пап­кеоперационнойсистемы в файлеSetup.iss. Необходимолишь добавитьсекции [SdStartCopy-О]и [SdFinish-0] вконецфайла

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

SQL Server 2000поставляетсяс пятью исполняемымиbat-файлами: О sqlcli.bat— устанавливаеттолько средствауправленияSQL Server 2000, исполь­зуетв своей работефайл автоматическойустановкиsqlcli.iss;

О sqlins.bat— выполняеттипичную установку, устанавливаялокальнуюучетную записьсистемы длязапуска служб, используетфайл sqlins.iss;

О sqlcst.bat— выполняетзаказную установкувсех компонентов, устанавливаялокальнуюучетную записьсистемы длязапуска служб, запускаетпрограммуSetupsql.exe сфайлом sqlcst.iss;

О sqlupg.bat— выполняетавтоматическоеобновлениедо SQL Server 2000на операционнойсистеме WindowsNT;

О sqlrem.bat— удаляетSQL Server 2000.

Вы такжеможете скопироватьи отредактироватьлюбой из этихфайлов по своемуусмотрению.Например, разрешитьиспользованиедоменной учетнойза­писипользователяв файле sqlins.issдля выполнениятипичной установки.

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

Создание учетныхзаписей

SQL Server 2000под управлениемоперационныхсистем WindowsNT и Windows2000 функционируеткак службаоперационнойсистемы, или, точнее, какдве службы —MSSQLServer иSQLServerAgent. Системазащиты WindowsNT и Windows2000 требует, чтобы любойдоступ к ресурсамбыл подтвержденналичиемсоответствующихправ. Хотя всеслужбы и являютсячастью одногоприложения, все же передтем как начатьработу, ониобязаны пройтипровер­ку правдоступа подобнообычным пользователям.Как известно, права и раз­решенияназначаютсяна основе учетныхзаписей. Такимобразом, некоторыеслужбы SQLServer 2000, которыеобращаютсяк ресурсамсети, обязаныиметь собственныеучетные записи, причем разныеслужбы могутиметь разныеучет­ныезаписи.

Этот раздел имеет отношениетолько к операционным системам семействаWindows NT иWindows 2000.В операционнойсистеме Windows98 не реализованавозможностьвыполненияпри-1 ложенийв виде службоперационнойсистемы. Призапуске SQLServer 2000 подуправлениемэтой jоперационнойсистемы используетсяучетная записьтекущегопользователя.Как следствие,SQL'Server 2000будет иметьте же правадоступа, чтои пользователь, запустившийэто приложение. '

Различаетсятри вида учетныхзаписей, подкоторыми можетстартоватьSQL ;

Server.

О LocalSystem (локальнаясистема). Учетнаязапись локальнойсистемы созда­етсяавтоматическипри установкеоперационнойсистемы. Подэтой учетнойзаписьюслужба SQLServer запускаетсяс правамиоперационнойсистемы. Вседействия поуправлениюэтой учетнойзаписью, в томчисле и измене­нияпароля, выполняетсама операционнаясистема. Дажеадминистраторне можетуправлять ею.Данная учетнаязапись имеетправа администратораи обычнопо умолчаниюей предоставляетсядоступ ко всемфайлам. Однакоесли вырешили длязапуска SQLServer 2000 использоватьлокальнуюучет­нуюзапись, убедитесьв том, что онаимеет полныйдоступ ко всемнеобхо­димымфайлам и папкамSQL Server 2000, и если потребуется, то предоставьтесами этойучетной записидоступ к темили иным ресурсам.

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

О Userfor Domain (пользовательдомена). Принципиальнымотличием учетныхзаписейпользователядомена являетсявозможностьработы в сети.Учетные записиэтого типахранятсяцентрализованнона контроллередомена (domaincontroller) Windows NTили Windows2000 и доступныс любого компьюте­ра, входящего вдомен.

Учетныезаписи локальнойсистемы и локальногопользователяне поддер­живаютсетевые операции.Следовательно, когда серверSQL Server 2000рабо­тает подлокальнойучетной записью, то он будетиметь ограниченныевозмож­ности.В частности, нельзя будетвыполнятьследующиедействия: Овызов удаленныхпроцедур (RemoteProcedure Calls, RPC); О репликация; О резервноекопированиеданных на сетевойдиск;

О использованиеразнородныхисточниковданных, требующихсетевого соеди­нения;

О поддержкаэлектроннойпочты.

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

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

ОсновнымкомпонентомSQL Server 2000является службаMSSQLServer. Всеостальныекомпоненты(SQLServerAgent, MicrosoftSearch и MSDTC)устанав­ливаютсоединениес MSSQLServer. Приэтом учетныезаписи, подкоторыми стартуютслужбы SQLServerAgentи MSDTC, должныиметь соответствующиеправа насамом сервере.Для этого необходимоназначитьсоответствующимучет­нымзаписям встроеннуюроль сервера(fixed server role) Sysadmin.

СлужбаMicrosoft Search можетстартоватьтолько подлокальнойучетной записьюсистемы. Дляустановлениясоединениясо службойMSSQLServer онаиспользуетимя и парольучетнбй записи, под которойстартует службаMSSQLServer.

Как ужеговорилосьвыше, каждаяслужба SQLServer 2000 можетстартоватьпод собственнойучетной записью.Но если нетособых на топричин, то длятого чтобыизбежать проблемс правами доступа, рекомендуетсязапускать всеслуж­быпод одной учетнойзаписью. Такжеможно предоставитьучетным записямслужб праваадминистраторалокальнойоперационнойсистемы, включивих в группуAdministrators. Этодаст возможностьSQL Server 2000перезапускатьсер­вер ипоможет избежатьнекоторыхпроблем савтоматическимвыполнениемза­даний(jobs). Однакотакой подходоткрываетпотенциальнуювозможностьвзлома системыс использованиемSQL Server 2000.Если вы хотитемаксимальнообез­опаситьсистему, толучше потратитьнекоторое времяна конфигурированиеправ доступа, не предоставляяучетной записиадминистративныхправ.

Независимоот того, подкакой учетнойзаписью предполагаетсязапуск службSQL Server 2000, необходимоубедиться втом, что этаучетная записьимеет сле­дующиеправа:

О доступи изменениефайлов в папке\Program Files\Microsoft SQLServer\Mssql; О доступи изменениефайлов базданных — mdf,ndf и Idf;

О чтение изапись следующихключей реестра:

* HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer; » HKEY_LOCAL_MACHINE\System\CurrentControlset \Services\MSSQLServer… Если свойствазапуска службSQL Server 2000сконфигурированынекорректно, то впоследствииих можно изменитьс помощью утилитыServices (службы)из окнаControl Panel (панельуправления)или с помощьюинтерфейсаEnterprise Manager


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

ОсновнымкомпонентомSQL Server 2000является службаMSSQLServer. Всеостальныекомпоненты(SQLServerAgent, MicrosoftSearch и MSDTC)устанав­ливаютсоединениес MSSQLServer. Приэтом учетныезаписи, подкоторыми стартуютслужбы SQLServerAgentи MSDTC, должныиметь соответствующиеправа насамом сервере.Для этого необходимоназначитьсоответствующимучет­нымзаписям встроеннуюроль сервера(fixed server role) Sysadmin.


СлужбаMicrosoft Search можетстартоватьтолько подлокальнойучетной записьюсистемы. Дляустановлениясоединениясо службойMSSQLServer онаиспользуетимя и парольучетнбй записи, под которойстартует службаMSSQLServer.

Как ужеговорилосьвыше, каждаяслужба SQLServer 2000 можетстартоватьпод собственнойучетной записью.Но если нетособых на топричин, то длятого чтобыизбежать проблемс правами доступа, рекомендуетсязапускать всеслуж­быпод одной учетнойзаписью. Такжеможно предоставитьучетным записямслужб праваадминистраторалокальнойоперационнойсистемы, включивих в группуAdministrators. Этодаст возможностьSQL Server 2000перезапускатьсер­вер ипоможет избежатьнекоторыхпроблем савтоматическимвыполнениемза­данийGobs). Однакотакой подходоткрываетпотенциальнуювозможностьвзлома системыс использованиемSQL Server 2000.Если вы хотитемаксимальнообез­опаситьсистему, толучше потратитьнекоторое времяна конфигурированиеправ доступа, не предоставляяучетной записиадминистративныхправ.

Независимоот того, подкакой учетнойзаписью предполагаетсязапуск службSQL Server 2000, необходимоубедиться втом, что этаучетная записьимеет сле­дующиеправа:

О доступи изменениефайлов в папке\Program Files\Microsoft SQLServer\Mssql; О доступи изменениефайлов базданных — mdf,ndf и Idf; О чтениеи запись следующихключей реестра:

« HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer;

» HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\MSSQLServer.

Если свойствазапуска службSQL Server 2000сконфигурированынекорректно, то впоследствииих можно изменитьс помощью утилитыServices (службы)из окнаControl Panel (панельуправления)или с помощьюинтерфейсаEnterprise Manager.


Созданиеучетных записейв Windows 2000

Созданиеучетных записейв Windows 2000отличаетсяот созданияучетных записейв Windows NT 4.0.Для управленияучетными записямипользовате­лейдомена Windows2000 используетсяоснастка (втерминологииWindows NT -утилита)Active Directory Users andComputers. Когдаже выполняетсяконфи­гурированиеучетных записейлокальныхпользователей, то используетсяос­насткаComputer Management (рис.7.4). В этом разделебудет рассмотреносо­зданиеучетных записейдля локальныхпользователейWindows 2000.Созданиепользователейдомена отличаетсялишь тем, чтотребуется инаяутилита и вводнесколькобольшего количестваинформациио пользователе.Однако мы небудем рассматриватьконфигурированиедополнительныхсведений опользо­вателе, таких как адресего электроннойпочты, профиль, возможностьисполь­зованияRAS ит. д.

При работес оснасткойComputer Management информацияо локальныхпользователяххранится впапке SystemTools\Local Users and Groups\Users. Привы­боре влевой частиокна этой папкив правой частибудет отображенсписок всехпользователей, созданных навыбранном дляадминистрированиякомпьютере.Для созданиянового пользователянеобходимов контекстномменю папкиUsers вы­братьпункт NewUser (новыйпользователь).В ответ откроетсяодноименноеди­алоговоеокно (рис. 7.5), спомощью которогонеобходимоуказать основныесве­денияо создаваемойучетной записи.


    продолжение
--PAGE_BREAK--

Если компьютер, на которыйпредполагаетсяустановитьSQL Server 2000, является контроллеромдомена Windows2000, то использованиелокальныхучетных записейпользователейна этом ком­пьютереневозможно, поэтому соответствующиепункты оснасткиComputer Management будутнедоступны.


Рассмотримназначениеэлементовуправления, имеющихся вокне NewUser

(новый пользователь).

О Username (имя пользователя).Имя учетнойзаписи, котороебудет использо­ватьсяпри регистрациипользователяв домене. Этоимя может бытьпроиз­вольными не всегдаотражать имясамого пользователя.

О Fullname (полноеимя). В этом полеуказываетсяполное имявладельцаучет­нойзаписи.

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

О Password(пароль).В этом полеуказываетсяпароль, подкоторым пользовате­любудет разрешатьсявход в домен.

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

О Usermust change password at next logon (пользовательдолжен сменитьпароль присле­дующемвходе в систему).Установив этотфлажок, администратортем самым по­требуетот пользователясмены пароляпри следующемвходе в домен.

О Usercannot change password (пользовательне должен менятьпароль). Еслиадминистраторустановит дляпользователяэтот флажок, то пользовательне сможетсамостоятельносменить парольи будет вынужденобратитьсяк администратору.Такая ситуациянеобходима, если кромеэтого пользовате­ляпод тем же самымпаролем работаетеще кто-либо.В этом случаеадми­нистраторсможет известитьвторого пользователяо том, что парольбыл из­менен.

О Passwordnever expires (срокдействия пароляне истекает).Установка этогофлажкапозволяетизбежать частойсмены пароляпользователем.

О Accountdisabled (блокированиеучетной записи).При установкеэтого флажкаучетнаязапись блокируетсяи не допускаетрегистрациив домене нихозяи­на учетнойзаписи, ни кого-либоеще. Эта возможностьчасто используется, если предполагаетсядлительноеотсутствиепользователяна рабочемместе. Такойподход поможетизбежатьнесанкционированногодоступа к ресурсам.Чтобы использоватьучетные записипользователейWindows 2000для запускаслужб Server2000, как и приконфигурированииучетных записейWindows NT 4.0, им необходимопредоставитьдополнительныеправа. В Windows2000 управле­ниеправами осуществляетсяотдельно отуправленияучетными записями.Для управленияправами в пределахлокальногокомпьютераиспользуетсяоснастка LocalSecurity Policy (рис.7.6).

Для предоставленияучетной записинеобходимыхправ выполнитеописан­ныениже действия.

1. В оснасткеLocal Security Policy выберитепапку LocalPolicies.

2. В папкеLocal Policies выберитевложенную папкуUser Right Assignment. Впра­войчасти окнабудет выведенсписок прав, которые могутбыть присвоеныпользователям.

3. Для присвоенияпользователютого или иногоправа дваждыщелкните нана­званииправа и в открывшемсядиалоговомокне LocalSecurity Policy Settings (па­раметрылокальнойполитикибезопасности)щелкните накнопе Add(доба­вить), после чеговыберите имянужного пользователя.

Как и приработе с WindowsNT, для тогочтобы учетнаязапись Windows2000 моглаиспользоватьсядля запускаслужб SQLServer 2000, ей необходимопри­своитьследующиеправа:

О Actas a part of the operating system (действоватькак частьоперационнойсистемы); ОLog on as a service(регистрироватьсяв качествеслужбы операционнойсистемы);

О Increasequotas (правоизменять квотыпроцессов);

О Replacea process level token (правозаменять уровеньмаркера процесса).

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

Выбор типаустановки

При установкеSQL Server 2000в редакцияхEnterprise, Standard, Personaledition мастерустановкипредложит вамвыбрать одиниз трех типовустановки. ООбычный типустановки(Typical). Устанавливаютсязаданные поумолчаниюкомпоненты.Такой тип установкирекомендуетсядля большинствапользо­вателей.

О Минимальныйтип установки(Minimum). Устанавливаетсяминимальнаякон­фигурация, необходимаядля работы SQLServer. Этот типрекомендуетсядля пользователей, имеющих компьютерс небольшимдоступнымдисковымпро­странством.

О Выборочныйтип установки(Custom). Этоттип установкепозволяетвыбрать необходимыеименно для васкомпоненты.Производитьвыборочнуюустановкурекомендуетсяопытным пользователям.


Если вызапускаетепрограммуустановки SQLServer для редакций, которые неподдерживаютсявашей операционнойсистемой, например, если устанавливаетсяSQL Server Standard Editionпод MicrosoftWindows 98, программане будет предлагатьвам выбратьтип установки.Вместо этогосразу предлагаетсявыбрать инструментыадминистрированияв диалоговомокне SelectComponents (выборкомпонентов).

Установкасетевых библиотеки протоколов

Как ужебыло сказаноранее в этойглаве, дляобеспечениясетевоговзаимодей­ствиясерверов SQLServer и их клиентовтребуются такназываемыесетевые библиотеки(network library), использующиеопределенныесетевые протоколыдля передачиданных. Этибиблиотекиреализованыв виде dll-файлов(Dynamic-linklibrary, DLL), подключаемыхк операционнойсистеме. Самапо себе сетеваябиблиотекане обеспечиваетвозможностикоммуникации, для этого необходимоустановитьсоответствующийсетевой протокол.Библиотекапредставляетсо­бой программныйинтерфейс, реализующийработу с SQLServer 2000. Сетевыебиблиотекиустанавливаютсякак на сервере, так и на клиенте.

SQL Server 2000, как: и SQLServer 7.0, можетиспользоватьбольшинствосе­тевыхпротоколовоперационнойсистемы. Операционныесистемы семействаWindows имеютвстроеннуюподдержку сети, то есть в составэтих операцион­ныхсистем входитнабор стандартныхпротоколови служб, с помощьюкоторых можновыполнятьбазовые сетевыеоперации работыс файлами ипринтерами.Управлениесетевыми протоколамимогут различатьсяпри работе сразличны­миоперационнымисистемами.Конфигурированиеже сетевыхбиблиотекпрак­тическине зависит отиспользуемойоперационнойсистемы, таккак эта опера­цияосуществляетсяна уровне SQLServer 2000.


Установкасетевых протоколовв Windows 2000

В операционнойсистеме Windows2000 установкаи конфигурированиесетевых протоколовнесколько инаяпо сравнениюс Windows NT 4.0.Для управлениянастройкамилокальной сетииспользуетсяокно LocalArea Connection Properties (свойствалокальногосоединения).

1. В главномменю операционнойсистемы выберитепункт Start> Settings * Network andDial-Up Connections (пуск> настройка> сетевые соединения).

2. В открывшемсяокне (рис. 7.11) дваждыщелкните назначке LocalArea Connection (локальноесоединение), после чегооткроется окноLocal Area ConnectionStatus (состояниелокальногосоединения), показанноена рис. 7.12.

Теперь остается только щелкнуть на кнопке Properties (свойства), что и приведет к открытию окна Local Area Connection Properties (свойства локального соединения).

В окне LocalArea Connection Properties (свойствалокальногосоединения)отображает­сяназвание сетевойкарты и нижеприведен списоксетевых протоколови служб, уста­новленныхдля указаннойсетевой карты.Для добавленияили удаления


протоколаиспользуйтекнопки Install(установить)или Uninstall(удалить).Для добавле­ниянового протоколанеобходимовыполнитьследующие шаги.

1. Щелкнитена кнопке Install(установить).После этогооткроетсядиалоговоеокно SelectNetwork Component Type (выбортипа сетевогокомпонента), которое предназна­ченодля выбора тинаустанавливаемогосетевого компонента

2. Для установкинового протоколавыделите пунктProtocol (протокол)и щелк­нитена кнопке Add(добавить).В итоге откроетсядиалоговоеокно SelectNetwork Protocol (выборсетевого протокола), с помощью которого, собственно, и выбираетсяустанавливаемыйпротокол (рис.7.14). р сетевогопротокола)содержитсясписок прото­колов, поставляемыхвместе с операционнойсистемой Windows2000 и еще неуста­новленныхв системе. Еслипредполагаетсяустановитьпротокол стороннегопроизво­дителя, то необходимоявно указатьпапку, в которойсодержатсясоответствующиефайлы. Дляэтого нужновоспользоватьсякнопкой HaveDisk (установитьс диска).

После тогокак нужныйпротокол выбран, остается толькощелкнуть накнопке ОК.Для некоторыхпротоколов(например, NetBEUI)на этомих установказа­канчивается.Однако приработе со сложнымипротоколами(например, TCP/IP)может потребоватьсяконфигурированиесвойств устанавливаемогопротокола.


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

ОдновременноSQL Server 2000может работатьс несколькимисетевымибиб­лиотеками.В табл. 7.7 приведенсписок и назначениесетевых библиотек, постав­ляемыхв составе SQLServer 2000.

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

AppleTalk ADSP Позволяетклиентам AppleMacintosh подключатьсяк серверам SQLServer 2000 по протоколуAppleTalk взаменTCP/IP Sockets. Вамне обязательноконфигурироватьзоны AppleMacintosh, так какиспользуетсятекущая зона.Библиотекане поддерживаетсяна операционныхсистемах Windows95/98

Multiprotocol Работаетчерез вызовыудаленныхпроцедур RPCс использованием

большинствамеханизмовIPC Windows NT: TCP/IPSockets, Named Pipes, NWLinkIPX/SPX и т. д. Ненуждается вконфигурировании.Лри работе подуправлениемоперационнойсистемы WindowsNT позволяетшифроватьданные припередаче посети, а такжевыполнятьаутентификациюWindows NT поверхлюбого протокола.Не поддерживаетсяпри установкеSQL Server 2000на Windows 98

Named Pipes ПозволяетSQL Server 2000использоватьименованныеканалы. Может
(именованные работать поверхосновных протоколовWindows. Следуетучитывать, что
каналы) Windows98 не поддерживаетсерверную частьименованныхканалов —
доступнатолько их клиентскаячасть. Используетсяв Windows NT и
Windows2000 по умолчанию.По умолчаниюдля SQLServer устанавливается
канал\\.\pipe\sql\query. Еслина одном сервереустановленонесколько
копийSQL Server, тодля обращенияк конкретнойкопии требуетсяканал
\\.\pipe\MSSQL$instancename\sql\query

NWLink IPX/SPX Позволяетподключатьсяк SQL Server 2000клиентам NovellNetWare
Shared Memory Спомощью библиотекиShared Memory можноимитироватьсистему
(разделяемая клиент-серверна локальномкомпьютере, и потому еерекомендуется
память) использоватьна компьютерах, не имеющихподдержки сети.Данная
библиотекане являетсяв полном смыслесетевой, хотяи имеет теже
интерфейсы, что и другиебиблиотеки

TCP/IP Sockets Работаетповерх механизмаIPC черезсокеты протоколаTCP/IP. Сокеты (сокетыTCP/IP) TCP/IP используютсяпо умолчаниюна всех операционныхсистемах, в томчисле и на Windows98. При установкеэтой библиотекинеобходимоуказать порт, по которомубудет осуществлятьсяобмен данными.Для SQLServer 2000 портомпо умолчаниюявляется порт1433. Возможна работачерез прокси-серверBanyan VINES Спомощью этойбиблиотекивозможна работаклиентов, использующихпротоколBanyan VINES IP. Дляэтих клиентовпо протоколуBanyan VINES Sequenced PacketProtocol, работающемуповерх протоколаBanyan VINES IP,_________организуетсясоединениечерез механизмыIPC____________

В процессеустановки SQLServer 2000 необходимовыбрать требуемыебиб­лиотеки.Если какая-тонужная библиотекане была установлена, то ее можноустановитьпозже, воспользовавшисьутилитой сетевогоконфигурированиясер­вераSQL Server Network Utility(рис. 7.15). Этаутилита автоматическиустанав­ливаетсявместе с SQLServer 2000.


Для запускаэтой утилитыSQL Server Network Utilityможновоспользоватьсялибо главнымменю операционнойсистемы, выбравпункт Start> Programs > Microsoft SQL Server >Server Network Utility (пуск> программы> Microsoft SQL Server >Server NetworkUtility), либозапустив файлsvrnetcn.exe, которыйнаходится впапке Tools\Binустановочнойпапки SQLServer 2000. Послеэтого откроетсясобственноокно утилиты, приведенноена рисунке.

Как видно, окно утилитыимеет две вкладки— General (общие)и Network Libraries(сетевыебиблиотеки).В свою очередь, на вкладкеGeneral (общие)имеется дваспис­ка —Disabled protocols (доступныепротоколы) иEnabled protocols(установленныепро­токолы).В первом спискеперечисленыбиблиотеки, доступные дляустановки, ноне используемыев работе сервера.Второй же списоксодержит переченьбиблио­тек, которые используютсяв текущей работеSQL Server 2000.Для измененияпа­раметровлюбой из нихнеобходимовыделить имябиблиотекии щелкнуть накнопке Properties(свойства), после чегооткроетсядиалоговоеокно свойстввыбраннойсе­тевойбиблиотеки.На рис. 7.16 приведеноокно свойствбиблиотекиMultiprotocol.

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


Установка иконфигурированиеклиентов

Как ужебыло сказано, чтобы клиентимел возможностьподключатьсяк SQL Server2000, на немдолжен бытьустановленпо крайней мереодин сетевойпро­токоли сетевая библиотека, соответствующаясетевой библиотекесервера, В противномслучае клиентне сможет установитьсоединениес SQL Server 2000.В составе всехоперационныхсистем семействаWindows имеетсянабор общихсетевыхпротоколов.Однако сетевыебиблиотекидолжны бытьустановленыот­дельно.Для их этогоможно воспользоватьсямастером установкиSQL Server 2000, выбрав режимустановкиClient Connective Only (толькодля соединенияклиента). Вэтом случаена компьютербудет установленытолько компоненты, необходи­мыедля соединенияклиентов с SQLServer 2000.

Если наклиенте используетсянесколькобиблиотек, тосоединениес серверомможет бытьустановленос помощью любойиз них. Однакопосле того каксоединениеустановлено, работа с серверомведется посредствомтолько однойбиблиотеки, выбор которойпроисходитследующимобразом: клиентпо оче­редиперебираетбиблиотеки, перечисленныев списке EnabledProtocols (установленныепротоколы)вкладки General(общие)утилиты SQLServer Network Utility, начинаяс самой верхней.Если на сервереимеется аналогичнаябиблиотекаи параметрыконфигурациисервера и клиентасовпадают, топеребор на этомостанавливаетсяи для соединениявыбираетсяэта библиотека.Получается, что библиотека, находящая­сявверху списка, имеет большешансов дляустановкисоединения.Поэтому еслижелательно, чтобы клиентиспользовалконкретнуюбиблиотеку, ее следуетпоместитьвверху списка.

К компонентам, необходимымдля соединенияклиентов с SQLServer 2000, относятсясетевые библиотекии утилита ClientNetwork Utility (рис.7.18), с по­мощьюкоторой выполняетсяконфигурированиесетевых библиотексо стороныклиента. Запуститьутилиту можноиз главногоменю операционнойсистемы, выбравпункт Start> Programs > Microsoft SQL Server >Client Network Utility(пуск >программы> Microsoft SQL Server >Client Network Utility) либозапустив файлcliconfg.exe изпапки SYSTEMоперационнойсистемы Windows98 или SYSTEM32для WindowsNT и Windows2000.

Как видноиз рисунка, окно утилитыClient Network Utility имеетчетыре вклад­ки.Первая их нихимеет имя General(общие) ипредназначенадля управлениянабо­ром библиотек, используемыхдля установлениясоединенияс сервером.НазначениесписковDisabled protocols (доступныепротоколы) иEnabled protocols(установленныепротоколы)этой вкладкиточно такоеже, как и длявкладки General(общие)утили­ты ServerNetwork Libraries. В нижнейчасти вкладкиимеется двафлажка.


    продолжение
--PAGE_BREAK--

О Enableprotocol encryption (включитьшифрованиепротокола) —установка этго флажкаобеспечиваетшифрованиеданных, передаваемыхпо сети. Однакошифрованиебудет использоватьсятолько в томслучае, еслионо разрешенокак на клиенте, так и на сервере.Установкафлажка Enableprotocol encryption (включитьшифрованиепротокола)только на клиентебез разрешенияшиф­рованиясо сторонысервера необеспечиваетшифрованияданных.

О Enableshared memory protocol (включитьпротокол разделенияпамяти) — уста­новкаэтого флажкаразрешаетколлективноеиспользованиепамяти. Подоб­ныйподход используется, когда сервери клиент находятсяна одном компью­тере.Обмен даннымичерез оперативнуюпамять, а несетевые протоколы, позволяетповысить скоростьобмена.

Возможнаситуация, когдаклиент будетвзаимодействоватьс несколькимисерверами, использующимиодну и ту жесетевую библиотеку, но с разнымипараметрами.Так как длякаждой библиотекиможно указатьтолько одинва­риантпараметров, то на клиентенужно будеткаждый разизменять парамет­рыконфигурациив соответствиис настройкамисервера. В этомслучае удоб­нееиспользоватьтак называемыепсевдонимысерверов (serveralias). Псевдонимимеет определенноимя и представляетсобой наборпараметров, описывающихспособподключенияклиента к серверу.Имя псевдонимасервера исобствен­ноеимя серверане обязательнодолжны совпадать.Более того, каждый серверможет иметьболее одногопсевдонима, каждый из которыхможет содержатьразличныеварианты конфигурациисетевых библиотек.Конфигурированиепсевдонимовосуществляетсяс помощью вкладкиAlias (псевдонимы), показан­нойна рис. 7.19.

Конфигурированиенового псевдонимаосуществляетсяс помощью окнаAdd NetworkLibrary Configuration (добавлениеконфигурациисетевой библиотеки).Это окно, показанноена рис. 7.20, можнооткрыть с помощьюкнопки Add(добавить).В этом окнев поле Serveralias (псевдонимсервера) необходимоуказать имяпсев­донима, через котороебудет устанавливатьсясоединениес сервером.Клиент дол­женбудет вводитьне имя самогосервера, асоответствующийпсевдоним. Длякаждогопсевдонимадопускаетсяиспользованиелишь однойсетевой библиотеки, выбор которойосуществляетсяс помощью группыпереключателейNetwork libraries (сетевыебиблиотеки).В области Connectionparameters (параметрысоединения)настраиваютсяпараметрывыбраннойбиблиотеки.Конкретныйнабор параметровзависитот того, какаябиблиотекавыбрана. Послезадания всехнеобходимыхпа­раметровостается толькощелкнуть накнопке ОК, послечего псевдонимбудет добавленв список вкладкиAlias (псевдонимы).

Клиентможет обращатьсяк серверу, используятехнологииODBC, OLE DB, SQL-DMO (SQLDistributed Management Objects) иDB-Library, работающиепо­верхсетевых библиотек.Третья вкладкаутилиты ClientNetwork Utility назы­ваетсяDB-Library Options (параметрыDB-Library) исодержит информациюоб уста­новленнойна клиентеверсии DB-Library(рис. 7.21).

В группеDB-Library information(информацияDB-Library) указываютсяоснов­ныесведения обиблиотеке.В частности, выводится имяи путь к соответствую­щемуdll-файлу, а также номерверсии, датасоздания иразмер файла.В нижней частиокна имеетсядва флажка, используемыедля управленияпараметрамиустанавливаемогос помощью DB-Libraryсоединения.


«О AutomaticANSI to OEM conversion (автоматическоепреобразованиеиз OEM вANSI) —установка этогофлажка обеспечиваетпри передачеданных от кли-

'' ентак серверуавтоматическоепреобразованиетекстовыхданных из форма-таOEM вформат ANSI, и наоборот— преобразованиеиз ANSI вOEM припередачеот сервера кклиенту.


О Useinternational settings (использоватьнациональныеустановки) —при новкеэтого флажкабиблиотекаDB-Library будетиспользоватьнациональныеустановки(формат даты, времени, валютыи т. д.) локальнойсистемы. Еслиже этотфлажок снят, будут использоватьсязначения поумолчанию, скон­фигурированныев самой библиотеке.

ФлажокAutomatic ANSI to OEMconversion (автоматическоепреобразованиеиз OEM вANSI) уста­новленпо умолчаниюна всех клиентах, тогда как флажокUse international settings(использоватьнациональныеустановки)установленпо умолчаниютолько на клиентах, работающихпод управ­лением32-разрядныхоперационныхсистем.

По умолчаниюкак клиентыWindows NT 4.0,Windows 2000, так и клиентыWindows 98используютдля подключенияк серверу именованныеканалы. На­помним, что Windows98 не поддерживаетсерверную частьименованныхка­налов.

Непосредственноперед установкойSQL Server необходимозакрыть всеприложенияи остановитьвсе службы, использующиеODBC, такие, например, какInternet Information Service.


Запуск, остановкаи приостановкаслужб

Преждечем вы сможетезарегистрироватьсяв SQLServer иприступитьк выполне­ниюкаких-либодействий, сервернеобходимозапустить.Точнее говоря, запуститьслужбуMSSQLServer.Дляэтого нужнознать, какимобразом можноэто сделать.Толькопосле того какбудет произведензапуск SQLServer ипроверены вашиправадоступа, высможете выполнятькакие-либодействия всоответствиис ваши­миправами, напримерадминистрированиесервера иливыполнениезапросов.


Напомним, что запускслужбы SQLServerAgentнеобходимтолько в томслучае, еслитребуетсяавтоматизироватьадминистрированиеи управлениеSQLServer 2000.

В этойглаве будутподробно рассмотреныразличныеварианты запускаслужб SQLServer 2000, а также их остановкаи приостановка.

Мы ужене раз говорили, что основнойслужбой SQLServer 2000является службаMSSQLServer.Всеосновные операциис объектамибаз данных(выпол­нениезапросов, хранимыхпроцедур и т.д.) реализуютсяименно благодаряэтой службе.Другие службыSQLServer 2000являютсявторостепенными, и их ра­ботастроится нафундаменте, обеспечиваемомслужбой MSSQLServer.Вприн­ципе, службы MSSearchи MSDTC могутработать инезависимоот SQLServer 2000, так как онииспользуютсяв работе и другихпродуктов. Темне менееслужба SQLServerAgentнеможет работатьбез службыMSSQLServer.Вотпочему этуслужбу необходимозапускать послезапуска службыMSSQLServer.

Напомнимфункции дополнительныхслужб SQLServer 2000: О службаSQLServerAgentотвечаетза автоматическоеисполнениезаданий и

извещениеоператоровоб ошибках вработе сервера;

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

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

с сервером, подобно обычнымклиентам. Каждаятакая службасамостоятельно

подключаетсяк MSSQLServer, используяопределенныеучетные записис соот­ветствующимиправами доступа.Итак, чтобыначать работус SQLServer 2000, достаточнозапуститьслужбу MSSQLServer.Послеэтого пользователимогут устанавливатьсоединенияс сервером ивыполнять любыедействия.

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

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

Еслина компьютерес SQLServer неустановленасетевая поддержка, вы все же сможетевыполнятьзапуск, остановкуи приостановкуSQLServer. Действияприэтом ничем неотличаютсяот операцийс сетью. Приустановкесоединенияс локальнымсервером, которыйне поддерживаетсеть, используютсяименован­ныеканалы. Именованныеканалы непосредственнообращаютсяк SQLServer, минуясетевые компоненты.Как в случаеработы с сетью, так и без нее, по умолчаниюустанавливаетсясоединениепосредствомименованныхканалов. Йриэтомиспользуетсястандартныйканал \\.\pipe\sql\query, еслиявно не указанкакой-либодругой.

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

Автоматическийстарт

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

На одномиз этапов установкипользовательможет разрешитьавтоматичес­кийзапуск службSQLServer 2000.Если этого небыло сделано, впоследствииавтоматическийзапуск можноразрешить однимиз следующихметодов. ОSQLServer Enterprise Manager. Чтобыустановитьавтоматическийстарт службSQLServer 2000средствамиEnterpriseManager, необходимовыбрать сервери открытьокно его свойств, выбрав в контекстномменю пунктProperties(свой­ства).В ответ откроетсяокно SQLServer Properties (свойстваSQLServer), по­казанноена рис. 10.1. В нижнейчасти вкладкиGeneral(общие)имеется на-

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

О Средстваутилиты Services.Третийспособ заставитьSQL Server запускать­сяавтоматическисводится киспользованиювстроенныхв операционнуюси­стемусредств управленияслужбами. Такимсредствомявляется утилитаServices (службы)в окне ControlPanel (панельуправления)операционнойси­стемы.В окне утилитыотображаетсясписок всехслужб, имеющихсяв опе­рационнойсистеме. Длякаждой службыотображаетсяее текущеесостояние ипараметрызапуска (рис.10.2). Запуск службыидентифицируетсяметкой Started(запущена)в поле Status(состояние).В поле StartupType (тип запус­ка)возможны триварианта метки:Automatic (автоматический),Manual (руч­ной)и Disabled (отключена), которые соответственноозначаютавтоматичес­кийзапуск, ручнойзапуск и отключениеслужбы. Дляавтоматическогозапуска службSQL Server 2000дважды щелкнитена имени нужнойслужбы. В ответоткроетсяокно свойствслужбы (рис.10.3). Выбор методазапуска службыкон­фигурируетсяс помощьюраскрывающегосясписка StartupType (тип запус­ка), в котором необходимовыбрать пунктAutomatic (автоматический).

О Средстваутилиты SQLServer Service Manager. УтилитаSQL Server ServiceManager
позволяетзапускать, останавливатьи приостанавливатьслужбы SQLServer 2000
(рис.10.4). Кроме того, с ее помощьюможно установитьрежим автоматического
запускадля службMSSQLServer, SQLServerAgent иMSDTC. Дляэтого необхо­
димозапуститьService Manager, выбратьнужный сервер, указать службуи уста-;
новитьфлажок Auto-startservice when OS starts (автоматическистарт призапуске
операционнойсистемы). Повторите.эту операциюна всех серверахсети для каж­
дойслужбы, которуюнеобходимозапускать вавтоматическомрежиме.

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

Ручной запускSQL Server

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

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

О ЗапускSQLServer 2000из окна ControlPanel (панельуправления)сводится киспользованиюутилиты Services(службы).Аналогичнопроцедуреустановкиавтозапускадля этого необходимовыбрать нужнуюслужбу, открытьокно свойствслужбы (см. рис.10.3) и щелкнутьв нем на кнопкеStart(пуск).Если вполе StartupType (типзапуска) указанрежим Disabled(отключена), то сразу запуститьслужбу не удастся.Предварительнонеобходимоизменить режимеезапуска наManual(ручной)или Automatic(автоматический)и только послеэтоговыполнятьзапуск службы.


ПосколькуSQLServerAgentявляетсязависимойслужбой, сначаланеобходимозапускатьслужбу MSSQLServerи лишьзатем SQLServerAgent.

О Второйспособ ручногозапуска SQLServer предполагаетиспользованиеSQLServerEnterprise Manager. Дляэтого щелкнитеправой кнопкоймыши на именинужногосервера. Воткрывшемсяконтекстномменю можновыбрать коман­ды, разрешенныедля серверав данный момент(рис. 10.5). Такимспособом можнозапускать(команда Start), останавливать(команда Stop)иприостанав­ливать(команда Pause)каклокальные, таки удаленныесерверы. Заметим, однако, что этот методпозволяетзапускатьтолько службуMSSQLServer.Значокслужбы SQLServerAgentрасположенв папке Managementсервера.Вызвавего контекстноеменю, вы можетеуправлятьработой этойслужбы. Дополнительныеслужбы, такиекак MSDTCиSQLMail, располагаютсяв папке SupportServices. Управлениеих работойосуществляетсяаналогично.

О Наиболеепростой способручного запусказаключаетсяв использованииад­министративнойутилиты SQLServer Service Manager (см.рис. 10.4), специ­альнопредназначеннойдля запуска, остановки иприостановкислужб SQLServer. Вокне утилитывам предлагаетсявыбрать сервери службу, с кото­рымивы будете работать.Значки отображаютдействия, доступныев настоя­щиймомент длявыбраннойслужбы.

О Следующийспособ запускаSQLServer предполагаетиспользованиеутили­тыкоманднойстроки net start.Вкачестве параметранеобходимоуказать имяслужбы, которуюнеобходимозапустить, например: netstartmssqlservernetstart sqlserver-agent

Длязапуска службименованнойкопии необходимодобавить ееимя и знак доллараперед ним. Например, для запускаслужбы MSSQLServerкопииTRELONиспользуетсяследующаякоманда: net start MSSQLSTRELON

Длязапуска службыSQLAgentтребуетсяследующаякоманда: net start SQLAgentSTRELON


Выполнениекоманды netstart безимени службыприведет квыводу списказапущенныхв операци­оннойсистеме служб.

О Длязапуска SQLServer можнотакже использоватькоманду sqlservr.В этомслучаеSQLServer 2000запускаетсяне как служба, а как отдельноеприло­жение.Этоозначает, чтовсе средстваадминистрирования(ServiceManager, EnterpriseManager, Services впанели управления)будут показывать, что серверостановлен.Использованиекоманды netstopmssqlserverдляостановки SQLServer вэтом случаевыдаст сообщениеоб ошибке, таккак системасчи­тает, что сервер незапущен. Всесистемныесообщения будутпоявлятьсяв консольномокне, в которомвыполненакоманда sqlservr.Сервербудет за­пускатьсяпод учетнойзаписью пользователя, работающегов системе вдан­ный момент, и если этотпользовательрешит завершитьсеанс работыв опе­рационнойсистеме, емупридется сначалазавершитьработу SQLServer.

Запуск SQLServer в однопользовательскомрежиме

Принекоторыхобстоятельствахбывает необходимозапустить SQLServer вод­нопользовательскомрежиме — например, чтобы выполнитьконфигурированиеважныххарактеристиксервера иливосстановитьповрежденнуюсистемную базуданных.

Воднопользовательскомрежиме службаMSSQLServerподдерживаеттолько односоединение.Так как дополнительныеслужбы SQLServer 2000, подобно обычнымпользователям, устанавливаютклиентскиесоединения, то необходи­моубедиться, чтоэти службы, напримерSQLServerAgentилиSQLMail, неза­пущены. Впротивномслучае вы самине сможетеполучить доступк серверу,

посколькуединственноевозможноесоединениебудет ужезадействовано.Убе­дитесь, что клиентскиеприложения, обращающиесяк SQLServer (такиекак InternetInformation Server), такжеостановлены.

Приоднопользовательскомрежиме «грязные»страницы (dirtypages) немед­леннозаписываютсяна диск. Этоозначает, чтоданные, которыебыли измененыпослесчитывания, сразу окажутсяна диске, а нев кэш-памяти, как это бываетприобычной работе.

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

Прямойдоступ к системнойинформациитребует оченьвысокой квалификациии специальныхзна­ний. Большинствупользователейи системныхадминистраторовбудет достаточносредств, предо­ставляемыхинтерфейсомSQLServer.

Длязапуска SQLServer 2000 воднопользовательскомрежиме введитесле­дующуюкоманду.

sqlservr.exe-т

Запуск SQLServer с минимальнымитребованиями

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

Длязапуска SQLServer 2000какслужбы с минимальнымитребованиямивведитеследующуюкоманду: sqlservr.exe-f

Еслинеобходимонезамедлительнозапустить SQLServer 2000 сминималь­нымитребованиямикакприложение,выполнитеследующуюкоманду: sqlservr.exe-f-с

Передзапуском SQLServer сминимальнымитребованиямиубедитесь, чтосервер остановлени никакиедополнительныеслужбы илиприложения, которые могутблокироватьединственноесо­единение, не запущены.


    продолжение
--PAGE_BREAK--Дополнительныережимы запуска

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

Таблица.Дополнительныеключи sqlservr.exe

Ключреестра, создаваемыйпрограммойустановки исодержащийпараметрызапускаSQLServer 2000по умолчанию, находится вреестре .

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

Вы можетесоздать своюсобственнуюконфигурацию, сохранив всенеобхо­димыепараметрызапуска серверав реестре. Создайтекопию стандартныхклю­чей (SQLArgO,SQLArgl илиSQLArg2), изменивимя, например, на SingleUser.Затемотредактируйтестроку данныхдля указаниянужных параметров.

Чтобызапустить SQLServer сновым ключомреестра, введитеследующуюкоманду:Sqlservr.exe-sSingleUser

ЗдесьSingleUser— имяконфигурации.

ПриостановкаSQL Server

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

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

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

Чтобыприостановитьработу SQLServer, необходимовоспользоватьсятеми жесредствами, что и для запуска, но вместо командыStart(пуск)выбирать командуPause(пауза).Если необходимоостановитьсервер из команднойстро­ки, то нужноввести следующуюкоманду:

net pause mssqlserver

Дляпродолженияработы приостановленногоSQLServer введитекоманду

netcontinue mssql server

Соответственнодля именованныхкопий эти командыбудут выглядетьсле­дующимобразом:

netpause mssqlSinstancename netcontinue mssql$instancename


Вы неможете приостановитьработу сервера, если он запущенкомандойsqlservr.exe, таккак в этом случаесервер работаеткак самостоятельноеприложение, а не как службаоперационнойсистемы.


Остановка SQLServer

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

О SQLServer Enterprise Manager останавливаетлокальный илиудаленныйсервер SQLServer либослужбу SQLServerAgent.

О SQLServer Service Manager останавливаетлокальный илиудаленныйсервер SQLServer либослужбу SQLServerAgentизодного окна(в одном окнеможно управлятьработой всехслужб).

О КомандаSHUTDOWNязыкаTransact-SQLприменяетсядля остановкиSQLServer изклиентскогоприложенияпри выполнениизапросов, напримериз утили­тыosqlилиQueryAnalyzer. Используйтекоманду SHUTDOWNспараметромWITHNOWAITдлянезамедлительнойостановкисервера.

О Командаnetstopmssqlserver(netstopmssqlSinstancename- дляиме­нованныхкопий) останавливаетлокальный илиудаленный SQLServer, есливы работаетев WindowsNT.

О УтилитаServices(службы)окна ControlPanel (панельуправления)останавли­ваетлокальныйсервер SQLServer.

О Комбинацияклавиш CTRL+Cостанавливаетсервер SQLServer, еслион запу­щениз команднойстроки командойsqlservr.exe.

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

SQLServer 2000ожидает завершениявсех активныхкоманд Transact-SQLихранимых процедур, и только послеих завершенияпроисходитостановкасер­вера.Однако есливы останавливаетесервер командойSHUTDOWNWITHNOWAIT, остановкапроисходитнезамедлительновне зависимостиот того, все лиактив­ныеоперации завершены.


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


Правила Безопасности

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

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

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

В современныхусловиях, когдаинформацияимеет огромноезначение, при­нятиемер для предотвращениянесанкционированногодоступа, предупрежде­нияпотери илиповрежденияинформациистановятсянеотъемлемойчастью работылюбой компании.По данным статистики, в США 80 % компаний, по­терявшихинформацию, прекращалисвою деятельностьв течение года.Среди оставшихся20 % около половиныпросуществовалоне более 4 лет.

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

Системауправлениябазами данныхMicrosoftSQL Server 2000имеет разно­образныесредства обеспечениязащиты данных.Эта глава посвященадетально­музнакомствус системойбезопасностиSQLServer 2000.

Общие правиларазграничениядоступа

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

Послепроектированиялогическойструктуры базыданных, связеймежду таблицами, ограниченийцелостностии других структурнеобходимоопределитькругпользователей, которые будутиметь доступк базе данных.Чтобы разре­шитьэтим пользователямобращатьсяк серверу, создайтедля них учетныеза­писи в SQLServer либопредоставьтеим доступ посредствомучетных записейв домене, если вы используетесистему безопасностиWindowsNT. Разрешениедоступак серверу недает автоматическидоступак базе данныхи ее объектам.

Второйэтап планированиясистемы безопасностизаключаетсяв определениидействий, которые можетвыполнять вбазе данныхконкретныйпользователь.Пол­ныйдоступ кбазе данныхи всем ее объектамимеет администратор,которыйявляетсясвоего родахозяином базыданных — емупозволено все.Второй человекпослеадминистратора— это владелецобъекта.При созданиилюбого объектав базеданных емуназначаетсявладелец, которыйможет устанавливатьправа досту­пак этому объекту, модифицироватьего и удалять.Третья категорияпользовате­лейимеет правадоступа, выданныеим администраторомили владельцемобъекта.

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

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

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

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

Архитектурасистемы безопасностиSQL Server 2000

СистемабезопасностиSQLServer 2000базируетсяна пользователяхи учетныхзаписях. Пользователипроходят следующиедва этапа проверкисистемойбезо­пасности.На первом этапепользовательидентифицируетсяпо имени учетнойзаписии паролю, тоесть проходитаутентификацию.Если данныевведены пра­вильно, пользовательподключаетсяк SQLServer. Подключениек SQLServer, илирегистрация,недает автоматическогодоступа к базамданных. Длякаждой базыданных серверарегистрационноеимя (илиучетная запись— login)должноотображатьсяв имяпользователябазы данных(user).Навтором этапе, на осно­веправ, выданныхпользователюкак пользователюбазы данных(user), егоре­гистрационноеимя (login)получаетдоступ к соответствующейбазе данных.В разныхбазах данныхloginодногои того же пользователяможет иметьодинако­выеили разныеимена userсразными правамидоступа.

Длядоступа приложенийк базамданных им такжепонадобятсяправа. Чащевсего приложениямвыдаются теже права, которыепредоставленыпользовате­лям, запускающимэти приложения.Однако дляработы некоторыхприложе­нийнеобходимоиметь фиксированныйнабор правдоступа, независящих отправдоступа пользователя.SQLServer 2000позволяетпредоставитьтакие с применениемспециальныхролейприложения.

Итак, на уровне серверасистема безопасностиоперируетследующимипоня­тиями:

Оаутентификация(authentication);

О учетнаязапись (login);

О встроенныероли сервера(fixedserver roles).

На уровнебазы данныхиспользуютсяследующиепонятия: Опользовательбазы данных(databaseuser); Офиксированнаяроль базы данных(fixeddatabase role); Опользовательскаяроль базы данных(usersdatabase role); Ороль приложения(applicationrole).

Режимы аутентификации

SQLServer 2000может использоватьдва режимааутентификациипользователей: О режим аутентификации средствами WindowsNT/2000 (Windows NT Authentication);

О смешанныйрежим аутентификации(WindowsNT Authentication and SQL

Server Authentication).

Смешанныйрежим позволяетпользователямрегистрироватьсякак сред­ствамиWindowsNT, таки средствамиSQLServer. Крометого, этот режимпредлагаетнекоторыеудобства посравнению спервым. В частности, при аутен­тификациитолько средствамидомена WindowsNT, еслипользовательне име­етучетной записив домене WindowsNT, тоон не сможетполучить доступак серверу базданных. Смешанныйрежим аутентификациипозволяетизбежать этойпроблемы.

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

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

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


masterjog_path > error_log_path > master_file_path >    продолжение
--PAGE_BREAK--Режим аутентификацииSQL Server

Дляустановкисоединенияс сервером SQLServer 2000, находящемсяв домене, скоторым неустановленыдоверительныеотношения, можно использоватьаутен­тификациюSQLServer. АутентификацияSQLServer такжеиспользуется, когда вообщенет возможностизарегистрироватьсяв домене. Например, при подклю­чениик SQLServer 2000по Интернету.

Приработе с аутентификациейSQLServer доступтакже предоставляетсяна основеучетных записей.Но в этом случаеиспользуютсяучетные записиSQLServer, а неWindowsNT.

ДляаутентификациисредствамиSQLServer Server членстандартнойроли сервераsysadminилиsecurityadminдолженсоздать исконфигурироватьдля пользователяучетную запись, в которую входитимя учетнойзаписи, уникальныйидентификаторSQLServer ипароль. Вся этаинформациябудет хранитьсяв сис­темнойбазе master.Создаваемаяучетная записьне имеет отношенияк учет­нымзаписям WindowsNT.

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

АутентификацияSQLServer можетприменятьсяв следующихслучаях: Одля пользователейNovellNetWare, Unix ит. д.;

О приподключениик SQLServer 2000через Интернет, когда регистрацияв домене невыполняется;

О подуправлениемоперационнойсистемы Windows98.

Учтите, что в этом случаеадминистраторSQLServer 2000сам долженпериоди­ческипредупреждатьпользователейо необходимостисменить пароль, чтобы обезопаситьсистему отнесанкционированногодоступа, посколькув отличие отWindowsNT, вSQLServer отсутствуютподобные средствасистемы безопасности.

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

Послеустановки SQLServer создаютсядве стандартныеучетные записи:BUILTINXAdministratorsи sa.

О BUILTINNAdministrators— этоучетная записьWindowsNT, обеспечивающаяавтоматическийдоступ всемчленам группыAdministratorsк SQLServer. Учетнаязапись BUILTINNAdministratorsпоумолчаниюявляется членомвстроеннойроли сервераsysadmin.Такимобразом, системныеадминистра­торыполучают полныйдоступ ко всембазам данных.В ситуации, когда фун­кциисистемногоадминистратораи администраторабаз данныхвыполняютразныелюди, скореевсего, следуетисключить этуучетную записьиз роли sysadmin, авозможно, ивообще удалить.

О sa — этоспециальнаяучетная записьSQLServer дляадминистратора.Поумолчанию онаприсвоенавстроеннойсистемной ролисервера sysadminи неможет бытьизменена. Этаучетная записьсохранена вэтой версииSQLServerдлясохранениясовместимостис приложениями, написаннымидля пре­дыдущихверсий. Хотяsа иимеет административныеправа, ее нерекомен­дуетсяиспользоватьв SQLServer 2000.Вместо этогоследует создатьновых пользователейи включить ихв административнуюгруппу sysadmin.Учет­нуюзапись sаоставьте накрайний случай, когда учетныезаписи админист­раторовокажутся недоступнымилибо вы забудетепароль.


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

Компонентыструктурыбезопасности

Фундаментомсистемы безопасностиSQLServer 2000являются учетныезаписи
(login),пользователи(user),роли(role)игруппы(group). t

Пользователь, подключающийсяк SQLServer, долженидентифицироватьсебя, используяучетнуюзапись. Послетого как клиентуспешно прошелаутентификацию, он получаетдоступ к SQLServer. Дляполучениядоступа к любойбазе дан­ныхучетная записьпользователя(login)отображаетсяв пользователяданной базыданных(user).Объект«пользовательбазы данных»применяетсядля предостав­лениядоступа ко всемобъектам базыданных: таблицам, представлениям, храни­мымпроцедурами т. д. В пользователябазы данныхможет отображаться:

О учетнаязапись WindowsNT;

О группаWindowsNT;

О учетнаязапись SQLServer.

Подобноеотображениеучетной записинеобходимодля каждой базыданных, доступк которой хочетполучитьпользователь.Отображениясохраняютсяв сис­темнойтаблице sysusers, котораяимеется в любойбазе данных.Такой подходобеспечиваетвысокую степеньбезопасности, предохраняяот предоставленияпользо­вателям, получившимдоступ к SQLServer, автоматическогодоступа ко всембазам данныхи их объектам.Пользователибаз данных, всвою очередь, могут объеди­нятьсяв группыи ролидляупрощенияуправлениемсистемойбезопасности.

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

Еслив сети имеетсянебольшоеколичествопользователей, то достаточнолегко предоставитьдо­ступ каждомупользователюперсонально.Однако в большихсетях с сотнямипользователейпо­добный подходзаймет многовремени. Гораздоболее удобными эффективнымявляется подход, когда доступк SQLServer 2000предоставляетсяцелым группампользователей.Как раз такойпод­ход возможенпри аутентификациисредствамиWindowsNT/2000, когдана уровне доменасоздает­сянесколькогрупп, каждаяиз которыхпредназначенадля решенияспецифическихзадач. На уровнеSQLServer 2000такой групперазрешаетсядоступ к серверу, предоставляютсянеобходимыеправа доступак базам данныхи их объектам.Достаточновключить учетнуюзапись WindowsNT водну из групп, и пользовательполучит всеправа доступа, предоставленныеэтой группе.Более того, одна и та жеучетная записьможет бытьвключена вомножество группWindowsNT, чтодаст этой учет­нойзаписи возможностьпользоватьсяправами доступа, предоставленнымивсем этим группам.АдминистраторSQLServer 2000должен самрешить, какудобнее предоставлятьдоступ к серверу: персональнокаждой учетнойзаписи илигруппе в целом.

Пользователи

Послетого как пользовательпрошел аутентификациюи получилидентифика­торучетной записи(loginID), онсчитаетсязарегистрированными ему предо­ставляетсядоступ к серверу.Для каждой базыданных, к объектамкоторой пользователюнеобходимополучить доступ,учетнаязапись пользователя(login)ассоциируетсяс пользователем(user)конкретнойбазы данных.Пользователивыступаютв качествеспециальныхобъектовSQLServer, припомощи которыхопределяютсявсе разрешениядоступа и владенияобъектами вбазе данных.


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

Присоздании базыданных определяютсядва стандартныхпользователя:db о иguest.

Еслиучетная запись(login)несвязываетсяявно с пользователем(user), по­следнемупредоставляетсянеявныйдоступс использованиемгостевого имениguest.Тоесть все учетныезаписи, получившиедоступ к SQLServer 2000, авто­матическиотображаютсяв пользователейguestвовсех базахданных. Есливы удалитеиз базы данныхпользователяguest, тоучетные записи, не имеющиеявногоотображенияучетной записив имя пользователя, не смогут получитьдоступак базе данных.Тем не менее,guestнеимеет автоматическогодоступа кобъектам. Владелецобъекта долженсам решать, разрешатьпользователюguestэтотдоступ или нет.Обычно пользователюguestпредоставляетсяминималь­ныйдоступ в режиме«только чтение».


Дляобеспечениямаксимальнойбезопасностиможно удалитьпользователяguestизлюбой базыданных, кромесистемных базданных masterиTempdb.Впервой из нихguestиспользуетсядля выполнениясистемныххранимых процедуробычнымипользователями, тогда как вовторой позво­ляетсоздавать любымпользователямвременныеобъекты.

Владелецбазыданных (DataBaseOwner, DBO) —специальныйпользователь, обладающиймаксимальнымиправами в базеданных. Любойчлен роли sysadminавтоматическиотображаетсяв пользователяdbo.Еслипользователь, являющийсячленом ролиsysadmin, создаеткакой-нибудьобъект, то владельцемэтого объектаназначаетсяне данныйпользователь,adbo. Например, если Liliya, членадми­нистративнойгруппы, создаеттаблицу ТаЫеА, тополное имятаблицы будетне Liliya.ТаЫеА,adbo.ТаЫеА. В то же время, если Liliya, небудучи участни­комроли сервераsysadmin, состоитв роли владельцабазы данныхdb_owner, тоимя таблицыбудет LiI i уа.ТаЫеА.


Пользователяdboнельзяудалить.

Длясвязыванияучетной записи(login)сопределеннымименем пользовате­ля(user)можновоспользоватьсяследующейхранимой процедурой:

sp_adduser[@loginame =] 'login' [,[@name_in_db=] 'user'][.[@grpname=] 'role']

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

О login—имяучетнойзаписи, которуюнеобходимосвязать с именемпользо­вателябазы данных;

О user— имяпользователябазы данных,с которымассоциируетсяданная учет­наязапись (в базеданных заранеене должносуществоватьпользователяс указаннымименем);

О role— этотпараметр определяетроль,в которуюданный пользовательбу­дет включен(подробнее оролях будетрассказанопозже). Хранимаяпроцедураsp_grantdbaccessпозволяетотобразитьучетную за­письWindowsNT вимя пользователя:

sp_grantdbaccess[@loginame =] 'login'[,[@name_in_db=] 'user']

Параметрыозначают следующее:

О login—имяучетнойзаписи пользователяили группыпользователейWindowsNT, которымнеобходимопредоставитьдоступ к базеданных. Имядолжноснабжатьсяссылкой надомен, в которомучетная записьопределена.Указаннойучетной записине обязательнодолжен бытьпредоставленперсо­нальныйдоступ к SQLServer. Вполневозможно, чтосоединениес серверомустанавливаетсявследствиечленства вгруппе WindowsNT, котораяимеет доступк серверу;

О user— имяпользователябазы данных, с которымассоциируетсяданная учет­наязапись.

Пользователь, который создаетобъект в базеданных, напримертаблицу, хра­нимуюпроцедуру илипредставление, становитсявладельцемобъекта.Владелец объекта(databaseobject owner) имеетвсе права доступак созданномуим объек­ту.Чтобы пользовательмог создатьобъект, владелецбазы данных(dbo)дол­женпредоставитьпользователюсоответствующиеправа.Полноеимя создаваемогообъектавключает в себяимя создавшегоего пользователя.Если пользовательхочет обратитьсяк таблице, используятолько ее имяи не указываявладельца, SQLServer применяетследующийалгоритм поиска.

1. Ищетсятаблица, созданнаяпользователем,выполняющимзапрос.

2. Еслитаблица ненайдена, тоищется таблица, созданнаявладельцембазыдан­ных(dbo).

Допустим, пользовательLissпытаетсяобратитьсяк таблице Liliya.TableA, простоиспользуя имяTab! еА.Посколькутаблица, созданнаяLiI iya, несоответ­ствуетни первому, нивторому критериюпоиска, то таблицаТаЫеАнайдена небудет и пользовательполучит сообщениеоб ошибке. Дляполучениядоступа к таблиценеобходимоввести имя, включающеевладельцаобъекта, тоесть Liliya.TableA.

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

SQLServer позволяетпередаватьправа владенияот одногопользователядругому.Чтобы удалитьвладельцаобъекта из базыданных, сначаланеобходи­моудалить всеобъекты, которыеон создал, илипередать правана их владениедругому пользователю.Для этого можноиспользоватьхранимую процедуруsp_changeobjectowner, имеющуюследующийсинтаксис:

sp_changeobjectowner [ @objname= ] 'object', [ (Pnewowner = ] 'owner'

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

Роли сервера

Роль— этомощный инструмент, добавленныйв SQLServer 7.0, чтобы заменитьгруппы,которыеиспользовалисьв предыдущихверсиях. Рольпозволяетобъе­динятьпользователей, выполняющиходинаковыефункции, дляупрощенияад­министрированиясистемы безопасностиSQLServer.

В SQLServer реализованодва вида стандартныхролей: на уровнесервера инауровне базданных. Приустановке SQLServer 2000создается 9фиксированныхролей сервераи 9 фиксированныхролей базыданных. Этироли вы несможете удалить, кроме того, нельзя модифицироватьправа их доступа.Вы не сможетепредоставитьпользователюправа, которыеимеют фиксированныеролисервера, другимспособом, кромекак включениемего в нужнуюроль.

В предыдущихверсиях SQLServer дляадминистрированиясервера можнобылоиспользоватьтолько учетнуюзапись saилиее аналог. Иначеговоря, вы моглидать либо всеправа, либо никаких.Теперьв SQLServer этапроблема решенапутем добавленияролей сервера(serverrole), которыепозволяютпре­доставитьоператорамсервера толькоте права, которыеадминистраторпосчитаетвозможнымпредоставить.Роли серверане имеют отношенияк администриро­ваниюбаз данных.Можно включитьлюбую учетнуюзапись SQLServer (login) илиучетную записьWindowsNT влюбую рольсервера.

Стандартныероли сервера(fixedserver role) иих права приведеныв табл.

Таблица.Фиксированныероли сервера

Встроенная Назначение

рольсервера______________________________________________

Sysadmin Можетвыполнять любыедействия в SQLServer
Serveradmin Выполняетконфигурированиеи выключениесервера

Setupadmin Управляетсвязаннымисерверами ипроцедурами, автоматически
запускающимисяпри старте SQLServer

Securityadmin Управляетучетными записямии правами насоздание базыданных, такжеможетчитать журналошибок

Processadmin Управляетпроцессами, запущеннымив SQLServer

Dbcreator Можетсоздавать имодифицироватьбазы данных

Diskadmin Управляетфайлами SQLServer

Bulkadmin Этароль не существовалав SQLServer 7.0.Члены ролиBulkadminмогут

(BulkInsert вставлятьданные с использованиемсредств массивногокопирования,

administrators) неимея непосредственногодоступа ктаблицам____________________

Роли баз данных

Ролибазы данных(databaserole) позволяютобъединятьпользователейв одну административнуюединицу и работатьс ней как с обычнымпользователем.Можноназначить правадоступа к объектамбазы данныхдля конкретнойроли, при этомвы автоматическинаделяете всехчленов этойроли одинаковымипра­вами.Вместо тогочтобы предоставлятьдоступ каждомуконкретномупользова­телю, а впоследствиипостоянноследить заизменениями, можно простовклю­читьпользователяв нужную роль.Если сотрудникпереходит вдругой отдел, нужнопросто удалитьего из однойроли и добавитьв другую. Создайтенеоб­ходимоеколичестворолей, которыеохватывалибы все многообразиедействий сбазой данных.Позже, при изменениифункций членоводной из ролей, доста­точноизменить правадоступа дляэтой роли,а неустанавливатьновые правадлякаждого пользователя.

В рольбазы данныхможно включать: ОпользователейSQLServer; Ороли SQL Server

О пользователейWindowsNT; '

О группыWindowsNT, которымпредварительнопредоставлендоступ к нуж­нойбазе данных.

СредстваEnterpriseManager позволяютдобавлять вроль базы данныхтоль­копользователейбазы данных(user).Используйтехранимую процедуруsp_addrolemember, чтобызадействоватьвсе возможностиSQLServer 2000:

sp_addrolemember [@ro1ename=] 'role',[@membername=]'security_account'

Здесьпараметрыозначают следующее: О role—названиероли SQLServer втекущей базеданных;

Оsecurity_account— имятого объектасистемы безопасности, который необ­ходимовключить вроль. В качестветакого объектамогут выступатькак учет­ныезаписи SQLServer, таки пользователии группы WindowsNT, которымпредоставлендоступ к серверубаз данных.

Присоздании базыданных для нееопределяютсястандартныероли базы данных,которые, так же как истандартныероли сервера, не могут бытьизмене­ныили удалены.Стандартныероли баз данных(fixeddatabase role) иих права приведеныв табл.

Таблица.Фиксированныероли баз данных

Встроеннаяроль Назначение

базданных_______________________________________________

db__owner Имеетвсе права вбазе данных
db_accessadmin Можетдобавлять илиудалять пользователей

db_securityadmin Управляетвсеми разрешениями, объектами, ролями и

членами ролей

db_ddladmin Можетвыполнять любыекоманды DDL, кромеGRANT,DENY

и REVOKE

db_backupoperator Можетвыполнятькоманды DBCC,CHECKPOINT иBACKUP
db_datareader Можетпросматриватьлюбые данныев любой таблицеБД
db_datawriter Можетмодифицироватьлюбые данныев любой таблицеБД
db_denydatareader Запрещаетсяпросматриватьданные в любойтаблице
dbjjenydatawriter_________Запрещаетсямодифицироватьданные в любойтаблице_____

Кромеуказанных вышеролей существуетеще одна — public.Этароль име­етспециальноеназначение, поскольку еечленами являютсявсе пользователи, имеющиедоступ к базеданных. Нельзяявноустановитьчленов этойроли, по­томучто все пользователии так автоматическиявляются еечленами. Исполь­зуйтеэту роль дляпредоставленияминимальногодоступа пользователям, для которыхправа доступак объектам неопределеныявно. Если вбазе данныхразрешенпользовательguest, тоустановленныйдля publi сдоступ будутиметь всепользователи, получившиедоступ к SQLServer. Рольpublicимеетсяво всехбазах данных, включая системныебазы данныхmaster,tempdb,msdb, model, Ине может бытьудалена.

ГруппыWindowsNT могутбыть использованыаналогичноролям SQLServer. Можносоздать однуучетнуюзапись (login)длягруппы WindowsNT ивключатьсоответствующихпользователейвместо ролив группу WindowsNT. Выборметода администрированиязависит от вас.

Роли приложения

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

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

SQLServer решаетперечисленныепроблемы путемиспользованияроли при­ложения,создаваемойна уровне базыданных. Отличиямежду стандартнымиролямии ролью приложенияфундаментальны.Роль приложенияне имеет чле­нов.ПользователиSQLServer илиWindowsNT немогут бытьдобавлены вэту роль.Роль активизируется, когда приложениеустанавливаетсоединение.Пользо­ватель, работающийв это время сприложением, не являетсячленом роли— толькоего приложениеиспользуетустановленноесоединение.

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

sp_addappro1e[ @rolename = ]'role'. [(^password= ]'password'

Первый параметропределяетимя, котороебудет иметьсоздаваемаяроль при­ложения, второй — пароль, который будетиспользоватьсядля активизациироли.


    продолжение
--PAGE_BREAK--

Созданиероли приложениясредствамиEnterpriseManager выполняетсяс помощью окнаDatabaseRole Properties —NewRole (свойстваролей баз данных— новая роль), которое такжеиспользуетсядлясоздания обычныхпользовательскихролей. Чтобысоздаваемаяроль являласьролью прило­жения, достаточноустановитьпереключательApplicationrole (рольприложения)и ввести пароль.Работас указаннымокном будетрассмотренав одном из следующихразделов этойглавы.

Приложениеможет бытьспроектированотак, чтобыпользователь, работаю­щийс ним, долженбыл вводитьпароль дляактивизациироли приложения.Однакочаще всегопароль вводитсясамим приложениемнезаметно дляпользо­вателя.Дополнительно, для обеспечениямаксимальнойбезопасности, пароль можетбыть зашифрованперед своейотправкой кSQLServer посети.

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

sp_setapprole [(ЭгоТепате=] 'role',[^password=] (Encrypt N'password'} | 'password' [.[^encrypt=]'encrypt_style']

Рассмотримпараметрыподробнее: Оrole—имяроли приложения, которое определенов базе данных;

О password—пароль, который приложениедолжно передатьсерверу дляак­тивизациироли приложения;

О encrypt_style —применяемаясхема шифрованияпаролей. Данныйпараметр можетиметь два значения: попе(шифрованиене применяется)и odbc(шиф­рованиес применениемфункции ODBCencrypt).

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

Посколькуроль приложенияимеет праватолько в тойбазе данных, в которой онасоздана, а всеразрешениядля учетныхзаписей, группи ролей, к которымпринадлежитпользователь, теряются, тодоступ к другимбазам данныхвозможен толькопод гостевымименем guest.Следовательно, если имя guestв базеданных не существует, то соединениене сможет получитьдоступ к данным.Если же имяguestнеудалено из базыданных, соединениесможет получитьдоступ к объектамбазытолько в томслучае, еслиразрешенияявновыданыдля пользователяguest.Передустановлениемсоединенияс использованиемроли приложенияпользо­вателюсначала нужнополучить доступк SQLServer. Дляэтого допустимыоба режимааутентификациипользователей.

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


Защита данных

Какбы хорошо нибыла спланированасистема безопасностиSQLServer 2000, остаетсявозможностькопированияфайлов с даннымии просмотраих на другомкомпьютере.Кроме того, сиспользованиемспециальныхустройствданные могутбытьперехваченыпри передачеих по сети.Необходимопродуматьсредства физи­ческойзащитыданных. Учтите, что данные вфайлах базыданных хранятсяв от­крытойформе, то естьих можно просмотретьв текстовомредакторе.Конечно, онине будутструктурированы, но все же частьинформацииможно будетпрочитать.

Шифрованиеданных

Шифрование— этометод, используемыйSQLServer дляизмененияданных донечитабельнойформы. Шифрованиегарантирует, что ценнаяконфиденциаль­наяинформацияне будет просмотренакем бы то нибыло. Вы можетескопиро­ватьданные, но ничегоне сможете сними сделать.Для просмотраданных авто-ризированнымипользователямииспользуетсядешифрование… SQLServer позволяетшифроватьследующиеданные:

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

• паролиучетных записейSQLServer илиролей приложения;

• код, использованныйдля созданияобъектов базыданных (хранимыхпроцедур,

представлений, триггеров ит. д.).

Паролиучетных записейи ролей приложениявсегдасохраняютсяв систем­ныхтаблицах SQLServer взашифрованнойформе. Этопредохраняетих от просмотралюбым пользователем, включая администратора.Кроме того, пароль ролиприложенияможет бытьзашифрованперед отправкойего на сервер.

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

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


Есливы хотите шифроватьданные припередаче ихпо сети, необходимоиспользоватьсетевую библиотекуMultiprotocolNet-Library.

Ограничениедоступа к файламSQL Server

В своейработе SQLServer создаети используетмножествофайлов — базыдан­ных, журналыошибок, резервныекопии, файлыдля экспортаи импорта данныхи многоедругое. СлужбыSQLServer науровне операционнойсистемы выполня­ютсяв виде процессов.Для нормальнойработы SQLServer необходимо, чтобы эти процессыимели полныйдоступ ко всемуказанным вышефайлам на уровнефайловойсистемы. Дляэтого на уровнеоперационнойсистемы требуетсяпредо­ставитьсоответствующиеправа учетнымзаписям, которыеиспользуютсядля за­пускаSQLServer. Лучшевсего управлятьправами доступанепосредственнона

уровнефайлов и папок.Для этого сервердолжен работатьпод управлениемопе­рационнойсистемы WindowsNT ииметь файловуюсистему NTFS.

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

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

Права доступа

Когдапользователиподключаютсяк SQLServer, действия, которые онимогут выполнять, определяютсяправами (разрешениями), выданными ихучетной за­писи, группе илироли, в которойони состоят.

Правав SQLServer можноразделить натри категории: О правана доступ кобъектам базданных; О правана выполнениякоманд Transact-SQL; Онеявные права(разрешения).

Послесоздания пользовательне имеет никакихправ доступа, кроме тех, ко­торыеразрешены дляспециальнойроли базы данныхpublic.Права, предос­тавленныеэтой роли, доступныдля всехпользователейв базе данных.

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

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

Используйтевсе возможностиSQLServer, контролируяправа доступане только науровне таблиц,но ина уровне столбцов.Указываяправа доступак конкретно­мустолбцу, выможете болеегибко управлятьсистемойбезопасности.

Аналогичныерекомендациикасаются разрешенийна выполнениекоманд Transact-SQL.Можноспроектироватьбазу данныхтаким образом, что выпол­нятьконкретныедействия —создание таблиц, представлений, правил, резерв­ныхкопий и т. д. —будут строгоопределенныепользователи.

Права на доступк объектам базданных

Работас данными ивыполнениехранимых процедуртребуют наличиякласса доступа, называемогоправамина доступ кобъектам базданных. Подобъектамиподразумеваютсятаблицы, столбцытаблиц, представления, хранимые процеду­ры.Права на доступк объектам базданных контролируютвозможностьвыпол­ненияпользователями, например, командSELECT,INSERT, UPDATE иDELETEдлятаблици представлений.Таким образом, если пользователюнеобходимодоба­витьновые данныев таблицу, емуследует предоставитьправо INSERT(вставказаписейв таблицу).Предоставлениеже пользователюправа EXECUTEразрешаетемувыполнениекаких-либохранимых процедур.

Дляразличныхобъектов применяютсяразные наборыправ доступак ним: ОSELECT,INSERT,UPDATE,DELETE,REFERENCES-этиправа могутбыть приме­неныдля таблицыили представления;

О SELECTиUPDATE— этиправа могутбыть примененык конкретномустолбцутаблицыилипредставления;

О EXECUTE—этоправо применяетсятолько к хранимымпроцедурамифунк­циям.Нижеприводитсяболее подробноеописание каждогоиз этих прав.

О INSERT.Этоправо позволяетвставлять втаблицу илипредставлениеновые строки.Как следствие, право INSERTможетбыть выданотолько на уровнетаблицы илипредставленияи не может бытьвыдано на уровнестолбца.

О UPDATE.Этоправо выдаетсялибо на уровнетаблицы, чтопозволяетизменять вседанные в таблице, либо на уровнеотдельногостолбца, чторазрешаетиз­менять данныетолько в пределахконкретногостолбца.

О DELETE.Этоправо позволяетудалять строкииз таблицы илипредставления.Каки право INSERT, правоDELETEможетбыть выданотолько на уровнетаб­лицыили представленияи не может бытьвыдано на уровнестолбца.

О SELECT.Разрешаетвыборку данных.Может выдаватьсякак на уровнетабли­цы, так и на уровнеотдельногостолбца.

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

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

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

Используйтекоманду GRANTдляуправленияразрешениямипользователяна доступк объектам базыданных:

GRANT

(ALL[PRIVILEGES] | permiss1on[....n]}

{

[(column[,...n])]ON {table | view}

|ON {table | view}[(column[,...n])]

| ON {stored_procedure | extended_procedure}

}

TOsecurity_account[,...n][WITHGRANT OPTION] [AS{group | role}]

Назначениепараметровкоманды GRANTследующее:

О ALL—пользователюпредоставляютсявседоступныеразрешения.Этот пара­метрмогут использоватьтолько участникироли sysadmln;

О permission—списокдоступныхразрешений, которые предоставляютсяпользо­вателю(SELECT,INSERT,UPDATE,DELETE, EXECUTE). Выможете одновременнопре­доставлятьнесколькоразрешений, в этом случаеих нужно разделятьзапятыми;

Оsecurity_account—имятого объектасистемы безопасности, который необ­ходимовключить вроль. В качестветаких объектовмогут выступатькак учет­ныезаписи SQLServer, таки пользователии группы пользователейWindowsNT, которымпредоставлендоступ к серверубаз данных;

О table,view,column,stored_procedure,extended_procedure— вкачестве данныхпараметроввыступают именаобъектов втекущей базеданных, длякоторыхнеобходимопредоставитьдоступ;

О WITHGRANTOPTION—использованиеданного параметрапозволяетпользо­вателю, которому выпредоставляетеправа, назначатьправа на доступк объек­тудругим пользователям;

О AS{group| role)— этотнеобязательныйпараметр позволяетуказать уча­стиепользователяв роли, котораяимеет возможностьпредоставлятьправа другимпользователям.

В качествепримера командырассмотримследующуюситуацию. Вамнеоб­ходимопредоставитьправа на использованиекоманд INSERTиSELECTгруппеEngineerвтаблице Materials.Приэтом нужно, чтобы в дальнейшемпользо­вателиэтой группымогли самипредоставлятьаналогичныеправа. Для этогоследуетвыполнитьследующуюкоманду:

GRANT SELECT. INSERT

ON Materials

TO Engineer

WITHGRANTOPTION


ВпоследствиипользовательValentin, являющийсячленом группыEngineer, можетпредоставитьаналогичныеправа другомупользователюLi s s:

GRANT SELECT, INSERTONMaterials 'TOLiss ASEngineer

В данномслучае необходимоподтвердить, на каком основанииValentineпредоставляетправа, поэтомуприменяетсяпараметр AS.

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

Единственноеправо доступа, которое можетбыть предоставленодля храни­мойпроцедуры, —это право наее выполнение(EXECUTE).Естественно, кроме этоговладелец хранимойпроцедуры можетпросматриватьи изменять еекод.

Дляфункции можновыдать правона ее выполнение, а, кроме того, можно выдатьправо REFERENCES, чтообеспечитвозможностьсвязыванияфункции с объектами, на которыессылаетсяфункция. Такоесвязываниепозволяетзапре­титьвнесение измененийв структуруобъектов, которыемогли бы привестик нарушениюработы функции.

Чтобыпредоставитьправо на выполнениехранимой процедуры, можно ис­пользоватьEnterpriseManager. Дляэтого выберитев левой панелиEnterpriseManagerнужнуюбазу данныхи откройте вней папку StoredProcedures. Впра­вой частиEnterpriseManager будетотображенсписок хранимыхпроцедур, ужесозданныхв базе данных.Управлениеправами доступаможно осуществлятьв окне ObjectProperties (свойстваобъектов), показанномна рис. 12.20. Вызватьэто окно можнолибо с помощьюкнопки Permissions(права)в окне свойствхранимой процедуры, либо выбравв контекстномменю хранимойпроцедуры пунктАН Tasks>ManagePermissions (всезадачи >управлениеправами).

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

Управлениеправами доступак функциямосуществляетсяаналогично.

Другойспособ управленияправами доступазаключаетсяв предоставленииправконкретномупользователюс помощью окнаправ доступапользователя.Для этого вокне EnterpriseManager выберитенеобходимуюбазу данных, а затем пап­куUsers.Щелкнителевой кнопкоймыши на выбранномпользователе.В появив­шемсяокне щелкнитена кнопке Permissions(права)и укажите необходимыеправа.


Запрещениедоступа

СистемабезопасностиSQLServer имеетиерархическуюструктуру. Этопозво­ляетролям базыданных включатьв себя учетныезаписи и группыWindowsNT, пользователейи роли SQLServer. Пользовательже, в свою очередь, может уча­ствоватьв несколькихролях. Следствиемиерархическойструктурысистемы безопасностиявляется то, что пользовательможет одновременноиметь разныеправадоступа дляразных ролей.Если одна изролей, в которыхсостоит пользо­ватель, имеет разрешениена доступ кданным, топользовательавтоматическиимеет аналогичныеправа. Тем неменее можетпотребоватьсязапретитьвоз­можностьдоступа к данным.Когда вы запрещаетепользователюдоступ к дан­нымили командамTransact-SQL(deny access), темсамым аннулируютсявсеразрешенияна доступ, полученныепользователемна любомуровнеиерархии. Приэтом гарантируется, что доступостанетсязапрещеннымнезависимоот раз­решений, предоставленныхна более высокомуровне.

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

Используйтекоманду DENYдлязапрещенияпользователюдоступа к объек­тамбазы данных:

DENY

(ALL[PRIVILEGES] | permission[,...n]}

{

[(columnC....n])] ON {table | view}| ON {table | vi ew}[-(columnC,… n])]ION {stored_procedure | extended_procedure}

TO security_account[....n][CASCADE]

Длязапрещениявыполнениякоманд Transact-SQLприменяетсядругая ко­манда:

DENY{ALL | statement^….n]}ТОsecurity_account[....n]

Параметрыданной командыаналогичныпараметрамкоманды GRANT.Пара­метрCASCADEпозволяетотзывать праване только уданного пользователя, но такжеи у всех техпользователей, кому он предоставилданные права.Поясним смыслвышесказанногона примере.Пусть вы предоставилипользователюSheridanопределенныеправа:

GRANT CREATE TABLE

ТОSheridan

WITH GRANT OPTION

Допустим,Sheridanпредоставляетаналогичныеправа некоторымпользова­телям.Если впоследствиивам потребуетсяотозвать разрешенияу Sheridan, вывыполнитекоманду:

DENYCREATE TABLE ТОSheridanCASCADE

Приэтом будутотозваны и всеразрешения, которые Sheridanпредоставилдругим пользователям.



еще рефераты
Еще работы по информатике