Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Détacher, Copier, Attacher

Opérations peu connues sous SQL Server et pourtant très pratiques, la possibilité d'attacher et de détacher une base de données est très utile. SQL Server repose sur un ou plusieurs fichiers pour stocker ses données et son journal de transaction (il est possible en option de stocker les données dans une partition brute, mais peu conseillé en pratique, car peu maintenable).

Ces fichiers sont au minimum au nombre de 2, un portant généralement l'extension MDF (il est le fichier principal de la base de données), et un autre portant généralement l'extension LDF (c'est le journal de transaction). Il peut y avoir d'autres fichiers de données portant généralement l'extension NDF.

Pour localiser les fichiers de base de données (Positionnez vous sur la bonne base de données) :

-- Sur SQL Server 2005
SELECT physical_name FROM sys.database_files
-- Sur SQL Server 2000
SELECT filename FROM sysfiles

Gardez cette liste sous la main, elle vous permettra de retrouver l'intégralité des fichiers, en effet s'il vous en manque un, vous risquez ne pas pouvoir rattacher la base de données.

Pour détacher la base de données, on fera appel à :

-- Détache la base de données, en conservant les index Full Text
EXEC sp_detach_db @dbname = N'AdventureWorks', @keepfulltextindexfile=N'true'
-- Détache la base de données et supprime les index Full Text
EXEC sp_detach_db @dbname = N'AdventureWorks'

Maintenant la base de données n'est plus disponible sur le serveur (si celle-ci n'avait pas d'utilisateurs connectés). Pour pouvez déplacer à souhait les fichiers de base de données, au besoin sur un autre serveur. A noter qu'il est possible d'utiliser cette opération entre des versions différentes, mais uniquement de la plus petite vers la plus grande (ex 2000 vers 2005). Vous pouvez sans problème réaliser une copie de ses fichiers pour les attacher sur un autre serveur.

Maintenant procédons à l'opération inverse consistant à attacher les fichiers à un serveur de base de données (sous SQL Server 7/2000, il faudra utiliser sp_attach à la place).

CREATE DATABASE MaBase ON (FILENAME = 'c:\monchemin\monfichier.mdf') FOR ATTACH

Spécifier le fichier MDF suffit généralement, si les fichiers de base de données sont présents dans les mêmes chemins que sur le serveur d'origine. Si ce n'est pas le cas il faut spécifier manuellement tous les fichiers dans le CREATE DATABASE.

A ce point votre base de données est à nouveau disponible. Si vous êtes sur un nouveau serveur il est conseillé de passer par la procédure suivante avant de déplacer ou de copier les données : http://blogs.codes-sources.com/christian/archive/2007/06/22/SQL-Server-Copier-logins-sauvegarde-deplacement-base-migration.aspx

Si vous souhaitez simplement déplacer des fichiers de base de données sur le même serveur, il existe un article de la Knowledge Base de Microsoft : http://support.microsoft.com/kb/224071/en-us

Il décrit en détails comment procéder y compris pour les bases de données systèmes. Très important à connaître car il est fréquent d'avoir à déplacer ces bases de données sur un serveur de production, pour par exemple domicilier tempdb (base de données temporaire) sur un disque séparé des autres.

A noter que l'assistant de copie de base de données réalise la même genre d'opération pour vous, en vous offrant la possibilité de copier les comptes de connexion du serveur en une seule étape.

Bonne copie…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié mardi 26 juin 2007 10:48 par christian
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- SharePoint 2013: Préparation de la migration - Création des site Templates dans 2010 et 2013 par Blog Technique de Romelard Fabrice le 08-20-2014, 16:31

- [ #Yammer ] How to change interface language ? Comment changer la langue de l’interface ? par Le blog de Patrick [MVP SharePoint] le 08-20-2014, 14:21

- Onedrive Sync Engine Host : CPU à 100% par Le petit blog de Pierre / Pierre's little blog le 08-06-2014, 22:22

- SharePoint : Bug sur la gestion des permissions et la synchronisation Office par Blog Technique de Romelard Fabrice le 07-10-2014, 11:35

- SharePoint 2007 : La gestion des permissions pour les Workflows par Blog Technique de Romelard Fabrice le 07-08-2014, 11:27

- TypeMock: mock everything! par Fathi Bellahcene le 07-07-2014, 17:06

- Coding is like Read par Aurélien GALTIER le 07-01-2014, 15:30

- Mes vidéos autour des nouveautés VS 2013 par Fathi Bellahcene le 06-30-2014, 20:52

- Recherche un passionné .NET par Tkfé le 06-16-2014, 12:22

- [CodePlex] Projet KISS Workflow Foundation lancé par Blog de Jérémy Jeanson le 06-08-2014, 22:25