Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/04/2011, 10h07   #1
Invité régulier
 
Inscription : juillet 2009
Messages : 33
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 33
Points : 9
Points : 9
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 .
Hocinov3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 11h04   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 668
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

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

Informations forums :
Inscription : janvier 2005
Messages : 4 668
Points : 8 718
Points : 8 718
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 ?

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 11h50   #3
Invité régulier
 
Inscription : juillet 2009
Messages : 33
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 33
Points : 9
Points : 9
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 :
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 ?
Hocinov3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 11h57   #4
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 668
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

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

Informations forums :
Inscription : janvier 2005
Messages : 4 668
Points : 8 718
Points : 8 718
Citation:
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

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 12h02   #5
Invité régulier
 
Inscription : juillet 2009
Messages : 33
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 33
Points : 9
Points : 9
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
Hocinov3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 12h05   #6
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 668
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

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

Informations forums :
Inscription : janvier 2005
Messages : 4 668
Points : 8 718
Points : 8 718
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

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 12h13   #7
Invité régulier
 
Inscription : juillet 2009
Messages : 33
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 33
Points : 9
Points : 9
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é
Hocinov3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 12h24   #8
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 668
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

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

Informations forums :
Inscription : janvier 2005
Messages : 4 668
Points : 8 718
Points : 8 718
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 !

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 08h50   #9
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
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...


Citation:
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.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h13.


 
 
 
 
Partenaires

Hébergement Web