Delphi - Adatbázis módosítás lehetőségei

Transact SQL 8. rész

forráskód letöltése
Múltkori cikkben az adatbázisok létrehozásával és megszüntetésével foglalkoztunk. Most azt a kérdéskört vizsgáljuk, hogy egy létrehozott adatbázisnak a tulajdonságait miként változtathatjuk meg menetközben. 01.sql
Első lépésként létrehozunk egy adatbázist Sample01 névvel, melyen a változtatásokat szemléltetjük.
CREATE DATABASE Sample01
ON
(
   NAME = 'Sample01_dat',
   FILENAME = 'c:\Sample01.mdf'
)

02.sql
Egy meglévő adatbázis módosításához az ALTER DATABASE utasítást kell meghívnunk. Ezt követően annak az adatbázisnak a nevét kell megadnunk, amelyet módosítani szeretnénk.
A következő megadandó információ az elvégzendő funkció lesz. Ha például egy adatbázishoz szeretnénk egy adatállományt hozzáadni, akkor ehhez az ADD FILE funkciót kell használnunk. Az új állomány létrehozásához szükséges adatokat egy a CREATE DATABASE-nél már ismertetett állomány szekcióban adhatunk meg.
ALTER DATABASE Sample01
ADD FILE
(
   NAME = 'Sample01_B_dat',
   FILENAME = 'c:\Sample01_B.mdf',
   SIZE = 10,
   MAXSIZE = 100
)

03.sql
Természetesen nem csak adatállományt adhatunk egy meglévő adatbázishoz, hanem egy új napló állományt is. Ekkor az előző példához képest csak annyi a változás, hogy most az ADD LOG FILE funkciót kell meghívnunk.
ALTER DATABASE Sample01
ADD LOG FILE
(
   NAME = 'Sample01_B_log',
   FILENAME = 'c:\Sample01_B.ldf',
   SIZE = 10,
   MAXSIZE = 100
)

04.sql
Ha valamit hozzáadunk egy adatbázishoz, akkor nyilvánvaló, hogy annak eltávolítására is van lehetőségünk. Egy adatállomány eltávolításához a végrehajtandó funkció a REMOVE FILE lesz, amely után az eltávolítandó állomány logikai nevét kell megadnunk. Az alábbi példa eltávolítja az előbbiekben hozzáadott adatállományt. Ilyen esetben a fizikai állomány is törlésre kerül.
ALTER DATABASE Sample01
REMOVE FILE Sample01_B_dat

05.sql
A tranzakció napló állományának az eltávolításához szintén a REMOVE FILE funkciót használhatjuk, nyilván itt a napló állomány logikai nevét kell megadnunk.
ALTER DATABASE Sample01
REMOVE FILE Sample01_B_log

06.sql
Állománycsoport hozzáadására az ADD FILEGROUP funkció szolgál. Paraméterként a létrehozandó állománycsoport nevet kell megadnunk.
ALTER DATABASE Sample01
ADD FILEGROUP Group1
A csoport név létrehozása után, ha veszünk fel új állományokat, akkor ezeket rögtön egy már meglévő csoportba irányíthatjuk, ha használjuk a TO FILEGROUP záradékot és ezt követően megadjuk a csoport nevét.
ALTER DATABASE Sample01
ADD FILE
(
   NAME = 'Sample01_C_dat',
   FILENAME = 'c:\Sample01_C.mdf',
   SIZE = 10,
   MAXSIZE = 100
),
(
   NAME = 'Sample01_D_dat',
   FILENAME = 'c:\Sample01_D.mdf',
   SIZE = 10,
   MAXSIZE = 100
)
TO FILEGROUP Group1

07.sql
Egy állománycsoport tulajdonságainak módosítására szolgál a MODIFY FILEGROUP funkció, melynek meg kell adni, hogy melyik állománycsoportot szeretnénk módosítani, valamint az alábbiak közül valamely kulcsszót:
  • READONLY – az állománycsoportban lévő objektumok csak olvashatóak lesznek, azokat módosítani nem lehet. Az elsődleges (PRIMARY) állománycsoport nem lehet READONLY. Ezt a tulajdonságot csak akkor állíthatjuk be, ha kizárólagos módon férünk hozzá az adatbázishoz.
  • READWRITE – törli a READONLY beállítás hatását, vagyis ettől kezdve az objektumok már módosíthatóak is. Ezt a tulajdonságot csak akkor állíthatjuk be, ha kizárólagos módon férünk hozzá az adatbázishoz
  • DEFAULT – alapértelmezett állománycsoport kijelölése. Egy adatbázisban csak egy lehet. A CREATE DATABASE az elsődleges (PRIMARY) állománycsoportot jelöli ki alapértelmezettnek. Új táblák és indexek az alapértelmezett állománycsoportba kerülnek, ha létrehozásukkor nem volt más előírva.
use Master
ALTER DATABASE Sample01
MODIFY FILEGROUP Group1 READONLY
Állománycsoport módosításakor a Master tábla legyen az aktív.
Az elsődleges állománycsoportra a [PRIMARY] sztringgel hivatkozhatunk.
ALTER DATABASE Sample01
MODIFY FILEGROUP [PRIMARY] DEFAULT

08.sql
Most nézzük, miként tudjuk törölni az előző példákban létrehozott és csak olvashatóra állított Group1 nevű állománycsoportot. Először aktiváljuk a master adatbázist.
use master
Ezt követően töröljük a READONLY beállítást az állománycsoport tulajdonságaiból.
ALTER DATABASE Sample01
MODIFY FILEGROUP Group1 READWRITE
Most már hozzáférhetünk és így eltávolíthatjuk a Sample01_C_dat és Sample01_D_dat állományokat.
ALTER DATABASE Sample01 REMOVE FILE Sample01_C_dat
ALTER DATABASE Sample01 REMOVE FILE Sample01_D_dat
Végül a REMOVE FILEGROUP funkció hívásával törölhetjük a megadott nevű állománycsoportot. Fontos tudni, hogy csak üres állománycsoport törölhető, ezért ha tartalmaz állományt, azokat előbb törölnünk kell.
ALTER DATABASE Sample01
REMOVE FILEGROUP Group1


09.sql
Egy adatbázishoz nem csak hozzáadhatunk egy állományt, hanem módosíthatjuk is annak tulajdonságait. Ehhez első lépésként hozzáadunk egy új adatállományt az adatbázisunkhoz, hogy legyen mit módosítani.
ALTER DATABASE Sample01
ADD FILE
(
   NAME = 'Sample01_E_dat',
   FILENAME = 'c:\Sample01_E.mdf',
   SIZE = 2
)
Ezt követően a MODIFY FILE funkció hívásával elvégezhetjük például az aktuális állomány méret növelését 2 MB-ról 4 MB-ra az alábbi módon:
ALTER DATABASE Sample01
MODIFY FILE
(
   NAME = 'Sample01_E_dat',
   SIZE = 4
)
Ezzel a módszerrel a FILENAME, SIZE, FILEGROWTH, és MAXSIZE tulajdonságok változtathatók meg. A méret módosítása esetén az új méret csak nagyobb lehet az aktuálisnál.

10.sql
Egy adatbázis nevét is megváltoztathatjuk. Ehhez a MODIFY NAME funkciót kell használnunk, mely után megadjuk az adatbázisunknak szánt új nevet.
ALTER DATABASE Sample01
MODIFY NAME = Sample02

11.sql
Miután megváltozott az adatbázisunk neve, ne felejtsük el immár az új nevet használva elérni azt.
Lehetőség van még a rendezési sorrend megváltoztatására is. Ehhez a COLLATE kulcsszó és az új rendezési algoritmus megnevezésének megadása szükséges.
ALTER DATABASE Sample02
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()

12.sql
Utolsó példánkban pedig nem marad más hátra, mint törölni a létrehozott adatbázist a már ismertetett módon, hogy a teszt után ne maradjon feleslegesen hátra semmi.
use master
DROP DATABASE Sample02



Transact SQL cikksorozat