Delphi - Adatbázis létrehozása, törlése

Transact SQL 7. rész

forráskód letöltése
Transact SQL mai témánk az adatbázisok létrehozási módjainak, illetve a már létező adatbázisok törlésének áttekintése. A cikkből arra is fény derül, hogy miként tudunk csatlakoztatni egy már meglévő adatbázis állományt az SQL szerverhez. 01.sql
Adatbázis létrehozásra a CREATE DATABASE utasítás szolgál. E két szót követi a létrehozandó adatbázisnak a neve, majd az ON kulcsszó után megadhatjuk az adatbázis állomány specifikációit. Egy-egy ilyen specifikációt zárójelek közé kell tennünk, így választva el azokat egymástól. Ezen belül a NAME paraméterben adható meg az adott állomány logikai neve, valamint a FILENAME után az állomány fizikai elérési útvonala és neve. Mivel egy adatbázis több állományból is állhat, ezért szükséges minden specifikációban megadni az aktuális logikai és fizikai nevet.
CREATE DATABASE Teszt01
ON
(
   NAME = 'Teszt01_dat',
   FILENAME = 'c:\Teszt01.mdf'
)

02.sql
További lehetőségként megadhatunk még egy-egy ilyen állomány specifikáción belül egy SIZE paramétert is, melyben az adott állomány kezdő méretét adhatjuk meg. Itt a MB az alapértelmezett mértékegység, így ha ezt használjuk, akkor nem kötelező jelölnünk. A MB jelölésen kívül használhatjuk a KB, GB és TB mértékegységeket. A megadott méret minimálisan 512KB kell hogy legyen, illetve a model adatbázis méreténél nagyobb érték. A SIZE használata nem kötelező, ha elhagyjuk, akkor a lehető legkisebb kezdeti állomány méret lesz használva.
Megadható egy állomány maximális mérete is a MAXSIZE paraméterben. A mértékegységek megegyeznek az előbbiekkel. A MAXSIZE használata nem kötelező, ha elhagyjuk, akkor az adott állomány mérete addig nőhet, amíg csak van hely a háttértáron.
CREATE DATABASE Teszt02
ON
(
   NAME = 'Teszt02_dat',
   FILENAME = ' c:\Teszt02.mdf',
   SIZE = 50,
   MAXSIZE = 1TB
)
A LOG ON kulcsszavak után adhatók meg a tranzakció napló állományára vonatkozó specifikációk, melynek szabályai egyeznek az eddig ismertetettel. Használata nem kötelező, ha elhagyjuk, akkor a tranzakció napló állománya automatikusan létrejön. Az állomány neve az adat állomány nevéből lesz képezve a „_log” karakterek kiegészítésével. Mérete az összes adatállomány összméretének 25%-a lesz.
LOG ON
(
   NAME = 'Teszt02_log',
   FILENAME = ' c:\Teszt02.ldf',
   SIZE = 10,
   MAXSIZE = 500
)

03.sql
Több fizikai állományra bontott adatbázis létrehozása esetén nincs más tennivalónk, mint hogy zárójelek között felsoroljuk az egyes állományokhoz tartozó specifikációkat. Ezeket az állományokat csoportosíthatjuk is. Van egy elsődleges csoport, melyet a PRIMARY kulcsszó jelöl. Az alábbi példába a 'Teszt03_A_dat' és 'Teszt03_B_dat' kerül az elsődleges csoportba.
Ezen kívül létrehozhatunk több, tetszőleges nevű csoportot, melyet a FILEGROUP kulcsszó után adhatunk meg. A csoport nevének megadása után a már szokásos specifikációk révén adhatjuk meg, hogy melyik állomány kerüljön az adott csoportba.
Alábbi példában a Group1 csoportba a 'Teszt03_C_dat', a 'Teszt03_D_dat' és a 'Teszt03_E_dat' kerül, míg a Group2 csoportba a 'Teszt03_F_dat' állomány kap helyet.
Mivel minden fizikai állománynál megadhatunk tetszőleges elérési útvonalat, így lehetőségünk van arra, hogy az adatbázis egyes részeit, illetve a tranzakció naplót, akár egy másik meghajtón helyezzük el és ezzel jelentősen növelhetjük a rendszerünk elérhetőségét.
CREATE DATABASE Teszt03
ON PRIMARY
(
   NAME = 'Teszt03_A_dat',
   FILENAME = 'c:\Teszt03_primary_a.mdf'
),
(
   NAME = 'Teszt03_B_dat',
   FILENAME = 'c:\Teszt03_primary_b.mdf'
),
FILEGROUP Group1
(
   NAME = 'Teszt03_C_dat',
   FILENAME = 'c:\Teszt03_group1_c.mdf'
),
(
   NAME = 'Teszt03_D_dat',
   FILENAME = 'c:\Teszt03_group1_d.mdf'
),
(
   NAME = 'Teszt03_E_dat',
   FILENAME = 'c:\Teszt03_group1_e.mdf'
),
FILEGROUP Group2
(
   NAME = 'Teszt03_F_dat',
   FILENAME = 'c:\Teszt03_group2_f.mdf'
)
LOG ON
(
   NAME = 'Teszt03_log',
   FILENAME = 'c:\Teszt03.ldf'
)

04.sql
Adatbázis létrehozásánál megadhatjuk azt is, hogy a maximális méret nincs korlátozva. Ehhez a MAXSIZE paraméternek az UNLIMITED értéket kell adnunk.
CREATE DATABASE Teszt04
ON
(
   NAME = 'Teszt04_dat',
   FILENAME = 'c:\Teszt04.mdf',
   MAXSIZE = UNLIMITED
)
További lehetőségünk az állomány specifikációban az állomány automatikus növekedésének a szabályozása. Ehhez a FILEGROWTH paraméternek kell értéket adnunk. Amikor az adatállomány, vagy a tranzakció napló állomány mérete már nem elegendő a munkához, akkor az SQL szerver növeli ezt a méretet. Ennek mértékét veszi a FILEGROWTH paraméterből. A megadható mértékegységek itt is a KB, MB, GB, TB, illetve használhatunk % jelet is, mely arra utasítja a rendszert, hogy az aktuális méretének a megadott százalékával növelje az állomány méretét. Alapértelmezett mértékegység a MB. Ha nem adjuk meg a FILEGROWTH paramétert, akkor az alapértelmezett érték 10% lesz, de minimum 64 KB. A megadott érték minden esetben 64 KB-ra lesz kerekítve.
LOG ON
(
   NAME = 'Teszt04_log',
   FILENAME = 'c:\Teszt04.ldf',
   FILEGROWTH = 10
)

05.sql
Ha már adottak az adatbázis állományok és csak csatlakoztatni szeretnénk azokat az SQL szerverhez, akkor ezt úgy tehetjük meg, hogy a CREATE DATABASE-t használva megadunk egy állomány specifikációt, majd ezt követően a FOR ATTACH záradékot használjuk. Ez esetben nem jön létre új adatbázis, hanem csak a megadott kerül be az SQL szerverbe.
CREATE DATABASE Teszt05
ON
(
   NAME = 'Teszt05_dat',
   FILENAME = 'c:\Teszt05.mdf'
)
FOR ATTACH

06.sql
Egy adatbázis létrehozásánál megadhatjuk azt is, hogy az abban lévő adatok milyen módszer szerint legyenek rendezve. Ehhez a COLLATE záradékot kell használnunk, mely után a rendezési nevet kell megadnunk.
CREATE DATABASE Teszt06
ON
(
   NAME = 'Teszt06_dat',
   FILENAME = 'c:\Teszt06.mdf'
)
COLLATE Hungarian_BIN
A lehetséges neveket és azok leírását megkaphatjuk az alábbi utasítás futtatásával:
SELECT * FROM ::fn_helpcollations()

07.sql
Már meglévő adatbázist a DROP DATABASE utasítással törölhetünk. Paraméterként meg kell adnunk a törlendő adatbázis nevét. A használat során legyünk körültekintőek, mert a törlés a fizikai állományokkal együtt végérvényesen megtörténik.
A DROP DATABASE használatakor fontos, hogy a Master táblának kell aktívnak lennie, hogy az ott található adott táblára vonatkozó információk is törlésre kerülhessenek.
USE Master
DROP DATABASE Teszt01

08.sql
A DROP DATABASE használatakor arra is lehetőségünk van, hogy egy lépésben több adatbázist töröljünk. Ez esetben vesszővel elválasztva kell felsorolnunk a törlendő adatbázisok neveit.
USE Master
DROP DATABASE Teszt02, Teszt03, Teszt04, Teszt06



Transact SQL cikksorozat