Вы находитесь на странице: 1из 5

Attacher une base de donnes MS-SQL

dont le journal de transactions est manquant


Par Fabien Celaia

Date de publication : 20 novembre 2005


Dernire mise jour : 15 janvier 2006

Attacher une base de donnes MS-SQL dont le journal de transactions est manquant par Fabien Celaia

Problmatique et prrequis..........................................................................................................................................3
Solution.........................................................................................................................................................................3

-2-

Copyright 2006 Fabien Celaia. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://fadace.developpez.com/mssql/nolog/

Attacher une base de donnes MS-SQL dont le journal de transactions est manquant par Fabien Celaia

Problmatique et prrequis
Vous tes administrateur d'un serveur SQL.
Une de vos bases de donnes doit tre rcupre. Vous n'en aviez aucun backup, mais la copie du fichier de
donnes (le MaBase.mpd). Malheureusement, vous n'aviez pas cr bon de sauvegarder le journal de transaction,
ou le fichier .ldb est corrompu
Le manque de fichier de transaction vous empche t'utiliser un sp_attache_db, un create database attach ou
tout autre assistant de Microsoft SQL Enterprise Manager
Que faire ???

Solution
Crer deux bases de donnes : une MaBase et une db_recup.
Il est important que votre premire base se nomme comme la base d'origine, ce nom apparaissant dans la table
sysfiles.
Create database MaBase
Create database db_recup

Arrter votre instance


shutdown

Via l'explorateur Windows, remplacer le fichier cr MaBase.mpd par votre fichier Mabase.mpd (renommer donc
mabase.mpd en MaBase.mpd).

-3-

Copyright 2006 Fabien Celaia. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://fadace.developpez.com/mssql/nolog/

Attacher une base de donnes MS-SQL dont le journal de transactions est manquant par Fabien Celaia

Ouvrez Microsoft Enterprise Manager, allez


sur les proprits de votre instance arrte.
Dans l'onglet gnral, il y a un bouton Startup
Parameters

Rajoutez-y le traceflag 3608 qui permet de


redmarrer l'instance en ne faisant la phase
de rcupration que de la base master.
En effet, si on s'avisait de remonter la base
MaBase en l'tat, on pourrirait l'instance car
cette base serait corrompue, le journal de
transaction ne correspondant pas du tout
celui que le serveur attend.

Redmarrons l'instance.
Crons ensuite sous Dos un fichier Transferts.sql comprenant les lignes suivantes:
set nocount on
GO

-4-

Copyright 2006 Fabien Celaia. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://fadace.developpez.com/mssql/nolog/

Attacher une base de donnes MS-SQL dont le journal de transactions est manquant par Fabien Celaia

select 'SELECT INTO db_recup..'+name+' FROM MaBase..'+name


from MaBase..sysobjects
where type='U'
GO

Excutons-le
isql -Usa -P*** -S VotreInstance -i transfert.sql -o transfert2.sql

ditons ensuite le fichier rsultant transfert2.sql, supprimons toutes les lignes qui ne commencent pas par un 'select
into'. Veillons ce que le fichier se termine par un retour la ligne.
Ensuite, excutons les deux commandes suivantes
echo GO >> transfert2.sql
isql -Usa -P*** -S VotreInstance -i transfert2.sql

Cette dernire commande a d recopier vos tables dans la base db_recup. Ne vous reste plus qu' rcuprer les
ordres de cration d'objets (procdures stockes, vues, triggers) de MaBase via Microsoft Enterprise Manager et
les rejouer sur db_recup.
la fin de cette opration,

Supprimez la base db_corrupt via drop database db_corrupt


Arrtez l'instance via shutdown
supprimer le traceflag -T3608 des paramtres de dmarrage
Redmarrez votre instance normalement

-5-

Copyright 2006 Fabien Celaia. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,
images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
http://fadace.developpez.com/mssql/nolog/

Вам также может понравиться