Microsoft SQL Server/Bases de données
Bases de données système
modifierAprès installation, le serveur fournit quatre bases de données système, indispensable à son bon fonctionnement :
- master : enregistre les informations du serveur SQL dans des vues du système.
- model : modèle pour créer des bases vierge.
- msdb : stocke les tâches planifiées.
- tempdb : ressources temporaires, utilisables par tous les utilisateurs.
Elles peuvent donc servir à l'administration. Par exemple, pour lister toutes les bases de données du serveur avec leurs tailles, on passe par master[1] :
EXECUTE master.sys.sp_MSforeachdb 'USE [?]; EXEC sp_spaceused'
ou avec leurs tailles et dates de backup :
select *
FROM master.sys.databases db
LEFT OUTER JOIN msdb.dbo.backupset b ON db.name = b.database_name
On peut aussi voir les paramètres de configuration de SQL Server :
SELECT * from master.sys.configurations order by NAME
Création
modifierPour créer une base de données il faut définir le fichier dans lequel elle sera stockée :
CREATE DATABASE [MaBase] ON PRIMARY
( NAME = N'MaBase', FILENAME = N'D:\MSSQL10.MSSQLSERVER\MSSQL\DATA\MaBase.mdf' , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'MaBase_log', FILENAME = N'D:\MSSQL10.MSSQLSERVER\MSSQL\DATA\MaBase_log.ldf' , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
Lecture
modifierEnsuite pour la sélectionner, il faut soit le faire en début de script :
USE MaBase;
SELECT * FROM MaTable;
Soit appeler tous les objets par leur chemin absolu, ex :
SELECT * FROM [MaBase].[dbo].[MaTable];
Déplacement
modifierPour déplacer une base de données, il faut préalablement la détacher, puis ultérieurement la rattacher :
USE master
GO
EXEC sp_detach_db 'MaBase', 'true';
GO
-- Déplacement
EXEC sp_attach_db
@dbname = 'MaBase',
@filename1 = N'D:\MSSQL10.MSSQLSERVER\MSSQL\DATA\MaBase2016.mdf',
@filename2 = N'D:\MSSQL10.MSSQLSERVER\MSSQL\DATA\MaBase2016.ldf';
Depuis MSSQL 2005 il est préférable d'altérer la base au lieu de la détacher et rattacher[2].
ALTER DATABASE MaBase SET OFFLINE;
ALTER DATABASE MaBase MODIFY FILE (
NAME='D:\MSSQL10.MSSQLSERVER\MSSQL\DATA\MaBase.mdf',
FILENAME='D:\MSSQL10.MSSQLSERVER\MSSQL\DATA\MaBase2016.mdf'
);
ALTER DATABASE MaBase SET ONLINE;