IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Create avec rebuild log


Sujet :

Administration SQL Server

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 348
    Points : 604
    Points
    604
    Par défaut Create avec rebuild log
    Bonjour,

    Je voudrai recréer une base avec l'option FOR ATTACH_REBUILD_LOG car problème sur le fichier log, mais ma base est constituée d'un fichier MDF et un BLOB.

    Alors est ce que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE DATABASE MaBase ON (FILENAME = 'E:\DATA\MaBase.mdf') FOR ATTACH_REBUILD_LOG
    Suffit ou pas ?

    Ou il faut mettre le BLOB aussi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE DATABASE MaBase ON (FILENAME = 'E:\DATA\MaBase.mdf', FILENAME = 'E:\DATA\MaBase.ndf') FOR ATTACH_REBUILD_LOG
    Merci.

    @+
    SDR.
    "ceux qui vivent, ce sont ceux qui luttent."

  2. #2
    Membre du Club
    Homme Profil pro
    unix
    Inscrit en
    Septembre 2016
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : unix
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 83
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Cela n'a aucun sens. Vous êtes en train de mélanger le niveau logique et le niveau physique.
    Votre base est constituée d'un deuxième groupe de fichiers, ce qui apparaît bien avec l’extension .ndf, donc annulez la première proposition, c'est de n'importe quoi.
    Pour la deuxième solution, je doute qu'elle serait fonctionnelle.
    Je te conseille de faire une restauration de ton dernier backup.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par agdid04 Voir le message
    Ou il faut mettre le BLOB aussi ?
    Impérativement oui... !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE DATABASE MaBase ON (FILENAME = 'E:\DATA\MaBase.mdf', FILENAME = 'E:\DATA\MaBase.ndf') FOR ATTACH_REBUILD_LOG
    C'est bien ,la bonne syntaxe. Il reconstruira un journal vierge à l'identique de celui créé lors de la naissance de la base.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre du Club
    Homme Profil pro
    unix
    Inscrit en
    Septembre 2016
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : unix
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 83
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par SQLpro Voir le message

    C'est bien ,la bonne syntaxe. Il reconstruira un journal vierge à l'identique de celui créé lors de la naissance de la base.

    A +
    ESt ce que tu garantie que cette opération serai valable toujours a 100%

    je doute sur cette confirmation
    Images attachées Images attachées  

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Lisez donc le libellé de l'erreur. Par ailleurs, vous ne donnez pas une capture d'écran pour la spécification de l'attachement, donc on ne peut pas comprendre pourquoi cette erreur se produit.

    Votre base est constituée d'un deuxième groupe de fichiers, ce qui apparaît bien avec l’extension .ndf, donc annulez la première proposition, c'est de n'importe quoi.
    Ceci n'est pas exact : un groupe de fichiers peut être constitué de plusieurs fichiers. Une base de données peut être constituée de plusieurs groupe de fichiers, et chaque groupe de fichiers peut contenir un ou plusieurs fichiers. Par ailleurs, l'extension de fichier n'est là que pour aider à repérer les fichiers dans l'explorateur : il n'est pas obligatoire de la spécifier. Ceci serait stupide, mais on peut tout à fait donner comme extension de fichier .ldf à un fichier de données.
    Enfin, toute base de données a un groupe de fichiers nommé PRIMARY.

    Voici un premier exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CREATE DATABASE FileGroupDemo
    ON 
    (
    	-- Spécification du fichier de données
    	NAME = 'FileGroupDemo' -- Nom logique du fichier
    	, FILENAME = 'D:\SQL2014\MSSQL12.MSSQLSERVER\MSSQL\DATA\FileGroupDemo_Data' -- Emplacement physique du fichier
    	, SIZE = 1GB
    	, FILEGROWTH = 1GB
    )
    LOG ON
    (
    	-- Spécification du fichier du journal des transactions
    	NAME = 'FileGroupDemo_log'
    	, FILENAME = 'D:\SQL2014\MSSQL12.MSSQLSERVER\MSSQL\DATA\FileGroupDemo_log' -- Emplacement physique du fichier
    	, SIZE = 128MB
    	, FILEGROWTH = 128MB
    )
    GO
     
    USE FileGroupDemo
    GO
     
    SELECT	*
    FROM	sys.filegroups
    La base de données est crée normalement, démontrant que l'extension de fichier n'est pas obligatoire. Le résultat du second SELECT montre qu'un fichier de données et un fichier du journal des transactions ont bien été créés.
    Le résultat du premier SELECT montre que le groupe de fichiers est automatiquement nommé PRIMARY.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ALTER DATABASE FileGroupDemo
    ADD FILE
    (
    	NAME = 'FileGroupDemo2'
    	, FILENAME = 'D:\SQL2014\MSSQL12.MSSQLSERVER\MSSQL\DATA\FileGroupDemo2.toto'
    	, SIZE = 1GB
    	, FILEGROWTH = 1GB
    )
    Cette instruction s'exécute sans problème. En interrogeant les vues système une nouvelle fois, on voit que le fichier dont le nom physique est FileGroupDemo2.toto a été automatiquement placé dans le groupe de fichiers PRIMARY.
    Il en va de même si l'on précise à quel groupe de fichiers on souhaite ajouter le fichier de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ALTER DATABASE FileGroupDemo
    ADD FILE
    (
    	NAME = 'FileGroupDemo3'
    	, FILENAME = 'D:\SQL2014\MSSQL12.MSSQLSERVER\MSSQL\DATA\FileGroupDemo3.toto'
    	, SIZE = 1GB
    	, FILEGROWTH = 1GB
    ) TO FILEGROUP [PRIMARY]
    Ajoutons maintenant un groupe de fichiers supplémentaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ALTER DATABASE FileGroupDemo
    ADD FILEGROUP UnDeuxiemeGroupeDeFichiers
    GO
     
    ALTER DATABASE FileGroupDemo
    ADD FILE
    (
    	NAME = 'UnDeuxiemeGroupeDeFichiers_Fichier1'
    	, FILENAME = 'D:\SQL2014\MSSQL12.MSSQLSERVER\MSSQL\DATA\UnDeuxiemeGroupeDeFichiers_Fichier1.ndf'
    	, SIZE = 1GB
    	, FILEGROWTH = 1GB
    ) TO FILEGROUP UnDeuxiemeGroupeDeFichiers
    Détachons maintenant la base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    USE master
    GO
     
    EXEC master.dbo.sp_detach_db @dbname = N'FileGroupDemo'
    GO
    Supprimons aussi le fichier du journal des transactions : dans mon cas il s'agit de D:\SQL2014\MSSQL12.MSSQLSERVER\MSSQL\DATA\FileGroupDemo_log.
    Le rattachement se fait comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    USE master
    GO
     
    CREATE DATABASE LaBaseDetachee
    ON (FILENAME = 'D:\SQL2014\MSSQL12.MSSQLSERVER\MSSQL\DATA\FileGroupDemo_Data')
    	, (FILENAME = 'D:\SQL2014\MSSQL12.MSSQLSERVER\MSSQL\DATA\FileGroupDemo2.toto')
    	, (FILENAME = 'D:\SQL2014\MSSQL12.MSSQLSERVER\MSSQL\DATA\FileGroupDemo3.toto')
    	, (FILENAME = 'D:\SQL2014\MSSQL12.MSSQLSERVER\MSSQL\DATA\UnDeuxiemeGroupeDeFichiers_Fichier1.ndf')
    FOR ATTACH_REBUILD_LOG
    Une nouvelle interrogation des vues systèmes dans le contexte de la "nouvelle" base de données vous confirmera que tout a été replacé tel que c'était avant le détachement, à l'exception bien sûr du fichier du journal des transactions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    USE LaBaseDetachee
    GO
     
    SELECT	*
    FROM	sys.filegroups
     
    SELECT	*
    FROM	sys.database_files
    Pour en savoir plus sur les fichiers, les groupes de fichiers et de nombreux autres aspects et fonctionnalités de SQL Server, je vous conseille de vous en remettre au livre que j'ai co-écrit, et qui est référencé dans ma signature.

    @++

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    En l’occurrence quand vous faites un rattachement de base de données il vous faut spécifier TOUS les fichiers de la base (1ere option) y compris les fichiers du journal de transaction, ou bien uniquement les fichiers de données (tous sans exception), sauf les fichiers du journal de transaction (2e option, avec REBUILD LOG).

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 348
    Points : 604
    Points
    604
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Impérativement oui... !

    C'est bien ,la bonne syntaxe. Il reconstruira un journal vierge à l'identique de celui créé lors de la naissance de la base.

    A +

    Bonjour,

    Merci bcp.


    @+
    SDR.
    "ceux qui vivent, ce sont ceux qui luttent."

Discussions similaires

  1. Probleme avec des logs générés par une application
    Par yayamo dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 16/04/2008, 14h41
  2. CREATE MATERIALIZED VIEW LOG ON VIEW!
    Par bardouni dans le forum Administration
    Réponses: 1
    Dernier message: 07/09/2007, 14h35
  3. Probleme avec commons logging
    Par simaradona dans le forum Logging
    Réponses: 8
    Dernier message: 07/09/2006, 18h15
  4. Grosse bétise avec fichier log ?
    Par eric_033 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 24/08/2006, 13h02
  5. [Directives] Pb avec les logs d'erreurs
    Par R@IZER dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 19/04/2006, 18h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo