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

Développement SQL Server Discussion :

Liaison procédure stocké a un job sous sqlserver2005


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 41
    Points
    41
    Par défaut Liaison procédure stocké a un job sous sqlserver2005
    Bonjour a tous,
    J'ai créer une procédure stockée sous la base 'MASTER' nomé par : SHRINKLOGS et qui permet de minimiser la taille du fichier LDF, je veut exéxuter cette procédure stcké d'une façon automatique, c.a.d à partir d'un JOB !!!, comment faire je l'ai besoin c'est urgent merci pour votre attention .

  2. #2
    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,

    Entre nous, faire rétrécir le(s) fichier(s) du journal des transactions est un non-sens.
    SQL Server stocke les données des transactions dans ce fichier pour garantir l'intégrité de celles-ci.
    Si le fichier grossit, c'est parce que SQL Server a besoin de cet espace, et il le reprendra tôt ou tard.
    Quand il le reprendra, toutes les requêtes en cours vont attendre que le fichier grossisse, ce qui peut être assez lent.
    Ensuite, cela favorise la fragmentation de votre fichier, autre point négatif en regards des performances.

    Ensuite si l'incrément que vous avez spécifié pour votre fichier du journal des transactions est petit au regard du volume de données que vous manipulez, vous aurez donc un grand nombre de fichiers virtuels dans votre fichier du journal des transactions.
    Donc si votre serveur crashe, le temps de récupération de votre base de données sera allongé par le nombre de fichiers virtuels, car les traverser est coûteux.

    Il vous faut au contraire prendre des sauvegardes du fichier du journal des transactions plus fréquemment (si vous en prenez déjà ...)

    Si c'est un problème d'espace disque, il faut peut-être envisager :
    - de supprimer quelques autres fichiers sur le même disque
    - de déplacer le fichier du journal des transactions sur un autre disque de plus grande capacité
    - d'acheter un disque plus grand en capacité

    Quelle est la version de SQL Server que vous utilisez ?
    Quel est le mode de récupération de votre base de données ?
    Quel est le code de votre procédure stockée ?

    @++

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 41
    Points
    41
    Par défaut Confirmation de besoin
    Slt, merci pour la réponse mais j'ai besoin d'exécuter cette tache
    enfin j'utilise le SQLSERVER2005
    la procédure stocké utilisée est la suivante :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    {
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
     
    -- Procédure stockée permettant de tronquer le journal de logs de toutes les Bdd utilisateurs
    ALTER PROCEDURE [dbo].[SHRINKLOGS] AS
    DECLARE
    @Name_DB varchar(100),
    @Name_Journal_Logs varchar(100),
    @Size_Journal_Logs integer,
    @Size_Journal_Logs_Max integer,
    @SQL varchar(500)
     
    -- Initialisation de la taille du journal de logs
    -- Si un journal de logs dépasse cette taille (en MB)
    -- il sera réduit à cette taille.
    SET @Size_Journal_Logs_Max = 128
     
    DECLARE CUR CURSOR FOR
        -- Recherche le nom des Bdd utilisateurs.
        SELECT name AS Name_DB
                    FROM master.dbo.sysdatabases
                 WHERE name NOT IN('master','msdb','model','tempdb','pubs')
        OPEN CUR
        FETCH CUR INTO @Name_DB
     
        WHILE (@@fetch_status=0)
        BEGIN
            -- Recherche le nom du journal de logs pour une Bdd.
            SET @Name_DB = RTRIM(@Name_DB)
            SET @SQL = 'SELECT name FROM '
            SET @SQL = @SQL + '[' + @Name_DB + ']'
            SET @SQL = @SQL + '.dbo.sysfiles WHERE status & CAST(0x40 AS INT) =  CAST(0x40 AS INT)'
            --PRINT @SQL
            EXEC('DECLARE CUR2 CURSOR FOR '+ @SQL)
            OPEN CUR2
            FETCH NEXT FROM CUR2 INTO @Name_Journal_Logs
            SET @Name_Journal_Logs = RTRIM(@Name_Journal_Logs)
            --PRINT @Name_Journal_Logs
            CLOSE CUR2
            DEALLOCATE CUR2
     
            -- Recherche la taille du journal de logs (en MB)
            SET @SQL = 'SELECT SUM(size * 8)/1024 FROM '
            SET @SQL = @SQL + '[' + @Name_DB + ']'
            SET @SQL = @SQL + '.dbo.sysfiles WHERE name = ''' + @Name_Journal_Logs + ''''
            --PRINT @SQL
            EXEC('DECLARE CUR3 CURSOR FOR '+ @SQL)
            OPEN CUR3
            FETCH NEXT FROM CUR3 INTO @Size_Journal_Logs
            --PRINT @Size_Journal_Logs
            CLOSE CUR3
            DEALLOCATE CUR3
     
            -- Si la taille du journal de logs est supérieure à la taille max
            -- initialisée plus haut (@Size_Journal_Logs_Max) alors le journal de logs est tronqué.
            IF (@Size_Journal_Logs > @Size_Journal_Logs_Max)
            BEGIN
                --PRINT @Name_DB + ' => ' + @Name_Journal_Logs + ' : ' + CAST(@Size_Journal_Logs AS VARCHAR) + ' MB tronqué'
                EXEC ('BACKUP LOG  [' + @Name_DB + ']  WITH TRUNCATE_ONLY')
                EXEC ('USE [' + @Name_DB + '] DBCC SHRINKFILE ([' + @Name_Journal_Logs + '], ' + @Size_Journal_Logs_Max + ')')
            END
     
            FETCH CUR INTO @Name_DB
        END
    CLOSE CUR
    DEALLOCATE CUR
     
    }
    j'essaie d'exécuter cette procédure d'une façon automatique et je propose un JOB mais comment faire ?

  4. #4
    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
    j'inssiste d'exécuter cette procédure d'une façon automatique et je ^ropose un JOB mais comment faire ?
    C'est une bêtise, et ça me dépassera toujours que des gens persistent dedans !
    Vous feriez mieux de créer un job qui vous permette de prendre des sauvegardes du fichier du journal des transactions !

    Et tenez-vous bien Medames, Mesdemoiselles, Messieurs : 3 curseurs dans la même procédure stockée ... quelle horreur ...
    Il n'y a aucunement besoin de curseurs pour ce que vous avez envie de faire, qui est déjà particulièrement dégueulasse ...

    Faites comme vous voulez, voilà pour la création du job.
    Pour les étapes du job, voyez le lien en bas de la page : Création d'étapes de travail.
    Pour la planification de celui-ci, voyez le lien Création et attachement de planifications à des travaux

    @++

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 41
    Points
    41
    Par défaut Réponse finale
    Merci pour votre aide, j'ai résolu le pb par:
    créer un task maintenance plans et poser le composant :
    EXECUTE T-SQL STATEMENT TASK ensuite il faut compier le script d'exécution de la procédure stocké avec une planification timer

    Merci

  6. #6
    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
    Pas besoin de plan de maintenance non plus.
    J'ai trouvé comment créer le job en quelques secondes de recherche sur Internet.
    Amusez-vous bien, et continuez d'ignorer les remarques des autres, c'est comme ça qu'on progresse vite

    @++

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 45
    Points : 41
    Points
    41
    Par défaut Remerciment
    Je vous remerci inf monsieur pour votre aide, j'ai pas ignorer votre idée, je l'ai utiliser sinon j'aurais pas besoin de demander l'aide des autres, rien ne merite d'etre faché

  8. #8
    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
    Je ne suis pas fâché, étant donné que ce n'est pas moi qui gère cette base de données.
    Ce que je ne comprend pas c'est pourquoi vous tenez à faire rétrécir le fichier du journal des transactions alors que je vous ai démontré que c'est une hérésie !

    @++

  9. #9
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Ce que je ne comprend pas c'est pourquoi vous tenez à faire rétrécir le fichier du journal des transactions alors que je vous ai démontré que c'est une hérésie !
    ...et la manière de la faire proprement qui plus est...

    Mais peut-être monsieur est'il fier de son code (avec curseur en SQL dynamique de mieux en mieux...)...

    Je plains sincèrement les personnes qui passeront derrière vous...


    Quel est le mode de récupération de votre base de données ?
    Vous n'avez pas répondu à cette question?
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/11/2008, 12h23
  2. Exécuter une procédure stockée PL/SQL Oracle sous Talend
    Par robinson50 dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 03/11/2008, 10h51
  3. Procédures stockées SQL Server, récupération sous Delphi
    Par rophi dans le forum Bases de données
    Réponses: 10
    Dernier message: 03/12/2007, 14h48
  4. [PEAR][DB] Appel de procédure stockée dans différents schémas sous postgresql
    Par rebolon dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/09/2006, 16h49
  5. Création d'un Job déclenchant une Procédure stockée
    Par Drooxy dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/04/2004, 17h34

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