La manière la plus simple de créer une base de données est d'utiliser l'outil d'administration SQL Server Enterprise Manager, qui fournit une interface graphique aux commandes Transact-SQL et aux procédures stockées qui accomplissent ces tâches. La figure 5-1 montre la boîte de propriétés d'une base de données, qui représente la commande Transact-SQL CREATE DATABASE.
Seul utilisateur avec le rôle sysadmin ou un utilisateur qui a obtenu la permission CREATE DATABASE par un utilisateur avec le rôle sysadmin, peut soumettre une commande CREATE DATABASE. la commande est utilisée pour créer une nouvelle base de données.
Lorsque vous créez une nouvelle base, SQL Server copie la base de données model, qui est une base de données de référence. En plus des objets qui vous pourriez inclure dans la base model, 18 tables systèmes et 20 vues systèmes sont inclues dans la base model, ce qui veut dire que chaque nouvelle base contient aussi ces 38 objets système. SQL Server utilise ces objets pour la définition et la maintenance de chaque base de données.
Figure 5-1. La boîte de propriétés pour la création d'une nouvelle base de données Test.
(Trois des vues système sont fournies pour des soucis de compatibilité avec les anciennes versions de SQL Server et ne servent pas.) Les objets système sont ceux dont le nom commence par sys. Si vous n'avez pas ajouté d'autres objets à la base model, ces 38 objets système seront le seul contenu de chaque nouvelle base créée. Chaque commande Transact-SQL ou procédure stockée qui créée, modifie ou supprime un objet SQL Server provoquera des entrées dans les tables système.
ATTENTION
Ne modifiez pas directement les tables système. En faisant cela, la base deviendrait illisible. Les modifications directes sont effectuées par un administrateur système via la procédure stockée sp_configure.
Une nouvelle base de données doit avoir une taille de 1 MB ou plus, et le fichier de base de données primaire doit être aussi grand que le fichier de base de données primaire de la base model. La plupart des arguments de la commande CREATE DATABASE ont des valeurs par défaut pour rendre la création d'une base aussi simple que cela:
CREATE DATABASE testdb |
Cela va créer la base testdb, avec une taille par défaut, sur deux fichiers et dont les noms logiques —testdb et testdb_log—sont dérivés du nom de la base de données. Les fichiers physiques correspondants seront testdb.mdf and testdb_log.ldf. Ils seront créés dans le répertoire de données par défaut, déterminé au moment de l'installation de SQL Server.
NOTE
Si vous utilisez SQL Server Enterprise Manager pour créer la base de données, le fichier logique sera testdb_Data (au lieu de test), et le fichier physique sera testdb_data.mdf.
Le compte de connexion SQL Server utilisé pour la création de la base est le propriétaire de la base (database owner), ou DBO, et aura toujours le nom d'utilisateur DBO sur cette base. la taille par défaut du fichier de données est la taille du fichier de données primaire de la base model, et la taille par défaut du fichier journal est 0.5 MB. Quelque soit le nom de la base, testdb, est sensitif suivant l'ordre de tri choisi à l'installation. Si le choix a été par celui par défaut, la nom n'est pas sensitif. (notez que la commande CREATE DATABASE n'est pas sensitive quelque soit l'option choisie.)
Les autres options par défaut s'appliquent à la nouvelle base et à ses fichiers. Si la zone LOG ON n'est pas spécifiée, mais que des fichiers de données sont spécifiés, un fichier journal sera automatiquement créé et dont la taille sera égale à 25 pour-cent de la somme des tailles de tous les fichiers de données.
Pour les fichiers, si la zone MAXSIZE n'est pas spécifiée, le fichier grossira jusqu'à la saturation du disque. Les zones SIZE et MAXSIZE peuvent être spécifiées en MB (par défaut) ou en KB. La valeur par défaut de FILEGROWTH est 10 pour-cent et la valeur minimum est 64 KB.
Voici un exemple complet de la commande CREATE DATABASE, qui spécifie trois fichiers et toutes les propriétés de chaque fichier:
CREATE DATABASE Archive ON PRIMARY ( NAME = Arch1, FILENAME = 'c:\mssql7\data\archdat1.mdf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = Arch2, FILENAME = 'c:\mssql7\data\archdat2.ndf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), LOG ON ( NAME = Archlog1, FILENAME = 'c:\mssql7\data\archlog1.ldf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20) |