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

- Compte rendu : SharePoint / O365 : des pratiques pour une meilleure productivité par The Mit's Blog le 12-12-2014, 18:11

- [TFS] Suppression des feature SQL Entreprise en masse par Blog de Jérémy Jeanson le 12-06-2014, 09:18

- [Clean Code] règles de nommage par Fathi Bellahcene le 12-04-2014, 22:59

- Windows To Go 10 et Upgrades impossibles par Blog de Jérémy Jeanson le 12-04-2014, 21:38

- SharePoint OnPremise: Statistiques d’utilisation pour traquer les sites fantomes par Blog Technique de Romelard Fabrice le 12-03-2014, 10:28

- SharePoint 2007: Script PowerShell permettant le backup de toutes les collections de sites d’une application Web par Blog Technique de Romelard Fabrice le 12-02-2014, 10:00

- Xamarin : un choix précieux par .net is good... C# is better ;) le 12-01-2014, 15:10

- Office 365: Comparaison des composants pour préparer votre migration de SharePoint 2007 vers Office 365 par Blog Technique de Romelard Fabrice le 11-28-2014, 16:20

- Créer un périphérique Windows To Go 10 ! par Blog de Jérémy Jeanson le 11-21-2014, 04:54

- RDV à Genève le 12 décembre pour l’évènement “SharePoint–Office 365 : des pratiques pour une meilleure productivité !” par Le blog de Patrick [MVP Office 365] le 11-19-2014, 10:40