Aller au contenu

Microsoft SQL Server/Bases de données

Un livre de Wikilivres.

Bases de données système

[modifier | modifier le wikicode]

Après installation, le serveur fournit quatre bases de données système, indispensable à son bon fonctionnement :

  1. master : enregistre les informations du serveur SQL dans des vues du système.
  2. model : modèle pour créer des bases vierge.
  3. msdb : stocke les tâches planifiées.
  4. 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

Pour 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

Ensuite 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];

Pour 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';

Logo

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;