Реферат: 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 в разделе «Типыданных» былирассмотренывстроенныев SQLServer2000 типыданных. Этитипы данныхвсегда имеютсяв распоряжениипользователейи могут бытьиспользованыдля столбцовтаблиц, представлений, переменныхи т. д. Однакопомимо встроенныхтипов данныхпользователимогут на ихоснове создаватьсвои собственныетипы данных— так называемыепользовательскиетипы данных.
Пользовательскиетипы данных(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.Эта информациятакже необходима, если вы обращаетесьв службу техническойподдержкиMicrosoft.На последующихэтапах необходимоввести информациюо размещениифайловсервера и базданных, кодовойстранице, порядкесортировки, сопоставлении, сетевых протоколахи библиотеках, а также сведенияоб учетныхзаписях, подкоторыми будетзапускаться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предоставилдругим пользователям.