Tworzenie baz danych w SQL SERVER

W RDBMS które obsługują wiele baz danych na jednej instancji, mamy do dyspozycji polecenie create database, które to tworzy pustą bazę danych:

create database nowa_pusta;

gdy chcemy zacząć korzystać z nowo utworzonej bazy należy się na nią przełączyć ( wybrać ją).
W przypadku MySQL oraz SQLServer wykorzystujemy do tego celu polecenie use.
use nowa_pusta -- by korzystac z bazy utworzonej

Oczywiście mamy możliwość dodawania wielu dodatkowych parametrów wpływających na ustawienia bazy.
W przypadku SQL Server, za pomocą języka T-SQL możemy takie parametry odpowiednio modyfikować:


create database nowa_pusta on
( NAME = N'nowa_pusta', FILENAME = N'C:\temp\nowa_pusta.mdf' , SIZE = 167872KB , MAXSIZE = UNLIMITED, FILEGROWTH = 16384KB )

W powyższym przykładzie zostanie utworzona baza danych z plikiem o rozmiarze 168MB, W ten sposób system alokuje odpowiednią ilość miejsca na dysku. Wspomaga to wydajność zapisu danych. Pozostawienie MAXSIZE z wartością unlimited może skutkować wyczerpaniem miejsca na dysku.

create database nowa_pusta on
( NAME = N'nowa_pusta', FILENAME = N'C:\temp\nowa_pusta.mdf' , SIZE = 167872KB , MAXSIZE = UNLIMITED, FILEGROWTH = 16384KB )
LOG ON
( NAME = N'nowa_pusta_log', FILENAME = N'C:\temp\nowa_pusta.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 16384KB )

powyższy przykład utworzy bazę danych ze ściśle zdefiniowanymi plikami danych oraz logów. w Pliku LDF przechowywane są informację odnośnie wykonywanych(i wykonanych) transakcji. W przypadku problemów przy zatwierdzaniu transakcji RDBMS (SQL Server) wspomaga się tym plikiem by wykonać rollback oraz przywrócić bazę do stanu spójności.

Można utworzyć bazę z wieloma plikami przechowującymi dane.

create database nowa_pusta on primary
( NAME = N'nowa_pusta', FILENAME = N'C:\temp\nowa_pusta.mdf' , SIZE = 167872KB , MAXSIZE = UNLIMITED, FILEGROWTH = 16384KB )
,FILEGROUP [nowa_pusta2] ( NAME = N'nowa_pusta2', FILENAME = N'C:\temp\nowa_pusta2.mdf' , SIZE = 50MB, MAXSIZE = UNLIMITED, FILEGROWTH = 5MB )
LOG ON
( NAME = N'nowa_pusta_log', FILENAME = N'C:\temp\nowa_pusta.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 16384KB )

teraz tworząc tabele możemy je utworzyć w 2 różnych plikach, możemy w ten sposób np rozmieszczać mniej istotne dane na wolniejszych napędach.

create table nazwa (id int,nazwa varchar(255)) on primary

wykonanie tego polecenia będzie skutkować utworzeniem tabeli w pliku który został podany jako pierwszy podczas tworzenia bazy danych. W przypadku pominięcia informacji gdzie ma być utworzona tabela, będzie to równoznaczne z utworzeniem jej w pierwszym pliku. Warto dodać iż standardowo jest tworzony jeden plik bazy danych.


create table nazwa (id int,nazwa varchar(255)) on nowa_pusta2

skutkuje utworzeniem tabeli w pliku należącym do grup nowa_pusta2. Mimo iż każda grupa(filegroup) może zawierać wiele plików, w poleceniach SQL, można przypisywać tylko do poziomu grupy plików(przynajmniej z tego co mi wiadomo).