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

MS SQL Server Discussion :

Taille limite SQL Server Express et purge données


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Taille limite SQL Server Express et purge données
    Bonjour,

    Deux questions simples:

    1/ Les 4Go maximum de la version express portent-ils sur le journal des transactions également?

    2/ Le fait de supprimer des données régulièrement peut-ils m'éviter d'atteindre la limite de taille ou faut-il également effectuer des opérations de "shrink".

    Merci pour vos réponses

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    1/ Les 4Go maximum de la version express portent-ils sur le journal des transactions également?
    Non, que sur les données.

    2/ Le fait de supprimer des données régulièrement peut-ils m'éviter d'atteindre la limite de taille ou faut-il également effectuer des opérations de "shrink".
    L'opération SHRINK vous permettra seulement de réduire la taille de votre fichier si celui-ci contient de l'espace libre. Par conséquent il ne réduira pas la taille de vos données dans la base.

    ++

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci pour cette réponse si rapide

    Citation Envoyé par mikedavem Voir le message
    L'opération SHRINK vous permettra seulement de réduire la taille de votre fichier si celui-ci contient de l'espace libre. Par conséquent il ne réduira pas la taille de vos données dans la base.
    ++
    La limitation porte donc bien sur les données et non pas leur place sur le disque ?

    Enfin, pour revenir au problème de taille maximale la façon de procéder suivante est-elle efficace?

    1/ Vérifier la place disponible (EXEC sp_spaceused)
    2/ Si la taille est critique: supprimer les données les plus anciennes (archivées via un autre processus)

    Ce qui m'inquiète c'est d'arriver à la taille limite du journal de transaction et donc de ne plus pouvoir effectuer d'opérations. D'ou la question du SHRINK?

    Bonne journée et merci encore...

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    La limitation porte donc bien sur les données et non pas leur place sur le disque ?
    La limitation existe sur les fichiers de données de la base pour être plus précis.
    Vous n'allez pas pouvoir créer un espace de fichier de données au déla de 4Go.

    Enfin, pour revenir au problème de taille maximale la façon de procéder suivante est-elle efficace?

    1/ Vérifier la place disponible (EXEC sp_spaceused)
    2/ Si la taille est critique: supprimer les données les plus anciennes (archivées via un autre processus)
    Comme je vous l'ai dit le SHRINK réduira votre fichier s'il existe de l'espace libre. En aucun cas il ne supprimera vos données.

    Effectivement vous allez devoir supprimer des données au fur et à mesure en vérifiant l'espace occupé par celles-ci. SQL Server Express n'est pas limité pour la taille du journal des transactions. Si vous êtes un mode de récupération FULL, vous pouvez par exemple passer en mode de récupération SIMPLE provisoirement lorsque vous supprimez vos données. (Bien sûr pensez à rebasculer en mode FULL + BACKUP)

    Pensez également à dimensionner correctement vos journaux de transactions en fonction du volume de données supprimé.

    ++

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Ok, je commence a être largué

    Pourquoi passer en mode récupération simple et ne pas y rester en permanence? Et ce d'autant plus qu'un backup/restore n'est pas une nécessité, les données étant archivées régulièrement sous un autre format.

    Ensuite, je pensais avoir compris que:

    1/ la limitation de 4Go ne porte que sur les donées. Pour limiter la taille de la BD je peux donc simplement supprimer des données au moyen de DELETE.

    2/ pour éviter l'expansion du JT, je peux par exemple régulièrement effectuer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC SHRINKFILE(<Journal_Transaction>, 200)
    ou éventuellement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BACKUP LOG <MaBD> WITH TRUNCATE_ONLY
    Cette dernière instruction n'étant nécessaire que si le mode de récupération de la base est "COMPLET / FULL " ou "JOURNALISE EN BLOC / BULK LOGGED", si j'en crois ce que j'ai pu lire ailleurs sur ce forum.

    Suis-je encore loin du compte ?

  6. #6
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Pourquoi passer en mode récupération simple et ne pas y rester en permanence? Et ce d'autant plus qu'un backup/restore n'est pas une nécessité, les données étant archivées régulièrement sous un autre format.
    Effectivement si vous n'avez aucune nécessité ou de contraintes de sauvegarde ou de reprise de données, restez en mode SIMPLE .

    1/ la limitation de 4Go ne porte que sur les donées. Pour limiter la taille de la BD je peux donc simplement supprimer des données au moyen de DELETE.
    Oui ou si vous supprimez toutes les données d'une table utilisez TRUNCATE TABLE qui est plus rapide et utilise moins de ressources du journal des transactions (à utiliser avec partimonie si vos tables sont référencés par d'autres tables et si vous avez des colonnes de type IDENTITY)

    [QUOTE]2/ pour éviter l'expansion du JT, je peux par exemple régulièrement effectuer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC SHRINKFILE(<Journal_Transaction>, 200)

    Ceci est peu conseillé pour des questions de performance. Vous allez engendrer de la fragmentation au niveau de vos disques avec cet effet "Yoyo". Le journal grossit, je le réduis , le journal grossit à nouveau, je le réduis à nouveau, le journal ..... Au bout du compte, votre journal grossira tout le temps non ?

    Il vaut mieux prévoir la place nécessaire pour votre journal et de laisser cette opération de SHRINKFILE pour des cas exceptionnels.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BACKUP LOG <MaBD> WITH TRUNCATE_ONLY
    Pourquoi pas si vous êtes en mode FULL ou BULK LOGGED mais comme vous l'avez dit vous n'avez pas d'impératif concernant vos sauvegardes.

    En mode SIMPLE votre journal sera automatiquement tronqué. Cette commande n'est pas nécessaire.

    ++

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Parfait, merci pour ces réponses

    Je marque le sujet comme résolu

    ++

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 850
    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 850
    Points : 52 984
    Points
    52 984
    Billets dans le blog
    6
    Par défaut
    Une façon de procéder pour aller au dela de la taille de 4 Go est d'utiliser plusieurs bases. En effet, rien ne vous empêche d'avoir 100 bases de 4 Go.
    De plus, vous pouvez faire des vues SQL qui font des UNION interbases. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE VIEW V_MaTable
    AS
    SELECT *
    FROM MaBase1..MaTable
    UNION ALL
    SELECT *
    FROM MaBase2..MaTable
    ...
    Enfin, pour les mises à jour, rien ne vous empêche de faire des triggers INSTEAD OF sur les vues et rerouter les INSERT/UPDATE/DELETE vers la bonne base. Dans ce cas, il faut introduire un critère de partitionnement de vos vues, par exemple sur une colonne d'horodatage !

    A +

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci pour cette dernière info... c'est effectivement une option à envisager

    Je reviens cependant à ce qui a été dit plus haut:
    Citation Envoyé par mikedavem Voir le message
    En mode SIMPLE votre journal sera automatiquement tronqué. Cette commande n'est pas nécessaire.
    ++
    D'après les essais que j'ai pu faire, la taille du JT ne fait que s'étendre.
    La troncature serait-elle effectuée de manière périodique ou sur seuil?

    En outre, si la taille du JT est limitée j'obtiens:

    Le journal des transactions de la base de données 'BD_TEST_SIZE' est plein. Pour savoir pourquoi il est impossible de réutiliser de l'espace dans le journal, consultez la colonne log_reuse_wait_desc dans sys.databases.

    et l'opération n'est pas effectuée.
    Je reviens donc (encore et toujours ) avec mon SHRINKFILE... Existe-t-il à ce propos une commande de défragmentation ?

    ++ ++

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 850
    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 850
    Points : 52 984
    Points
    52 984
    Billets dans le blog
    6
    Par défaut
    1) pour placer votre base de données en mode simple, faites :
    ALTER DATABASE MaBase SET RECOVERY SIMPLE;

    2) lire : http://sqlpro.developpez.com/cours/sqlserver/log/

    A +

  11. #11
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 229
    Points : 266
    Points
    266
    Par défaut
    Bonjour,

    D'après les essais que j'ai pu faire, la taille du JT ne fait que s'étendre.
    La troncature serait-elle effectuée de manière périodique ou sur seuil?
    Regardez l'option AUTO_SHRINK de votre base de données. Elle est à FAUX par défaut.

    Zabriskir

Discussions similaires

  1. Problème données VS 2008 Express et SQL server Express
    Par Contrec dans le forum Visual Studio
    Réponses: 7
    Dernier message: 20/10/2008, 19h13
  2. Déploiement d'une base de données de SQL Server Express 2005
    Par insane_80 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 26/08/2008, 14h11
  3. Réponses: 3
    Dernier message: 10/07/2008, 11h43
  4. Réponses: 5
    Dernier message: 18/05/2007, 14h34
  5. [MS SQL server express 2005] exportation des données
    Par backfire dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/02/2007, 15h58

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