Base Bientôt à 2 Go !

miniheli Messages postés 18 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 30 juillet 2009 - 1 déc. 2007 à 16:03
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 - 3 déc. 2007 à 15:26
Bonjour à tous,

Je suis en train de déveloper une application qui interroge une BDD Access.

Au début, cette base ne fesait que 8300 Ko (il n'y a que des tables liées ODBC).

C'est mon Appli qui contient les requêques en SQL. Celle-ci créée et efface les tables dont elle a besoin aucours de son utilisation. Mais toute table créée est effacée.

Néanmoins, la taille de la base ne cesse de gonfler au fur et à mesure des débogages.

Je suis à 1,6 Go alors qu'il n'y a pas plus de tables et aucune requête stockée.

Qu'est-ce qui prend toute cette place ?

Comment faire pour retrouver la taille initiale de ma base après chaque utilisation de mon appli ?

Puis-je éberger mes tables (liées ODBC) dans un autre SGBD (gratuit si possible) ?

Je ne sais pas comment faire mais il me semble que SQL Server 2005 Express Edition est envisageable.

Si c'est possible, connaissez-vous un lien qui explique comment faire migrer les tables de Access vers SQL Server, puis comment adapter le code VB de l'application pour se connecter à cette nouvelle base.

D'avance merci à tous.

Guillaume.

2 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
1 déc. 2007 à 16:17
Salut,

Il te faudrait faire un compactage de ta base de donnée...Regarde sur le site et sur Codyx.org, il y a des sources et de snippets....

Maitenant tu peux compacter ta base de donnée directement dans access aussi, mais c'est manuel...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
3 déc. 2007 à 15:26
Sinon, je m'étais fait un petit VBScript, adapté de bout de code trouvé à droite à gauche, pour compacter une base de données (utile si tu n'as pas ACCESS sur le poste qui fait tourner ton appli, sinon, faut pas s'embêter, dans ACESS, menu Outils\Compacter et hop ^^)

'========================================================================================
'
' NOM :    Compactage de la base de donnée Molenn.mdb
'
' AUTEUR:    Molenn
' DATE  :
'
' COMMENTAIRE :    Script permettant de compacter une base de données lorsque seul
'         le runtime ACCESS est installé (et donc le menu de compactage non disponible)
'========================================================================================

'****************************************************************************************
'Mise à jour du Script si la base de données a changé de nom :
'il suffit de mettre à jour la variable BDDNom à la ligne 15 du script
const BDDNom = "Molenn.mdb"
'****************************************************************************************

'****************************************************************************************
'Initialisation
'****************************************************************************************

'Détermination du chemin relatif du script (recherche du dernier "" dans le chemin du script)
CheminScript = WScript.ScriptFullName
LongueurChemin = Len(CheminScript)
For i = 1 To LongueurChemin
   Temp = InStr(i,CheminScript,"")
   If Temp = 0 Then
      Exit For
      Else
      i = Temp
   End if
Next
CheminScript = Left(CheminScript,i-1)

'Vérification de la présence de la base et de son statut
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
   'Présence de la base de données
If Not (ObjFSO.FileExists(cheminscript & BDDNom)) Then ' Verification de la Présence de la base
    MsgBox "Base Introuvable à l'endroit spécifié", vbCritical + vbOKOnly, "Erreur"
    WScript.Quit(-1)
End If
   'Statut de la base de données : si ouverte, fin du script
If ObjFSO.FileExists(Mid(cheminscript & BDDNom, 1, Len(cheminscript & BDDNom) - 4) & ".ldb") Then ' Verification de la Présence du Fichier .ldb
    MsgBox "La Base est déja ouverte, Impossible de poursuivre", vbCritical + vbOKOnly, "Erreur"
    WScript.Quit(-1)
End If

'Compactage de la base de données
Call Compactage(CheminScript, BDDNom)

MsgBox "La Base de Donnée " & BDDNom & " est compactée.", vbInformation, "Compactage"
'****************************************************************************************
'Fin du script
'****************************************************************************************

'****************************************************************************************
'Fonction de compactage
'****************************************************************************************
'Principe : Copie compactée de la base, puis remplacement de la base d'origine par la copie
Function Compactage(Chemin,Nom)

BDDSource = Chemin & Nom
BBDTemporaire = Chemin & "Temp.mdb"

Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Set ObjJRO = CreateObject("Jro.JetEngine")
ObjJRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & BDDSource & ";Jet OLEDB:Database Password=", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & BBDTemporaire & ";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password="
ObjFSO.DeleteFile(BDDSource)
ObjFSO.MoveFile BBDTemporaire, BDDSource
set ObjJRO = Nothing
set ObjFSO = Nothing

End Function
'****************************************************************************************
'Fin de la fonction
'****************************************************************************************

Tu colles le script dans le même répertoire que ta base de données, tu changes le nom de la constante pour mettre le nom de ta base, et tu fais un double-clic sur le script.
Hop là, base compactée.

Molenn
0
Rejoignez-nous