You are on page 1of 34

Создавање и управување

на бази на податоци на
SQL Server
Оснивни поими
Работа во SQL Server

Лабараториски вежби 1
Содржина
► Основни поими
► Базата на податоци на SQL Server
► Системни бази на податоци
► Фајлови на бази на податоци
► Создавање на база на податоци
► Фајлови групи на база на податоци
► Променување на база на податоци
► Бришење на база на податоци
► Добивање информации за база на податоци
► Премесување на база на податоци на SQL Server
► Архивирање и востановување на база на податоци
► Раширување на база на податоци
► Свивање на база на податоци
► Преименување на база на податоци
Основни поими
► Базите на податоци содржат организирана по специјален начин
информација.
► Според структурата се делат на: хиерархиски, мрежови и
релациони.
► Современите системи за управување на бази на податоци
(СУБП) ја чуваат и обработуваат информацијата, користејки
релациониот модел (моделот ентитет-релација).
► Системот за управување на релациони бази на податоци
(Relational Database Management Systems - RDBMS) ги управува
сите податоци во таблици.
► Податоците во базата се чуваат под форма на таблици, полиња и
записи.
► Табица е специјална организирана форма на податоци и секоја
таблица треба да има уникатно име.
► Таблиците чуват информација за даден објект (пр. продукт,
клиент) или дејствие (пр. продажби, порачки) и е збир од редови
(записи) и колони (атрибути, полиња).
► Колоната во таблицата се користи да чува одреден вид на
податок за објект или дејствие (пр. имиња, дати, цени и
др.).
► Редовите ги опишуваат сите атрибути на оделен објект
или дејност (пр. податоци за конкретен продукт,
продажба и др)
► СУБП дава целосна контрола на процесот на
дефинирањето, работата и споделувањето на податоците.
► СУБП ги овозможува следните можности:
 Дефинирање на податоците – дефинирање на
таблиците, типот на податоците, релации помеѓу и
задава ограничувања.
 Обработка на податоците – избор на оделни полиња,
филтрирање, сортирање, бришење, додавање и др.
 Контрола на податоците – актуелизација на податоци
од сите корисници, споделување на податоци, дозвола
за читање и т.н.
► Базата на податоци на SQL Server:
 е збир од објекти – логички компоненти, кој ги
гледа корисникот (таблици, ограничувања,
изгледи, зачувани процедури, тригери);
 е реализирана физички како фајлови на HDD и
може да oпфаќа множество фајлови на
операциониот систем.
► Системот за управување на релациона база на
податоци користи SQL (Structured Query Language).
► SQL e стандардизиран од ANSI (American Nacional
Standards Instiute) и ISO (Internacional Organization for
Standardization).
► SQL Server Management Studio преставува графичен
интерфејс кон командите на SQL, a Transact-SQL
(Query) извршува различни задачи (команди, упити
или системни процедури).
Системни бази на податоци
► Секоја инсталација на SQL Server вклучува автоматски
неколку бази податоци:
 master содржи системни таблици, чува информација од
инсталацијата на серверот како целина, така и за сите
создадени бази на податоци од страна на корисникот;
 model се користи како шаблон за сите бази на податоци, кој
се создават во системот. По секое создавање на нова база на
податоци SQL Server прави копија на model.
 tempdb ги содржи сите времени таблици и времени сочувани
процедури. За разлика од сите други бази на податоци таа се
создава одново, не се востановува, по секое рестартирање
на SQL Server сите предходни создадени објекти од
корисникот се губат.
 msdb се користи од услугата SQL Server Agent, која се
користи за извршување на планирани дејствија како
задачи за дуплирање и архивирање.
 ReportServer$MSSQLSERVER1 е примерна бази на
податоци.
Фајлови на бази на податоци
► Базата на податоци опфаќа најмалку два фајла на базата на
податоци;
 еден за податоците;
 еден за дневникот на трансакции.
► SQL Sever ги вклучува следните три типа фајлове на базата на
податоци:
 главни фајлови со податоци – има точно еден главен фајл со
податоци, кој освен податоци чува и информација за сите останати
фајлови во базата и има разширение .mdf;
 второстепени фајлове – може да има нула или повеќе второстепени
фајлове со податоци и имат разширение .ndf;
 фајлове-дневници – има најмалко еден фајл-дневник, кој содржи
информација, потребна за востановување на сите трансакции во
базата и имат разширение .ldf.
► Сите фајлове на базата имат неколку својства, преку кој се дава
логичко име на фајла, физическо име на фајла, почетен размер,
максимален размер и стапка на зголемување.
Создавање на база на податоци
► Нај брз начин за создавање на база е преку Management Studio
на SQL Server – командата New Database… од контекстното
мени на папката Database (Сл. 1);

Сл.1 Создавање на база во Management Studio


► Transact-SQL – конструкција за создавање на база го
има следниот обшт вид:
CREATE DATABASE database_name
[ ON [PRIMARY]
   [ (
        [ NAME = logical_file_name, ]
        FILENAME = 'os_file_name'
        [, SIZE = size ]
        [, MAXSIZE = {max_size | UNLIMITED} ]
        [, FILEGROWTH = growth_increment ]
      ) [, … ]
    ]
[, {FILEGROUP filegroup_name <file_spec> [, …]}[, …]
]
[ LOG ON <file_spec> [, …] ]
► Параметри за дефиниране на характеристиките на
фајловите на базата:
 NAME логичко име за фајла; се користи името на базата;
 FILENAME физичко име на файла, т.е. име на фајл од
операциониот систем, вклучен е и патот на фајлот; по
подразбиране database_name.mdf и database_name_log.ldf во
директоријата, која е укажана при инсталирането на SQL Server;
 SIZE размер на фајлот; се користи размерот на главниот фајл во
базата model за главниот фајл со податоци на новата база ; за
второстепениот фајл и фајлот-дневник, се користи размер 1MB;
 MAXSIZE максимален размер, до кој фајлот може да нарасне. Ако
не е зададено, ќе нарасне до исполнување на HDD, т.е. размерот
на фајлот, ќе се смета за неограничен. Неограничено нараснување
се задава и со клучовиот збор UNLIMITED;
 FILEGROWTH стапка на нараснување на базата, е цел број.
Вредноста 0 означува одсуствување на нараснување; задава се во
MB, KB или % (по подразбирање во MB). Вредноста по
подразбирање е 10%, а минималната можност е 64 KB. Ако
стапката е зададена во процент, таа се определува како процент
од размерот на фајлот во моментот на раширување.
Пример:
1) Проста форма за создавање на база:
CREATE DATABASE MyDatabase
 Се создава база со два фајла со логичко име MyDatabase и
MyDatabase_log и физичко MyDatabase.mdf и
MyDatabase_log.ldf во директоријата по подразбирање.
2)
CREATE DATABASE MyDatabase
ON
  ( NAME = MyDatabase_data,
    FILENAME = ‘C:\SQL\MyDatabase_data.mdf',
    SIZE = 3MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 1MB )
LOG ON
  ( NAME = MyDatabase_log,
    FILENAME = ‘C:\SQL\MyDatabase_log.ldf',
    SIZE = 1MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 1MB )
3)
CREATE DATABASE Sales
ON PRIMARY
  ( NAME = Sales_data,
    FILENAME = ‘C:\SQL\Sales_data.mdf',
    SIZE = 10 MB,
    MAXSIZE = 50 MB,
    FILEGROWTH = 5 MB ),
  ( NAME = Sales_data2,
    FILENAME = ‘C:\SQL\Sales_data2.ndf',
    SIZE = 10 MB,
    MAXSIZE = 50 MB,
    FILEGROWTH = 5 MB )
LOG ON
  ( NAME = Sales_log,
    FILENAME = ‘C:\SQL\Sales_log.ldf',
    SIZE = 10 MB,
    MAXSIZE = 25 MB,
    FILEGROWTH = 5 MB )
Фајлови групи на база на податоци
► Можно е групирање на фајловете со податоци во фајлова група
за полесно администрирање. Типовете фајлови групи се:
 главна фајлова група – го содржи главниот фајл со податоците и
сите фајлови, кој не се поставени во друга фајлова група. Може да
има точно еден главен фајл со податоци. Ако клучовиот збор
PRIMARY не е искористен, првиот изброен список од фајлове во
конструкцијата станува главна фајлова група;
 дефинирана од корисникот фајлова група – создава се, кога се
користи клучов збор FILEGROUP во командите CREATE DATABASE
или ALTER DATABASE;
 фајлова група по подразбирање – ги содржи страниците на сите
таблици и индекси, които не се поставени во некоја конкретна
фајлова група. При создавање на базата главната фајлова група е
по подразбирање. Може да се определи создадена од корисникот
фајлова група по подразбирање со конструкцијата:
ALTER DATABASE database_name
MODIFY FILEGROUP filegroup_name DEFAULT
Пример: Создавање на база со три фајлови групи – главна фајлова
група со фајлове Sales_data и Sales_data2; фајлова група SalesGrp1
со фајловиSalesGrp1_data1, SalesGrp1_data2, SalesGrp1_data3;
фајлова група SalesGrp2 со фајлове SalesGrp2_data1 и
SalesGrp2_data2.

CREATE DATABASE Sales


ON PRIMARY
  ( NAME = Sales_data,
    FILENAME = 'c:\SQL\Sales_data.mdf',
    SIZE = 10 MB,
    MAXSIZE = 50 MB,
    FILEGROWTH = 15 % ),
  ( NAME = Sales_data2,
    FILENAME = 'c:\SQL\Sales_data2.ndf',
    SIZE = 5 MB,
    MAXSIZE = 50 MB,
    FILEGROWTH = 10 % ),
FILEGROUP SalesGrp1
  ( NAME = SalesGrp1_data1,
    FILENAME = 'c:\SQL\SalesGrp1_data1.ndf',
    SIZE = 2 MB,
    MAXSIZE = 10 MB,
    FILEGROWTH = 1 MB ),
  ( NAME = SalesGrp1_data2,
    FILENAME = 'c:\SQL\SalesGrp1_data2.ndf',
    SIZE = 1 MB,
    MAXSIZE = 5 MB,
    FILEGROWTH = 1 MB ),
  ( NAME = SalesGrp1_data3,
    FILENAME = 'c:\SQL\SalesGrp1_data3.ndf',
    SIZE = 1 MB,
    MAXSIZE = 5 MB,
    FILEGROWTH = 1 MB ),
FILEGROUP SalesGrp2
  ( NAME = SalesGrp2_data1,
    FILENAME = 'c:\SQL\SalesGrp2_data1.ndf',
    SIZE = 2 MB,
    MAXSIZE = 10 MB,
    FILEGROWTH = 1 MB ),
  ( NAME = SalesGrp2_data2,
    FILENAME = 'c:\SQL\SalesGrp2_data2.ndf',
    SIZE = 5 MB,
    MAXSIZE = 50 MB,
    FILEGROWTH = 10 % )
LOG ON
  ( NAME = Sales_log,
    FILENAME = 'c:\SQL\Sales_log.ldf',
    SIZE = 5 MB,
    MAXSIZE = 25 MB,
    FILEGROWTH = 5 MB ),
  ( NAME = Sales_log2,
    FILENAME = 'c:\SQL\Sales_log2.ldf',
    SIZE = 5 MB,
    MAXSIZE = 25 MB,
    FILEGROWTH = 1 MB )
Променување на база на податоци
Општ вид на T-SQL конструкцијата за променување
на база податоци е:

ALTER DATABASE database_name


{  ADD FILE <file_spec> [, …]
       [TO FILEGROUP filegroup_name]
 | ADD LOG FILE <file_spec> [, …]
 | ADD FILEGROUP filegroup_name
 | REMOVE FILE logical_file_name
 | REMOVE FILEGROUP filegroup_name
 | MODIFY FILE <file_spec>
 | MODIFY FILEGROUP filegroup_name
                    filegroup_property
}
► Конструкцијата ALTER DATABASE се користи, за да се промени
дефиницијата на базата по еден од следните начини:
 да се добави еден или повеќе фајлове со податоци кон
базата;
 да се добави еден или повеќе фајлове-дневници кон базата;
 да се добави фајлова група кон базата;
 да се отстрани фајл или фајлова група од базата. Фајл може
да се отстрани само, ако е празен. Отстранувањето на фајл
води до бришење му како фајл во операциониот систем;
отстранувањето на фајлова група води до отстранување на
сите фајлови од неа;
 да се промени постоечки фајл по еден од следните начини:
► да се зголеми вредноста на параметарот SIZE;
► да се променат вредностите на параметрите MAXSIZE и
FILEGROWTH;
► да се промени вредноста на параметарот NAME за фајловете
само од базата на податоци tempdb, така што таа промена нема
да влезе во сила, се до дека не се рестартира SQL Server.
►   да се промени постоечка фајлова група по еден од следните
начини:
 да се маркира фајлова група како READONLY, така што да не се
допушта изменување на објектите во неа. Главната фајлова група не
може да биде маркирана како READONLY;
 да се маркира фајлова група како READWRITE, кое дозволува промени
на објектите во неа;
 да се маркира фајлова група по подразбирање за базата податоци.
Конструкцијата ALTER DATABASE може при секоја употреба да
изврши само едно од изброените дејствија.
Пример:1) Маркира на фајлова група SalesGrp1 по подразбирање:
ALTER DATABASE Sales
MODIFY FILEGROUP SalesGrp1 DEFAULT
2) Добавување фајл со податоци:
ALTER DATABASE Sales
ADD FILE
( NAME = New1_data,
  FILENAME = 'c:\SQL\new1_data.ndf',
  SIZE = 5 MB,
  MAXSIZE = 100 MB,
  FILEGROWTH = 5 MB )
3) Додавање на два фајла со податоци во фајловата група salesgrp1:
Alter database sales
Add file
( Name = new2_data,
  Filename = 'c:\SQL\new2_data.Ndf',
  Size = 5 mb,
  Maxsize = 100 mb,
  Filegrowth = 5 mb ),
( name = new3_data,
  Filename = 'c:\SQL\new3_data.Ndf',
  Size = 5 mb,
  Maxsize = 100 mb,
  Filegrowth = 5 mb )
To filegroup salesgrp1

4) Добавување фајл-дневник:
ALTER DATABASE Sales
ADD LOG FILE
( NAME = New1_log,
FILENAME = 'c:\SQL\new1_log.ldf',
SIZE = 5 MB,
MAXSIZE = 100 MB,
FILEGROWTH = 5 MB )
 
5) Отстранување фајл-дневник:
ALTER DATABASE Sales
REMOVE FILE New1_log

6) Зголемување размер на фајла со податоци New2_data:


ALTER DATABASE Sales
MODIFY FILE
  ( NAME = New2_data,
    SIZE = 20 MB )

7) Маркира главната фајлова група по подразбирање:


ALTER DATABASE Sales
MODIFY FILEGROUP [PRIMARY] DEFAULT

8) Маркира фајловата група SalesGrp1 како READONLY:


ALTER DATABASE Sales
MODIFY FILEGROUP SalesGrp1 READONLY
Бришење на база на податоци
► Можно е бришење на една не системна база,
така што фајловите и нивните податоци се
бришат од диско на серверот. Базата се брише
за секогаш и не може да се востанови без
предходно создадена архивна копија.

 Користе се конструкцијата DROP DATABASE


database_name или
 командата Delete од контекстното мени на
содветната база во Management Studio.
Добивање информации за база на податоци
► За една база ние можеме да добиеме информација при
користење на прозорот Properties за базата во
Management Studio, така и со процедурите sp_helpdb и
sp_helpfile
 Sp_helpdb дава информација за сите бази или за конкретна за
која името е дадено во параметар. Пример:
EXEC sp_helpdb
или
EXEC sp_helpdb ‘MyDatabase’
sp_helpfile дава информација за сите фајлови на базата или за
конкретен фајл кое име е дадено како параметар. Пример:
EXEC sp_helpfile
или
USE MyDatabase
EXEC sp_helpfile ‘MyDatabase_data’
Премесување на база на податоци на
SQL Server
► Одделувањето и присоединувањето е начин за создавање на
пренослива база. Користат се процедурите sp_detach_db и
sp_attach_db.
► користење на процедурата sp_detach_db
sp_detach_db [@dbname =] 'dbname'
► Одделувањето базата од серверот. Фајловите на
одстранетата база и понатаму постојат, но операционата
система ги гледа како затворени фајлови, и можат да се
копират, преместуват или бришат како другите фајлови на
операционата система. На пример:
EXEC sp_detach_db 'MyDatabase‘
► Базата податоци може да биде присоединета одново со:
sp_attach_db:
sp_attach_db [@dbname =] 'dbname',
             [@filename1 =] 'filename_1' [, …]
► Ако сите фајлове и понатаму постојат на почетното место
(Пример, ако треба само да се копира базата на друг сервер),
се што е потребно да се определи, е местото на главниот фајл
со податоци. Тој содржи информација за сите фајлове, кој
припаѓат на базата. Пример:
EXEC sp_attach_db 'MyDatabase',
                  'c:\MySQLdata\MyDatabase_data.mdf'
► Процедурите за одделувањето и присоединувањето на база можат
да бидат користени само од системниот администратор.
► Во SQL Server Management Studio одделувањето на базата од
серверот се извршува со командата Tasks | Detach Database...
од контексното мени за базата.
► Во SQL Server Enterprise Manager присоединувањето на базата
кон серверот се извршува со командата Tasks | Attach…
Database од контексното мени на папката Database.
Архивирање и востановување на база
на податоци
► Архивирањето и востановувањето на
базата од архивна копија дозволува
целосно востановување на податоците
при појава на проблеми во системот.
Копија востановувањето на базата може
да се направи брзо и лесно со командите
Tasks | Backup Database… и Tasks |
Restore Database… од контекстното мени
на соодветната база или на папката
Database во Management Studio (Сл.2).
► На пример нека е создадено актуелна
архивна копија на базата MyDatabase,
така како е покажано на Сл. 3.

Сл. 3 Архивирање на базата MyDatabase

Сл.2 Команди за архивирање и


востановување на база во Management
Studio Express
► Ако базата е избришана и е потребно да одново да се
востанови или треба да се премести на друг сервер преку
создадената архивна копија, од диалоговата рамка Restore
Database се избира опцијата From device (Сл.5).

Сл. 5 Избирање на опцијата From device


► По што се отвора нов прозорец Specify Backup. Со притискање
на копчето Add се отвара диалогова рамка Locate Backup File,
која дава опција да се избере архивното копие, од кое ќе се
изврши востановување на базата (сл.6).

Сл.6
► Во страницата Options на диалоговата рамка Restore Database може
изрично да се определи уредот, папката, во која да се создават
фајловете на базата, така и нивните имиња (Сл. 7)

Сл.7 Определување на имињата на фајловите на базата, уредот и папката, во


која да се создадат
► Ако база со исти име има на серверот, или се јавува некој друг
проблем ние може да ги користиме Restore options
Раширување на база на податоци
► Раширување на една база може да се изврши, кога се користи
Management Studio (Сл. 8).

Сл.8 Раширување на база преку


зголемување на вредноста во
текстовото поле Initial Size (MB)
и/или прибавување на фајлове на
базата

► или конструкцијата ALTER DATABASE, која дозволува


зголемување на размерот на некое од постоечките фајлове на
базата и прибавување на дополнителни фајлове на базата.
► Раширување на базата може да се изврши автоматски, кога некој
од фајловете на базата се пополни. Новиот размер на фајла во
тој случај се определува од зададената стапка на нараснување и
размера на фајла во моментот на раширување.
Свивање на база на податоци
► Свивање на база преку користење на T-SQL
 Командата DBCC SHRINKDATABASE ги свива сите фајлови во
базата (DBCC – database consistency checker). Таа го има
следниот синтаксис:
DBCC SHRINKDATABASE
    ( database_name [, target_percent]
     [, {NOTRUNCATE | TRUNCATEONLY}] )
► Задават се следните аргументи:
► database_name е логичко име на базата, која треба да се
свие.
► target_percent е процент на слободното пространство, което
треба да биде оставено во секој фајл на базата.
► Со NOTRUNCATE се укажува да се остави ослободено фајлово
пространство во фајловете, а не да се враќа на операционата
система.
► Со TRUNCATEONLY се укажува враќање на секое
неискористено пространство во фајловете со податоци на
операционата система. Когато се користи таа опција,
параметарот target_percent се игнорира.
На пример:
DBCC SHRINKDATABASE ( MyDatabase, 10, NOTRUNCATE )
 Командата DBCC SHRINKFILE свива одреден фајл во
моменталната база. Таа го има следниот синтаксис:
DBCC SHRINKFILE
( {file_name | file_id}
  { [, target_size]
    |[, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}] } )
► Параметрите file_name и file_id се користат за определување
на одреден фајл на базата. Вредноста на file_id може да се
установи со искористување на системната процедура
sp_helpdb.
► Параметарот target_size го определува саканиот размер на
фајлот во MB. Ако не е зададен, фајлот се свива толко, колко е
можно.
► EMPTYFILE укажива преместување на сите податоци од
одреден фајл во други фајлове од истата фајлова група. Таа
опција дозволува фајлот да биде избришан по подразбирање,
кога се користи конструкцијата ALTER DATABASE.
► Опциите NOTRUNCATE и TRUNCATEONLY имат аналогично
значење како и предходните конструкции.
Например:
1) DBCC SHRINKFILE ( MyDatabase_data )
2) DBCC SHRINKFILE ( 2 )
3) Нека во базата се додаде фајл со податоци:
USE MyDatabase
GO
ALTER DATABASE MyDatabase
ADD FILE
( NAME = MyDatabase_data1,
  FILENAME = 'c:\MySQLdata\MyDatabase_dat1.ndf')
► После тоа во фајла се пополнуват податоци и ако се наложи да биде
избришан, е потребно да се изполни следната конструкција:
DBCC SHRINKFILE ( MyDatabase_data1, EMPTYFILE )
► Фајлот веќе е празен и може да биде отстранен:
ALTER DATABASE MyDatabase
REMOVE FILE MyDatabase_data1 
 Свиване на база данни со користење на Management Studio. Користе се
командата Tasks | Shrink Database… од контекстното мени на соодветната
база.
► Можно е да се зададе реорганизирање на страниците со податоци, така
да бидат преместени во почетокот на фајловете со податоци;
ослободувањето на неискористеното пространство; график за
периодично свиване на базата.
Преименување на база на податоци
► Извршува се со системната процедура sp_renamedb,
која го има следниот вид:
sp_renamedb [ @dbname = ] 'old_name' ,
             [ @newname = ] 'new_name'
► Необходимо е да се исполнат следните дејствија:
 Базата треба да се установи во режим на работа со еден
корисник.
 Исполнува се процедурата за преименување на базата.
 Преименуваната база се установува во режим на работа со
много потребители.
На пример:
EXEC sp_dboption 'MyDatabase', SINGLE_USER , TRUE
EXEC sp_renamedb 'MyDatabase', 'new_name'
EXEC sp_dboption 'new_name', SINGLE_USER, FALSE

You might also like