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

Accès aux données Discussion :

compactage d'un fichier de base de données


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut compactage d'un fichier de base de données
    bonsoir

    j'ai un problème de compactage de ma base de données. toutes mes recherches sont vaines.

    ma chaîne de connexion dans app.config est libellée comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    add name="WindowsApplication1.My.MySettings.LEHI_SQL_cns" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename="C:\LGHI\GESTION COMMERCIALE\BD_LEHI.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True"
                providerName="System.Data.SqlClient" />
    et mes recherches m'ont conduit à ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Dim engine As New SqlCeEngine("Data Source=C:\LGHI\GESTION COMMERCIALE\BD_LEHI.mdf")
            engine.Shrink()
    à l'exécution, j'ai le message d'erreur suivant:

    Le fichier de base de données est peut-être endommagé. Exécutez l'utilitaire de réparation pour vérifier le fichier de base de données. [ Database name = C:\LGHI\GESTION COMMERCIALE\BD_LEHI.mdf ]
    j'ai besoin de votre aide

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ce que tu fais est étonnant ! Tu te connectes sur une instance SQL Server Express, or tu utilises les composants .NET pour SQL Server Compact Edition. Ca ne risque pas de fonctionner ainsi

    Pour schrinker une base de données Express, tu peux passer la commande suivante :
    Code T-SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DBCC SHRINKDATABASE (<NomDeLaBase>, <PourcentageALibérer>);
    GO
    Tu peux lancer cette commande depuis C#. Plus d'infos sur DBCC ici : http://msdn.microsoft.com/en-us/library/ms190488.aspx

    Sinon tu peux aussi passer par SMO en utilisant la méthode Database.Shrink.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    j'ai choisi de passer par du code pur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub cmd_button_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_button.click
            Dim srv As Server
            srv = New Server
     
            'Reference the AdventureWorks database.
            Dim db As New Database
            db = srv.Databases("C:\LGHI\GESTION COMMERCIALE\BD_LEHI.mdf")
     
            'Shrink the database without truncating the log.
            db.Shrink(10, ShrinkMethod.NoTruncate)
     
            'Truncate the log.
            db.TruncateLog()
        End Sub
    quand j'exécute, il me ramène ce message d'erreur:
    La référence d'objet n'est pas définie à une instance d'un objet.

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Je pense que c'est parce qu'il ne trouve pas la base de données. Il faut que tu mettes le nom de la base de données tel qu'il apparait dans Management Studio au lieu du chemin. Par exemple si ta base s'appelle "Developpez", il faut utiliser ça :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    db = srv.Databases("Developpez")
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    il affiche la même erreur en parcourant la ligne suivante du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.Shrink(percentFreeSpace, ShrinkMethod.NoTruncate)
    sur la ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db = srv.Databases("BD_LEHI")
    Et pourquoi nulle part, on ne précise la connexion à notre base de données?

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    j'avais raison,
    je trouvais absurde que le serveur ne soit pas connu.
    en effet, il fallait simplement déclarer ce qui suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim srv As Server
    srv = New Server("SERVER-PC\SQLEXPRESS")
    et le code marche à merveille

    merci et à bientot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système] gestion des fichiers et base de données
    Par noobspower dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2007, 10h42
  2. [Conception] Lier des fichiers à une base de données
    Par sandytarit dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/06/2006, 20h25
  3. aide pour lire le contenu d'un fichier de base de donnée
    Par hichamo dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 11/05/2006, 10h01
  4. [Conception] upload de fichiers et base de données
    Par Corben dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 14/10/2005, 09h10
  5. Fichier de base de données
    Par Nout dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 14/08/2004, 00h28

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