М И Н И СТ Е РСТ В О О БРА ЗО В А Н И Я РО ССИ Й СК О Й Ф Е Д Е РА Ц И И В О РО Н Е Ж СК И Й ГО СУ Д А РСТ В Е Н Н Ы Й У...
68 downloads
456 Views
374KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
М И Н И СТ Е РСТ В О О БРА ЗО В А Н И Я РО ССИ Й СК О Й Ф Е Д Е РА Ц И И В О РО Н Е Ж СК И Й ГО СУ Д А РСТ В Е Н Н Ы Й У Н И В Е РСИ Т Е Т
В ведени е в MS SQL Server У чебно-метод и ческоепособи епо специ альности «При клад наяматемати ка и и нформати ка» 010501 (010200)
В оронеж , 2005
2 У тв ерж д ено научно-метод и чески м сов етом факультета ПМ М № 1 от21.09.2005 г.
протокол
Состав и тель Руд алев В .Г.
У ч.-метод . пособи епод готов лено на кафед ретехни ческой ки бернети ки и ав томати ческого регули ров ани яфакультета при клад ной математи ки , и нформати ки и механи ки В оронеж ского госуд арств енного уни в ерси тета. Рекоменд уетсяд лястуд ентов 4 курса д /о факультета ПМ М .
3 Д анное пособи е, яв ляю щ ееся прод олж ени ем сери и учебно-метод и чески х пособи й по курсу «Базы д анны х и э кспертны е си стемы » , сод ерж и т начальны е св ед ени я о проекти ров ани и баз д анны х с и спользов ани ем СУ БД MS SQL Server 2000. Пред полагаетсязнани етеорети чески х основ баз д анны х и язы ка SQL.
В в едени е MS SQL Server – прод укт фи рмы Microsoft. М ож но по-разному относи ться к ги ганту компью терной и нд устри и , но малов ероятно, что Microsoft сущ еств енно ослаби т св ои пози ци и в обозри мом буд ущ ем. По сов окупности показателей и функци ональны х в озмож ностей при очень скромны х си стемны х требов ани ях SQL Server сущ еств енно прев осход и т InterBase, уступая, каксчи тается, Oracle. Серверв ы пускаетсяв нескольки х ред акци ях, какотлад очны х, так и при год ны х д ля разв ерты в ани яна крупны х пред при яти ях. По утв ерж д ени ям разработчи ков , при в ед енны м в онлайнов ой д окументаци и , серв ермож етэ ффекти в но обслуж и в ать базы д анны х терабайтны х объ емов при д оступе ты сячпользов ателей. Благод аря прод уманной си стеме защ и ты и нформаци и серв ер ши роко и спользуется в си стемах э лектронной коммерци и в Internet. Глав ны м д остои нств ом MS SQL Server (а такж е его глав ны м нед остатком) яв ляется тесная и нтеграци я с Windows и д руги м «мелки м софтом» (Back Office, Visual Studio .NET, IIS, MTS и пр.) – общ ая мод ель защ и ты , бази рую щ аяся на защ и те Windows, ед и ная консоль ад ми ни стри ров ани я (Microsoft Management Console), ед и ны й наборпрограммны х и нтерфейсов д ля д оступа к д анны м и т.п. И з множ еств а д ополни тельны х в озмож ностей (более под робно см. статью А .Т енцера, опубли ков анную в Internet по ад ресу http://www.interface.ru/ borland/delp_1.htm) след уетотмети ть: • OLAP сервер– сред ств о д ля созд ани я и пред став лени я многомерны х кубов д анны х, и спользую щ и хся в анали ти чески х си стемах. OLAP Services в ход и тв станд артную постав ку и нетребуетд ополни тельны х затрат. • Data Transformation Services (DTS) – уни в ерсальны й и нструмент д ля перемещ ени я д анны х меж д у гетерогенны ми и сточни ками . В частности , с помощ ью э того и нструмента решается зад ача преобразов ани я форматов баз д анны х и переноса д анны х в форматOracle, Excel, *.txt и т.п. • В строенную в серверпод д ерж ку язы ка XML, позв оляю щ ую и спользов ать XML-д окумент в качеств е и сточни ка д анны х в SQL-запросе и в ы д ав ать результаты запроса в в и д еXML-д окумента. Д оступ кбазам д анны х сервера в озмож ен и з программ на лю бы х язы ках программи ров ани я через уни в ерсальны е и нтерфейсы ADO, ADO.NET, ODBC, JDBC, DBX.
4 По д анны м опроса посети телей сайта www.sql.ru SQL Server яв ляется наи более популярной СУ БД . Н а в тором месте – Oracle, на третьем – InterBase. М и ров аястати сти ка объ емов прод аж (в д енеж ном в ы раж ени и ) св и д етельств ует о безуслов ном ли д ерств е Oracle. Т руд но суд и ть о пред почти тельности той и ли и ной СУ БД , в се зав и си тотконкретны х зад ач. В аж ны м фактором, сд ерж и в аю щ и м распространени е MS SQL Server, яв ляется отсутств и е его в ерси й д ля альтернати в ны х операци онны х си стем. 1. П р оек т и р ов а ни е ба зы да нны х 1.1. У с та но вка с ервера У станов ка сервера д остаточно проста, но и меетнесколько особенностей, опред еляю щ и х характерего д альнейшей работы . Д ля установ ки SQL Server 2000 запусти те программу setupsql.exe и з папки \X86\SETUP на CD. Программа потребует указать сетев ое и мя компью тера, на которы й буд етустанов лен сервер. Н а од ном компью теремож етбы ть установ лено од и н и ли несколько э кземпляров (Instance) сервера; такж е д опускается уд аленная установ ка и ад ми ни стри ров ани е серверов . Поэ тому при установ кеВ ы д олж ны отв ети ть на в опрос: буд етли мод и фи ци ров атьсятекущ и й э кземплярсерв ера (если он и меется) и ли буд ет установ лен нов ы й э кземпляр. В послед нем случаетребуется указать ти п установ ки : Client Tools only и ли Server and Client Tools. При в ы боре Client Tools only устанав ли в ается только кли ентскоепрограммноеобеспечени ед ляд оступа ксерверу, наход ящ емусяна д ругом узле сети . После в ы бора серв ерного в ари анта указы в ается и мя э кземпляра и опред еляетсясостав и нсталли руемы х программны х прод уктов . Д алее требуется в в ести и мя учетной запи си Windows (Services Accounts), под которой буд ут работать си стемны е служ бы сервера. Ч тобы и збеж ать в озмож ны х проблем с пользов ательски ми учетны ми запи сями , откаж и тесь зд есь пока от установ ки по умолчани ю и в ы бери те Use the Local System Account (и спользов ать в строенную учетную запи сь SYSTEM). В д альнейшей работе, в целях безопасности , рекоменд уется созд ать пользов ательскую учетную запи сь с ми ни мальны ми (неад ми ни страти в ны ми ) прав ами и назначи ть еесерверу. В след ую щ ем окне зад ается способ аутенти фи каци и пользов ателя при в ход е в серв ер. О бщ епри нято, что более над еж ной и уд обной яв ляется в строенная в Windows и нтегри ров анная си стема защ и ты сервера (Windows Authentication Mode), которую В ам и след уетв ы брать. В э том случаед оступ ксерверу и мею т локальны еи д оменны еучетны езапи си Windows. Прав ами ад ми ни стратора серв ера облад аю т члены локальной группы Administrators и з Windows. В д альнейшем ад ми ни страторсервера д олж ен опред ели ть более четкую и д и фференци ров анную поли ти ку в отношени и прав д оступа. У прав лени е запуском и останов кой сервера в озмож но через оснастку «У прав лени е компью тером» - в етв ь «Служ бы и при лож ени я» и ли через служ бу SQL
5 Server Service Manager, значоккоторой наход и тся в прав ом ни ж нем углу панели зад ач. После установ ки сервера основ ны ми и нструментами разработчи ка баз д анны х яв ляю тся ути ли ты Enterprise Manager и Query Analyzer. Первая и з ни х пред став ляет собой оснастку (Snap-in), запускаемую при помощ и консоли управ лени я Microsoft (MMC), концентри рую щ ую в се д оступны е сред ств а управ лени ялокальны ми и уд аленны ми серверами и позв оляю щ ую запускать в спомогательны е и нструменты . Query Analyzer яв ляется в спомогательны м и нструментом, специ али зи ров анны м д ляработы си спользов ани ем SQL запросов . 1.2. С о здани е ба зы данны х Процесс разработки БД прои ллю стри руем с помощ ью Enterprise Manager, в нешни й в и д которой пред став лен на ри с. 1.
Ри с.1 Л ев ая часть Enterprise Manager сод ерж и т д рев ов и д ны й спи сокбаз д анны х. В корнед ерев а наход и тся перечень серв еров , д ля уд обств а разби ты й по группам. А кти в ность сервера помечена характерны м значком. После установ ки кли ента в сети первоначальны й спи сок серверов в группе пуст. Т огд а сервернеобход и мо за рег и с три ро ва ть . В контекстном меню SQL Server Group в ы бери те New SQL Server Registration. М астерреги страци и проскани руетсеть в пои скед оступны х серверов и пред остав и ти х спи сок, и з которого Вы д олж ны в ы брать необход и мы й сервер, напри мер C1R214N11\MyServer. И мя сервера строи тся по прав и лу: Сетев ое_И мя_компью тера\И мя_сервера_БД . В д альнейшем реги страци онны е д анны е запоми наю тся, и пов торять реги страци ю нет необход и мости . В д анном случаев консоли зареги стри ров аны серверна локальном компью тереи уд аленны й серверServ2 на компью тереComp. БД д елятся на си стемны е и пользов ательски е. Программа первоначальной установ ки серв ера созд аетна нем четы ре си стемны х базы д анны х (master, model, msdb, tempdb), которы еи спользую тсяд ляработы самого сервера (ри с.3). К роме того, на сервере и мею тся д в е д емонстраци онны е пользов ательски е БД (Northwind и Pubs), которы емогути спользов атьсяд ляучебны х целей.
6 В качеств е конкретного при мера созд ани я пользов ательской БД рассмотри м БД «Склад » , опи санную в пособи и [3]. Д ляс о здани я Б Д на сервере раскройте узел с д оступны м сервером, в ы д ели те папку DataBases, в ы бери те в контекстном меню New Database и в появ и в шемсяокнена в клад кеGeneral в в ед и те и мя БД – NewSklad (ри с.2). Н а д руги х заклад ках окна (Data Files и Transaction Log) при ж елани и мож но просмотреть и и змени ть местонахож д ени е файлов БД . По умолчани ю пользов ательски ед анны еи си стемны етабли цы буд ут храни ться в файле C:\Program Files\ Microsoft SQL Server\MSSQL\data\NewSklad.MDF. В файле F:\Program Files\Microsoft SQL Server\MSSQL\data\NewSklad.LDF буд етхрани тьсяж урнал транзакци й.
Ри с.2 Д лясозд ани ятабли цы раскройтев нов ь созд анны й узел NewSklad (ри с.3), в ы д ели теTables, и в контекстном меню в ы бери теNew Table. О тред акти руйтеи мена столбцов и опред ели теи х ти п и д ли ну (см. ри с.4).
7
Ри с.3 Ч тобы сд елать поле перви чны м клю чом, в оспользуйтесь кнопкой Set Primary Key на панели и нструментов . Сохрани те результаты ред акти ров ани я, указав и мя табли цы - Customers. Д ля ав томати ческого заполнени я значени я перви чного клю чев ого поля Cust_ID д опусти мы д в а под ход а. В о-первы х, мож но сд елать его а вт ои н кре м е н т н ы м . Д ляэ того и змени тев св ойств ах столбца значени яслед ую щ и х атри бутов (см. ри с.4): Identity – Yes, Identity Seed – 1, Identity Increment –1.
8
Ри с.4 А в тои нкрементны е поля – ши роко распространенны й, но не самы й лучши й способ заполнени я перви чны х клю чей. Зд есь в озмож ны серьезны е проблемы . Н апри мер, если мы объ ед и няем несколько баз д анны х и з разны х фи ли алов фи рмы в од ну централи зов анную базу д анны х, нельзя гаранти ров ать, что ав тои нкрементны е номера заказов в о в сех фи ли алах буд ет разли чаться, что наруши ттребов ани еуни кальности в объ ед и ненной БД .
9 Поэ тому рекоменд уется д ругой под ход . При созд ани и табли цы объ яв и тед лястолбца Cust_ID ти п uniqueidentifier. Значени ями э того ти па яв ляю тся и зв естны е В ам по COM-технологи и GUID – глобальны е уни кальны е и д енти фи каторы , сов пад ени е которы х в озмож но ли шь теорети чески . Заполнять таки еполяслед уетпрограммно, напри мер, спомощ ью оператора INSERT INTO Customers (Cust_ID, CustName, Address) VALUES (NewID(), 'Иванов', 'Воронеж'). Зд есь NewID() - станд артная функци я, генери рую щ ая нов ы й GUID. А если пользов атель забуд етеев ы зв ать? У каж и тев окнери с.4 св ойств о Is RowGuid = Yes, что при в ед ет к установ ке св ойств а Default Value (значени е по умолчани ю ) - newid(). Т еперь в ы зов NewID() буд етгаранти ров ан. Послесозд ани я первой табли цы целесообразно перейти кболее э ффекти в ному и нструменту разработки – ред актору д и аграмм. Более того, рекоменд уется начи нать проекти ров ани ебазы д анны х непосред ств енно снего. 1.3. Р едакто р ди а г ра мм В строенны й в Enterprise Manager ред актор д и аграмм облад ает некоторы ми чертами Case-и нструментов разработки (таки х как ERWin, PowerDesigner и д р.). След ов ательно, глав ны м его преи мущ еств ом яв ляетсяв озмож ность графи ческого отображ ени яреляци онны х св язей меж д у табли цами . В ы д ели те в в етв и NewSklad консоли пункт Diagrams, и в контекстном меню наж ми те New Diagram. Буд ет запущ ен М астер созд ани я д и аграмм, которы й пред лож и тВ ам в ы брать табли цы базы д анны х д ляв клю чени яв д и аграмму. Е сли табли ц ещ енет, зав ерши темастер, чтобы сначала созд ать табли цы . Д ля созд ани я табли цы щ елкни те по лю бому св обод ному месту окна ред акти ров ани я д и аграммы и в контекстном меню в ы бери тепунктNew Table. Появ и тсяокно ред акти ров ани яколонок(Design Table), рассмотренноенами ранее. Д ля д обав лени я уж е сущ еств ую щ ей табли цы в д и аграмму и спользуйте пункт Add Table. Д ля и зменени я структуры табли цы (напри мер, д обав лени я нов ого поля) в ы д ели те нуж ную табли цу, и в контекстном меню зад айте реж и м просмотра ViewStandard. Т еперь атри буты табли цы мож но просмотреть и отред акти ров ать:
Ри с. 5
10 Д ля д обав лени я реляци онны х св язей в ы бери те в меню пункт RelationShips. Н апри мер, чтобы установ и ть св язь меж д у табли цами Customers и Orders по клю чу Cust_ID наж ми те кнопку New, в ы бери те и з спи ска род и тельскую (Primary Key Table) и д очерню ю (Foreign Key Table) табли цы , затем - перви чны й и в нешни й клю ч(см. ри с.6). О тметьте«галочкой» ти п ограни чени й, наклад ы в аемы х созд анной св язью : q
q
q
q
пров ерять ли ссы лочную целостность уж е сущ еств ую щ и х д анны х при созд ани и св язи ; пров ерять ли ссы лочную целостность при репли каци и (при копи ров ани и д очерней табли цы в д ругую базу д анны х); пров ерять ли ссы лочную целостность при в став ке, уд алени и и и зменени и запи сей в род и тельской табли це; в ы полнять ли каскад ноеобнов лени еи уд алени есв язанны х д анны х.
Ри с.6 Д ля созд ани я уни кальны х полей (св ойств о UNIQUE) перейд и те в окне св ойств табли цы на в клад ку Indexes/Keys. В ы бери те и з спи ска и нтересую щ ее нас поле (напри мер, ProductName) и отметьте переклю чатели Create Unique и
11 Constraint. При э том ав томати чески такж ебуд етсозд ан нов ы й уни кальны й и нд експо полю ProductName. О грани чени ев в од и мы х д анны х (CHECK) опред еляетсяна заклад кеCheck Constraints. Н апри мер, чтобы цена тов ара бы ла полож и тельна, в в ед и теPrice > 0. У пра жнени е. Созд айте с помощ ью ред актора д и аграмм табли цы Customers, Orders и Products и установ и тесв язи меж д у ни ми , какпоказано на ри с.7.
Ри с.7 1.4. Три г г еры и хра ни мы е про цедуры Т ри ггеры и храни мы епроцед уры созд аю тся на д и алектеязы ка SQL – TransactSQL, отли чаю щ емся отстанд арта SQL-92. (По при меру Oracle и Java компани я Microsoft, начи ная с в ерси и SQL Server 2005, д опускает при менени е д ля э той цели такж еи NET-язы ков C# и VB.) О тмети м след ую щ и е особенности при напи сани и три ггеров . Д опускается и спользов ать зав ершаю щ и етри ггеры (ти па AFTER) и замещ аю щ и етри ггеры (ти п INSTEAD OF). В три ггерах AFTER собы ти еуказы в аетсятак: FOR {INSERT/AFTER/DELETE}, а в замещ аю щ и х три ггерах – INSTEAD OF {INSERT/AFTER/DELETE}. Пред в аряю щ и е три ггеры (BEFORE) и спользов ать нельзя. В место ни х при меняю тся замещ аю щ и е три ггеры , очень похож и е по смы слу. О ни позв оляю т «на лету» анали зи ров ать корректность в носи мы х в табли цу и зменени й и затем, в зав и си мости отрезультатов пров ерки , осущ еств и ть э ти и зменени я уд обны м образом. О ператорROLLBACK в нутри три ггера при в од и т коткату транзакци и , в ы зв ав шей три ггер. В три ггере д оступна обнов ляемая табли ца и д в е в и ртуальны х табли цы Inserted и Deleted. В ни х наход ятся:
12 Собы ти е
Т абли ца Inserted
Т абли ца Deleted
INSERT
В став ленны езапи си
Н етзапи сей
UPDATE
Н ов ы ев ерси и запи сей
Стары ев ерси и запи сей
DELETE
Н етзапи сей
У д аленны езапи си
Т ри ггермож ет, основ ы в аясь на сод ерж ани и э ти х табли ц, осущ еств и ть д ополни тельную мод и фи каци ю д анны х, ли бо отмени ть транзакци ю , в ы зв ав шую э тот оператор. Д ляи ллю страци и напи шем простой три ггер, которы й при в став кенов ого заказа ав томати чески уменьшаетколи честв о тов ара на склад е: CREATE TRIGGER SaleTrigger ON Orders FOR INSERT AS DECLARE @ost AS int, @ID AS int /* Проверяем наличие на складе */ SELECT @ost = products.rest-orders.prodcount, @ID = orders.prod_Id FROM products, orders WHERE products.prod_id = orders.prod_id IF @ost >= 0 /* если есть */ /* отпускаем товар */ UPDATE products SET rest =@ost WHERE products.prod_id = @ID ELSE BEGIN /* Если нет – откатываем транзакцию */ RAISERROR ('На складе нет нужного количества!', 16,1) ROLLBACK END Т еперь напи шем аналоги чны й три ггер, и спользую щ и й собы ти е INSTEAD OF INSERT. CREATE TRIGGER BeforeTrigger ON Orders INSTEAD OF INSERT AS DECLARE @ost AS int, @ID AS int SELECT @ost=Products.rest - i.Prodcount, @ID= i.Prod_Id
13 FROM Products, Inserted i WHERE Products.Prod_id=i.Prod_id IF @ost >= 0 /* Проверяем */ BEGIN /* Записываем */ INSERT INTO Orders (Cust_ID, Prod_ID, ProdCount, Total, SaleDate)
SELECT Cust_ID, Prod_ID, ProdCount, Total, SaleDate FROM Inserted UPDATE Products SET Rest =@ost WHERE Products.Prod_id = @id END ELSE BEGIN RAISERROR('На складе нет нужного количества!',16,1) ROLLBACK /* Не обязательно */ END К акв и д и м, в д анном случаепослеуспешной пров ерки при ход и тсяв ручную я вно пропи сы в ать в став ку в табли цу заказов , перенося в нее д анны е и з табли цы inserted. Преи мущ еств о зд есь состои тв том, что до пр овер к и ни каки еи зменени яв табли цах непрои зв од ятся. Т ри ггермож но созд ать непосред ств енно в Enterprise Manager, щ елкнув прав ой кнопкой на и мени табли цы Orders и в ы брав «В се зад ачи - Manage Triggers» . Появ и тсяокно, в котороеВ ы д олж ны в в ести тексттри ггера. Ш аблон д лясозд ани я храни мы х процед урмож но по аналоги и получи ть через контекстное меню узла Stored Procedures консоли Enterprise Manager. У пра жнени я. Н апи ши тетри ггер, которы й перед д обав лени ем заказа пров еряет его соотв етств и е текущ и м ценам. Созд айте храни мую процед уру, которая в озв ращ ает сумму заказа в зав и си мости от его объ ема и цены тов ара. Н апи ши те три ггер, которы й при д обав лени и тов ара на склад пров еряетего нали чи е. Е сли есть, то ув ели чи в аетостаток, если нет- д обав ляетнов ую запи сь. 1.5. В ы по л нени е за про с о в SQL Server пред остав ляет д в а способа в ы полнени я запросов на язы ке SQL. Первы й способ - и спользов ани е д и зайнера запросов . Д ля э того требуется в ы д ели ть и мятабли цы в консоли управ лени яи в контекстном меню в ы брать Open Table – Query. О кно д и зайнера (ри с.8) состои т и з четы рех панелей. В ерхняя панель сод ерж и т д и аграмму св язей. С еепомощ ью уд обно в клю чать табли цы в запроси устанав ли в ать соед и нени е табли ц, «протаски в ая мы шь» меж д у табли цами . Д ля настройки столбцов и зад ани я в нешнего в и д а результата служ и т в торая панель
14 св ерху. Т ретья панель д ает в озмож ность просмотреть и отред акти ров ать текстзапроса (в ообщ е-то ееи д остаточно), третьяпанель отображ аетрезультат. В при в ед енном при мере д и зайнером бы л сгенери ров ан и в ы полнен запрос и з трех табли ц: SELECT Orders.SaleDate, Products.ProductName, Customers.CustName FROM Customers INNER JOIN Orders ON Customers.Cust_ID = Orders.Cust_ID INNER JOIN Products ON Orders.Prod_ID = Products.Prod_ID WHERE (Customers.CustName = 'Иванов').
Ри с.8 Д и зайнерпозв оляетконструи ров ать нетолько запросы в ы борки , но и в став ки , и зменени я, уд алени язапи сей и запросы по созд ани ю табли ц. Более ши роки е в озмож ности д ля разработчи ков пред остав ляет и нструмент SQL Query Analyzer, пред назначенны й д ля напи сани я скри птов , в клю чая лю бы е серверны е при лож ени я на язы ке Transact SQL. В озмож ности ути ли ты обши рны , но мы ограни чи мся при мером по созд ани ю табли ц БД . Пред полож и м, что на начальном э тапе проекти ров ани я бы л сгенери ров ан с и спользов ани ем Case-и нструмента ERWin скри пт, сод ерж ащ и й DDL-операторы созд ани я табли ц БД , и сохранен в файлеSklad.sql.
15 Запусти м SQL Query Analyzer. Д ля э того, в частности , мож но и спользов ать пункт Tools - SQL Query Analyzer глав ного меню ути ли ты Enterprise Manager. Д алеезагрузи м файл Sklad.sql и в комби ни ров анном спи ске в прав ом в ерхнем углу панели и нструментов в ы берем назв ани е базы д анны х (Test), в которой мы соби раемсясозд ать табли цы (ри с.9). Затем пров ери м си нтакси с(Ctrl+F5) и запусти м скри птна в ы полнени е(клав и ша F5). В случаеуспеха буд етв ы д ано сообщ ени е«The command(s) completed successfully» . У бед и мся, что табли цы появ и ли сь в БД , в ы брав в контекстном меню БД Test пунктRefresh.
Ри с.9 В д альнейшем объ екты БД могутбы ть отред акти ров аны и д ополнены какси спользов ани ем Query Analyzer, таки при помощ и графи чески х сред ств Enterprise Manager. 2. А дм и ни ст р и р ов а ни е SQL Server Си стема безопасности SQL Server бази руется на сред ств ах язы ка SQL и характери зуется ши роки ми в озмож ностями по управ лени ю пользов ателями . Преж д е в сего, след уетотмети ть д в еееоснов ны еособенности . К акуж е гов ори лось, серверд опускаетд в а способа аутенти фи каци и пользов ателя – и нтегри ров анны й реж и м Windows Authentication и смешанны й реж и м
16 SQL Server and Windows Authentication. В лю бой моментмож но и змени ть способ аутенти фи каци и , в ы брав в консоли управ лени япункт«Св ойств а» в контекстном меню э кземпляра сервера и зад ав на в клад ке Security реж и м SQL Server and Windows и ли Windows only. В первом случае буд ут и спользов аться как учетны е запи си Windows, таки собств енны е учетны е запи си сервера. О д нако собств енная си стема аутенти фи каци и сервера несов ершенна и при меняется сейчас д остаточно ред ко, поэ тому мы в д альнейшем буд ем рассматри в ать только и нтегри ров анны й с Windows реж и м (Windows only). В э том случае и сход ны ми объ ектами поли ти ки яв ляю тся только учетны е запи си и группы Windows. (О пераци онны еси стемы Windows 95/98, непод д ерж и в аю щ и еразграни чени ед оступа, зд есь нерассматри в аю тся.) В торой особенностью си стемы безопасности яв ляется разд елени е ролей на д в е группы – фи кси ров анны е серв ерны е роли и роли категори и «База д анны х» . Серверны ероли зад аны в каж д ом э кземпляресерв ера. У четны езапи си серв ерны х ролей и мею т указанны е в ролях разрешени я по отношени ю ко в сем базам д анны х и объ ектам д анного э кземпляра сервера. Роли категори и «База д анны х» (и разрешени я, и ми опред еляемы е) относятся кконкретной базе д анны х. (Н апомни м, что роли – при мерны е аналоги групп пользов ателей в Windows, и и спользую тсяд ляупрощ ени яад ми ни стри ров ани я.) 2.1. Ф и кс и ро ва нны е с ерверны е ро л и Ф и кси ров анны есерверны ероли мож но просмотреть, в ы брав узел Server Roles в в етв и Security консоли управ лени ясервера. Зд есь перечи слены : Роль
О пи сани е
Ч лены э той роли и мею тполны й контроль над в сем э кземпляром сервера securityadmin М ож ет созд ав ать учетны е запи си пользов ателей на серв ере и управ лять и ми Serveradmin М ож ет конфи гури ров ать э кземплярсервера и останав ли в ать его setupadmin М ож етуправ лять начальны м запуском храни мы х процед ур processadmin М ож ет управ лять процессами сервера, в том чи сле зав ершать и х команд ой KILL diskadmin Д аетправ о управ лять файлами на д и сках dbcreator Ч лены э той роли могут созд ав ать, и зменять и уд алять базы д анны х bulkadmin М ож етв ы полнять операци ю BULK INSERT sysadmin
Первоначально роль sysadmin сод ерж и т учетную запи сь ад ми ни стратора серв ера sa и в строенную группу BUILTIN\Administrators (локальны е ад ми ни страторы Windows). Состав роли и наборразрешени й мож но просмотреть, щ елкнув д в а раза по назв ани ю роли .
17 Серверны е роли не могут бы ть уд алены и ли д ополнены , но в и х состав мож но в в од и ть нов ы еучетны езапи си и ли группы , при чем э то мож етд елать лю бой член серверной роли . Н апри мер, в клю чи в в состав роли dbcreator пользов ателя сучетной запи сью Bill, мы разрешаем ему созд ав ать и станов и ться в лад ельцем баз д анны х. Н о в в ести в состав роли мож но только учетную запи сь, уж езареги стри ров анную на сервере. 2.2. Р о л и ка тег о ри и «Ба за данны х» К аж д аябаза д анны х и меетнаборфи кси ров анны х ролей, относящ и хсякней самой. У прав лять и ми мож но спомощ ью узла Roles д лябазы д анны х. Н азначени еролей при в ед ено в след ую щ ей табли це: Роль Db_owner Db_securityadmin
О пи сани е И меетполны й контроль над базой д анны х Позв оляетпользов ателю управ лять при в и леги ями , ролями и назначать и х пользов ателям Db_accessadmin Д аетправ о д обав лять и ли уд алять пользов ателей в базу д анны х Db_ddladmin Д аетправ о в ы полнять в сеоператоры опред елени яд анны х (DDL), за и склю чени ем GRANT, REVOKE, DENY Db_bacupoperator Д аетправ о пров од и ть резервноекопи ров ани е Db_datawriter Разрешаети зменять д анны ев о в сех пользов ательски х табли цах базы д анны х Db_denydatawriter Запрещ аетпи сать д анны ев о в сех пользов ательски х табли цах базы д анны х Db_datareader Разрешаетчи тать д анны ев о в сех пользов ательски х табли цах базы д анны х Db_denydatareader Запрещ аетчи тать д анны ев о в сех пользов ательски х табли цах базы д анны х public В клю чаетв сех пользов ателей БД , в том чи слеад ми ни страторов . М ож ети спользов атьсяд ляразрешени яи ли запрещ ени явсе м какой-ли бо операци и . Перв оначально роль разрешаеттолько соед и нени есБД . В отли чи е от фи кси ров анны х серверны х ролей зд есь разрешается созд ав ать лю бы е д ополни тельны е пользов ательски е роли д ля более тонкой д и фференци аци и пользов ателей по прав ам д оступа. 2.3. За щ и та ба зы данны х При обращ ени и ксерверу пользов атель д олж ен пройти т р и уров ня защ и ты – уров ень пред в ари тельной реги страци и , уров ень пользов ателя базы д анны х и уров ень пров ерки разрешени й.
18 Сначала в ы полняетсяпред в ари тельная реги страци я. После установ ки соед и нени яреги страци онны ед анны е(и мяпользов ателя и пароль) в и нтегри ров анном реж и ме защ и ты перед аю тся служ бам аутенти фи каци и Windows. Е сли реги страци онны е д анны е в ерны (при сутств ую т в SAM и ли Active Directory), Windows в озв ращ аетсерверу основ ной и д енти фи каторзащ и ты (SID) и и д енти фи каторы защ и ты групп, в которы ев ход и тпользов атель. Разумеется, таки х SID мож етбы ть несколько. Серверпросматри в аетси стемную табли цу sysxlogins базы д анны х master в пои сках пред остав ленны х и д енти фи каторов защ и ты . В э той табли цехранятся в сеи д енти фи каторы SID, зареги стри ров анны ед ля работы с сервером. Е сли не найд ен ни од и н SID, д ля которого д оступ запрещ ен, и и меется хотя бы од и н, д ля которого д оступ разрешен, пользов атель под клю чаетсяксерверу, и наче– в под клю чени и буд етотказано. Д алее на в тором уров не защ и ты соед и нени е переклю чается в контекст БД , запрошенной пользов ателем. У спешное под клю чени е не гаранти рует д оступа. Сервери щ етв запрошенной конкретной базед анны х и мяпользов ателя БД , соотв етств ую щ ее пред остав ленному SID, и в случае успеха пред остав ляет д оступ. Ч тобы э та операци я прошла успешно, ад ми ни страторБД д олж ен заранее отобрази ть реги страци онную учетную запи сь (т.е. SID) на контекстБД , т.е. сопостав и ть ей и м я пользоват еля Б Д и в клю чи ть его в состав БД . Прав а д оступа кбазед анны х опред еляю тсяи менем пользов ателя, а неучетной запи сью . Н а третьем уров не прои сход и т пров ерка прав д оступа, т.е. пров еряется, разрешены ли д анному пользов ателю запрошенны е и м операци и с табли цами , столбцами и д руги ми объ ектами базы д анны х, напри мер, в став ка д анны х. 2.4. У пра вл ени е по л ь зо ва тел ями В соотв етств и и с пред став ленной в ы ше схемой защ и ты ад ми ни страторд олж ен в ы полни ть, какми ни мум, три операци и : • Созд ани е учетны х запи сей пользов ателей сервера (если и спользуется смешанны й реж и м защ и ты сервера) и ли реги страци я учетны х запи сей Windows на сервере(если и спользуетсяи нтегри ров анны й реж и м); • Созд ани е пользов ателей БД д ля зареги стри ров анны х учетны х запи сей и в клю чени еи х в фи кси ров анны еи ли пользов ательски ероли ; • Пред остав лени еразрешени й д оступа пользов ателям и /и ли ролям. После установ ки сервера на нем зареги стри ров аны группа локальны х ад ми ни страторов и пользов атель sa, при над леж ащ и ероли sysadmin. Д ля реги страци и нов ы х учетны х запи сей в ы бери те в контекстном меню узла Security – Logins пунктменю New Login и заполни теформу, пред став ленную на ри с.10.
19 Зд есь требуется в ы брать и з спи ска учетную запи сь Windows (в д анном случае COMP\rud), указать реж и м аутенти фи каци и и и мя д омена (COMP), которому при над леж и тэ та учетнаязапи сь. Н а в клад кеServer Roles учетной запи си мож но назначи ть роль и з чи сла фи кси ров анны х серверны х ролей (напри мер, sysadmin). Н а в клад ке Database Access зареги стри ров анная учетная запи сь отображ ается на контекстБД , т.е. она в клю чается в состав пользов ателей указанны х баз д анны х. В д анном при мере (см. ри с.11) пользов ателю Rud разрешается д оступ кбазам д анны х Northwind и SqlSpyNet. Д ля послед ней базы пользов ателю назначается роль db_datawriter. Т аккакrud при над леж и т роли sysadmin, группу локальны х ад ми ни страторов Windows теперь целесообразно уд али ть ссервера.
Ри с.10 В каж д ой БД в сегд а сущ еств уетспеци альны й пользов атель dbo (в лад елец БД ). dbo мож ет в ы полнять лю бы е д ейств и я с базой д анны х. Л ю бой член серверной роли sysadmin сервера отображ ается в в и д е пользов ателя dbo в нутри каж д ой базы д анны х (в при в ед енном в ы ше при мере таки м пользов ателем д ля баз д анны х Sklad и NewSklad яв лялся rud). Т акж е лю бой объ ект, созд анны й лю бы м членом роли sysadmin сервера, при над леж и тпользов ателю dbo ав томати чески .
20 Н апри мер, если пользов атель Bill в ход и т в состав роли sysadmin серв ера и созд ает табли цу T1, T1 при над леж и т dbo и кв али фи ци руется как dbo.T1, но не как Bill.T1. С д ругой стороны , если Bill не в ход и т в роль sysadmin, но в ход и т в состав только роли db_owner базы д анны х и созд ает табли цу T1, T1 при над леж и тБи ллу и кв али фи ци руетсякакBill.T1. Пользов атель dbo обязателен в каж д ой базе д анны х и не мож ет бы ть уд ален. Т олько объ екты , созд анны е членами серверной роли sysadmin (и ли пользов ателем dbo), при над леж ат dbo. О бъ екты , созд анны е лю бы м д руги м пользов ателем, которы й нев ход и тв роль sysadmin сервера (и ли роль db owner базы д анны х), при над леж ат пользов ателю , созд аю щ ему объ ект (не dbo) и кв али фи ци рую тсего и менем.
Ри с.11 Замети м, что од на и та ж еучетнаязапи сь мож етбы ть отображ ена на несколько пользов ателей в разли чны х базах д анны х. Н апри мер, учетной запи си COMP\rud в базе Sklad соотв етств ует пользов атель dbo, а в базе Northwind – rud. И мя учетной запи си в ообщ е мож ет не сов пад ать с и менем пользов ателя. Н апри мер, созд ад и м д ляБД Sklad пользов ателяStudent на основ еучетной запи си COMP\Stud. Д ляэ того в ы д ели м БД Sklad, в ы берем в контекстном меню New User и в в ед ем Login Name и User Name, какпоказано на ри с. 12.
21 После наж ати я кнопки Permission распахи в ается окно, в котором указы в аю тся разрешени я на д оступ ктабли цам базы д анны х. В д анном случае пользов атель Student и меет разрешени ена просмотртолько од ной табли цы БД – Products (ри с. 13). При наж ати и на кнопку Columns появ ляетсяокно, позв оляю щ ееуточни ть разрешени яд ляотд ельны х колоноктабли цы (см. ри с.14).
Ри с. 12
22
Ри с.13
23
Ри с.14 Си мв ол × означает запрет. В се запреты и мею т при ори тет перед разрешени ем. Т аки м образом, пользов атель Student мож етпросматри в ать в се колонки табли цы Products, за и склю чени ем колонки Rest. Пользов ательски е роли созд аю тся и управ ляю тся аналоги чно. Сначала д ля БД В ы в ы би раете пункт меню New Role, затем в появ и в шемся окне в в од и те и мя роли и д обав ляетепользов ателей, опред еляетед ля роли необход и мы еразрешени япо д оступу кобъ ектам БД . Разумеется, в се перечи сленны е д ейств и я мож но такж е в ы полни ть непосред ств енно, в ы зы в ая SQL операторы GRANT, DENY, REVOKE и з сред ы ути ли ты Query Analyzer. 2.5. Р езервно е ко пи ро ва ни е Резервное копи ров ани е и в осстанов лени е базы д анны х мож но прод елать с помощ ью ути ли ты Enterprise Manager. Д ля э того след уетв контекстном меню узла Databases в ы брать пункты Все за да чи - Backup Database и Restore Database, соотв етств енно. В появ и в шемсяокне (ри с.15) заполняю тся: и мябазы д анны х, назв ани ерезервной копи и , ее слов есное опи сани е, и мя файла д ля хранени я резервной копи и , ти п устройств а (лента и ли д и ск). Т акж езд есь указы в аю тсяв ари анты резервного копи ров ани я: Complete - в сяБД , Differential - только запи си , и змененны епосле послед него копи ров ани я, Transaction Log - ж урнал транзакци й, File and FileGroup - файлы . Е сли необход и мо в ы полнять резервноекопи ров ани епо распи сани ю , то настрои ть распи сани емож но спомощ ью кнопки Shedule (… ).
24
Ри с.15 В осстанов лени еБД в ы полняетсяаналоги чно и нев ы зы в аетзатруд нени й. Д ля каж д ой БД в ед етсяспи сокрезервны х копи й, и з которой над о в ы брать необход и мую (напри мер, послед ню ю ) копи ю . О тд ельно обсуд и м в опросо переносеБД на д ругой сервер(напри мер, сд омашнего ПК на рабочи й). Зд есь в озмож ны д в а в ари анта. В перв ом и з ни х след ует останов и ть работу серв ера и скопи ров ать файлы БД *.mdf и *.ldf на сменны й носи тель (напри мер, на CD-RW) и ли на сетев ой ресурс. Затем – скопи ров ать файлы с носи теля на д и ск назначени я, в ы брать в Enterprise Manager в узле Databases пункт меню Attach Database (при соед и ни ть БД ) и указать местонахож д ени е БД , и мя БД и учетную запи сь пользов ателя, которы й станет в лад ельцем БД . Зд есь, каки в InterBase, нед опускается указы в ать в и мени файла сетев ы ересурсы . В торой способ основ ан на резервном копи ров ани и и нетребуетостанов ки серв ера. Сначала созд аетсярезервнаякопи яБД и переноси тсяна нуж ны й компью тер. Д алее необход и мо в Enterprise Manager а) созд ать БД , б) заполни ть ее и з резервной копи и . Зд есь над о обязательно установ и ть переклю чатель Restore в полож ени е From Device, указать ти п устройств а Disk и полноеи мя файла с резервной копи ей.
25 О тмети м, что в обои х в ари антах после переноса БД след ует в ни мательно просмотреть и при необход и мости занов о отред акти ров ать состав пользов ателей БД , роли и разрешени я. 2.6. Экс по рт и и мпо рт данны х Под э кспортом и и мпортом д анны х пони мается перемещ ени е и нформаци и меж д у д в умя гетерогенны ми и сточни ками . В SQL Server д ля э той цели и спользуется программны й комплекс Data Transformation Services, в клю чаю щ и й несколько ути ли т. Сейчас мы рассмотри м только од ну и з ни х, DTS Import/Export Wizard (мастерDTS). С помощ ью мастера DTS мож но не только копи ров ать и нформаци ю в SQL Server и ли и з него, но и перед ав ать д анны е и з InterBase в Oracle, и з MS Excel в DB2 и т.п. При перед аче прои сход и т конв ерти ров ани е форматов д анны х, созд ани е табли ц и заполнени е и х и нформаци ей. Т акая уни в ерсальность д ости гнута благод аря и спользов ани ю технологи и ADO, специ ально разработанной Microsoft д ля работы c гетерогенны ми и сточни ками . При э том требуетсянали чи ена компью тереADO пров айд ера д ля и спользуемы х ти пов д анны х. ADO пров айд ер– э то COM-объ ект, пред остав ляю щ и й набори нтерфейсов д ля работы с д анны ми . Д ля многи х СУ БД ADO пров айд еры устанав ли в аю тсяав томати чески при и нсталляци и Windows. Д ляд руги х, напри мер, InterBase, и х над о д обы в ать отд ельно (и ли пи сать самостоятельно). В качеств е при мера перенесем созд анную нами БД с сервера SQL на сервер Oracle. В глав ном меню Enterprise Manager в ы берем Tools – DTS – Export Data.
Ри с.16 В окне ри с. 16 в ы берем и з спи сков и мя БД (Database - NewSklad) и и мя пров айд ера (Data Source - Microsoft OLE DB Provider for SQL Server) д ля д анны х, которы екопи рую тся(Source).
26 В след ую щ ем окне в ы би раем, куд а копи ров ать д анны е. У казы в аем в качеств е Destination – Oracle Provider for OLE DB. Н астраи в аем св ойств а соед и нени я, и спользуякнопку Properties. В окнери с.17 в в од и м и мяБД Oracle, и мяи пароль пользов ателя Oracle, в схему которого буд ет прои сход и ть копи ров ани е, и пров еряем под клю чени е.
Ри с. 17 В след ую щ ем окне, котороеназы в аетсяSelect Source Tables and Views, в ы би раем табли цы БД и сточни ка, под леж ащ и е копи ров ани ю . Зд есь в аж но не торопи ться. М астерав томати чески в ы берет под ход ящ и е, по его мнени ю , ти пы полей БД Oracle, но в о и збеж ани е в озмож ны х оши бок лучше наж ать кнопку Transform (преобразов ани е) напроти в и мени табли цы , пров ери ть намерени я мастера и при необход и мости зад ать ти пы полей в ручную . Д ляпросмотра и ред акти ров ани я результатов копи ров ани я в оспользуйтесь сред ств ами Oracle, напри мерOracle Enterprise Manager Console. К сож алени ю , прочи танное В ами пособи е не могло охв ати ть в сех св ед ени й, необход и мы х д ля работы с SQL сервером. За его рамками остали сь, в частности , язы кTransact SQL и органи заци я д оступа кд анны м. В утешени е уместно при в ести в ы сказы в ани е Н аполеона. Н а в опрос, в чем заклю чается секрет его в ели ки х побед , Н аполеон отв ети л: «О чень просто. Сначала я в в язы в аю сь в схв атку, а затем д ейств ую по обстоятельств ам» . Е сли В ам уд алось в ы полни ть перв ую часть э того рецепта, буд ем счи тать цели д анного пособи я д ости гнуты ми .
27 П р и л ож ени е. Ти пы да нны х SQL
Server
BIT
Ц елоечи сло рав ное0 и ли 1.
INT, INTEGER
32-би тное целое чи сло в д и апазоне от -2,147,483,648 д о 2,147,483,647.
SMALLINT
16-би тноецелоечи сло в д и апазонеот32,768 д о 32,767
TINYINT
8-би тноецелоечи сло в д и апазонеот0 д о 255
DECIMAL[(P[,S])], NUMERIC, DEC
Д есяти чноечи сло сфи кси ров анной точностью в д и апазонеот-10 38 -1 д о 1038 – 1. P – макси мальноеколи честв о знаков в чи сле. S – коли честв о знаков после запятой
MONEY
Д енеж ны й ти п д анны х. Ц елое64-би тноечи сло, млад ши е4 разряд а которого отв ед ены под д робную часть. М ож етхрани ть чи сла в д и апазонеот -922,337,203,685,477.5808 д о 922,337,203,685,477.5807.
SMALLMONEY
А налоги чен ти пу Money, но 32-разряд ны й и ограни чен д и апазоном от-214,748.3648 д о 214,748.3647
FLOAT, DOUBLE PRECISION
Ч и сло сплав аю щ ей точкой в д и апазонеот-1.79E + 308 д о 1.79E + 308.
REAL
Ч и сло сплав аю щ ей точкой в д и апазоне от -3.40E + 38 д о 3.40E + 38
DATETIME
Д ата и в ремя в д и апазонеот1 янв аря 1753 г. д о 31 д екабря9999 г. сточностью 3.33 ми лли секунд ы
SMALLDATETIME
Д ата и в ремяв д и апазонеот1 янв аря1900 г. д о 6 и ю ня 2079 г. сточностью д о 1 ми нуты
TIMESTAMP
У ни кальны й в пред елах БД и д енти фи катор. Э тот ти п д анны х не сод ерж и т в ремени и гаранти рует ли шь, что полеэ того ти па уни кально в рамках базы д анны х.
UNIQUEIDENTIFIER
Глобальны й уни кальны й и д енти фи катор. Стати сти чески уни кальное значени е. Н ад э ти м ти пом д анны х опред елены операци и =, <>, IS NULL и IS NOT NULL
CHAR[(N)], CHARACTER
Строка фи кси ров анной д ли ны . N – д ли на строки . М акси мальнаяд ли на – 8000 си мв олов
VARCHAR[(N)], CHARACTER VARYING(N)
Строка переменной д ли ны . N – д ли на строки . М акси мальнаяд ли на – 8000 си мв олов
TEXT
28 Строка прои зв ольной (д о 2,147,483,647 си мв олов ) д ли ны
NCHAR[(N)], Строка фи кси ров анной д ли ны в форматеUNICODE. N NATIONAL CHARACTER – д ли на стр оки . М акси мальнаяд ли на – 4000 си мв олов NVARCHAR[(N)]
Строка переменной д ли ны в формате UNICODE. N – д ли на строки . М акси мальнаяд ли на – 4000 си мв олов
NTEXT, NATIONAL TEXT
Строка прои зв ольной (д о 1,073,741,823 си мв олов ) д ли ны
BINARY[(N)], VARYING VARBINARY
Д в ои чны е д анны е фи кси ров анной д ли ны , д о 8000 байт. N – д ли на д анны х
VARBINARY[(N)]
Д в ои чны е д анны е переменной д ли ны , д о 8000 байт. N – д ли на д анны х
IMAGE
Д в ои чны е д анны е прои зв ольной (д о 2,147,483,647 байт) д ли ны 64-би тноецелоечи сло М ож етхрани ть д анны епрои зв ольного ти па
BIGINT SQL_VARIANT
Ли т ер а т ур а К ренке Д . Т еори я и практи ка построени я баз д анны х / Д . К ренке. – СПб. : Пи тер, 2005. – 859 с. 2. Х отторн Р. Разработка баз д анны х Microsoft SQL Server на при мерах / Р. Х отторн. – М . : И зд ательски й д ом «В и льямс» , 2001. – 464 c 3. Разработка при лож ени й баз д анны х в сред еDelphi : учеб.-метод . пособи епо специ альности "При клад наяматемати ка и и нформати ка" 010200 / сост.: В .Г. Руд алев , Ю .А . К ры ж анов ская. - В оронеж : Л О П В ГУ , 2003. — Ч . 2 . — 38 с. 1.
С ОД Е Р Ж АНИ Е В ведени е ................................................................................................3 1. П ро екти ро ва ни е ба зы данны х .......................................................4 1.1. У станов ка сервера........................................................................4 1.2. Созд ани ебазы д анны х.................................................................5 1.3. Ред акторд и аграмм.......................................................................9 1.4. Т ри ггеры и храни мы епроцед уры .............................................11 1.5. В ы полнени езапросов ................................................................13 2. Ад ми ни с три ро ва ни е SQL Server..................................................15 2.1. Ф и кси ров анны есерверны ероли ...............................................16 2.2. Роли категори и «База д анны х» .................................................17 2.3. Защ и та базы д анны х ..................................................................17 2.4. У прав лени епользов ателями .....................................................18 2.5. Резервноекопи ров ани е..............................................................23 2.6. Э кспорти и мпортд анны х .........................................................25 П ри л о жени е. Ти пы данны х SQL Server .........................................27
29 Л и тера тура ..........................................................................................28 Состав и тель Руд алев В алери й Геннад ьев и ч Ред актор Т и хоми ров а О .А .