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

- Technofolies, votre évènement numérique de l'année par Le Blog (Vert) d'Arnaud JUND le 09-26-2014, 18:40

- Xamarin : From Zero to Hero par Fathi Bellahcene le 09-24-2014, 17:35

- Conférences d’Automne 2014 par Le blog de Patrick [MVP SharePoint] le 09-24-2014, 14:53

- [TFS] Supprimer un projet de Visual Studio Online par Blog de Jérémy Jeanson le 09-22-2014, 20:42

- Nouveau blog en anglais / New blog in english ! par Le blog de Patrick [MVP SharePoint] le 09-18-2014, 18:42

- [ #Yammer ] From Mailbox to Yammer and back / De votre messagerie vers Yammer et retour ! par Le blog de Patrick [MVP SharePoint] le 09-15-2014, 11:31

- [ #Office 365 ] New service settings panel / Nouveau panneau de paramétrage des services par Le blog de Patrick [MVP SharePoint] le 09-11-2014, 08:50

- Problème de déploiement pour une démo SharePoint/TFS? par Blog de Jérémy Jeanson le 09-10-2014, 21:52

- [ #Office365 ] Delve first impressions / Premières impressions sur Delve par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 16:57

- [ #Office365 ] How to change Administration console language ? / Comment changer la langue de la console d’administration ? par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 08:25