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 :

Procédure stockée - Problème d'éxécution [2008]


Sujet :

Développement SQL Server

  1. #1
    Membre averti
    Homme Profil pro
    Webplanneur
    Inscrit en
    Décembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Décembre 2016
    Messages : 35
    Par défaut Procédure stockée - Problème d'éxécution
    Bonjour,

    J'ai besoin de votre aide concernant une procédure stockée. Un petit résumé rapide de la situation :

    1/Les données de plusieurs automates transitent via un frontal de com et remontent dans une table tampon (ID, Date, Valeur)
    2/Il y a une procédure stockée qui permet d'aller chercher ces données et de les ajouter dans une table "Histo"
    3/Ensuite cette table "Histo" est dispatchée en plusieurs tables "Histo_2016", "Histo_2017" etc...

    --> Petit problème, toutes mes données horodatées depuis 2019 ne s'ajoutent plus dans la table "Histo" . J'ai tenté d’exécuter cette procédure manuellement, les données ne s'ajoutent pas.



    Je peux vous fournir un peu plus de renseignements si vous souhaitez, mais auriez-vous déjà une piste pour m'orienter ?




    Merci !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par 123456789az Voir le message
    Je peux vous fournir un peu plus de renseignements si vous souhaitez
    Genre, le code de la procédure

  3. #3
    Membre averti
    Homme Profil pro
    Webplanneur
    Inscrit en
    Décembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Décembre 2016
    Messages : 35
    Par défaut
    On recommence...

    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
    CREATE PROCEDURE [dbo].[InsertHistoricalValue2] 
        @date datetime, 
        @type nvarchar(60),
    	@equipement varchar(60),
    	@variable varchar(120),
    	@valeur varchar(70),
    	@etat int 
    AS 
        SET NOCOUNT ON;
    	declare @verbose bit
    	set @verbose=0
     
    	IF (@etat=0)
    	begin
    		DECLARE @query varchar(max)
    		DECLARE @boolean varchar(5)
    		-- valeur OK
    		IF (@type='bool')
    			SET @boolean='1'
    		ELSE
    			SET @boolean='0'
    		-- suppression postfix _H ou _AH de la variable
    		if upper(right(@variable,2))='_H'
    			set @variable=left(@variable,len(@variable)-2)
    		if upper(right(@variable,3))='_AH'
    			set @variable=left(@variable,len(@variable)-3)
    		DECLARE @centraleid int
    		select @centraleid=id from centrale where name=@equipement
    		if @centraleid is null
    		begin
    			-- creer centrale si inexistante
    			insert into dbo.centrale (name) values(@equipement)
    			set @centraleid=@@IDENTITY
    		end
    		DECLARE @variableID int;
    		SELECT @variableid=id from dbo.variable where centraleid=@centraleid and name=@variable
    		-- ajout variable dans table variable si première occurence
    		IF @variableID is null
    		BEGIN
    			insert into dbo.variable (centraleid,name,Boolean) 
    						values(@centraleid,@variable,@boolean)
    			set @variableID=@@IDENTITY
    		END
     
    		-- conversion valeur en numeric
    		DECLARE @value Real
    		set @value=0
    		if isnumeric(@valeur)=1
    			set @value=cast(@valeur as real)
    		-- insertion valeur dans table histo si valeur non existante
    		DECLARE @tempid int;
    		select @tempid=id from histo where date=@date and id=@variableid
    		if (@tempid is null)
    		begin
    			insert into dbo.histo (id,date,value) values(@variableid,@date,@value)
    			declare @rtdate datetime
    			select @rtdate=date from dbo.rtvalue where id=@variableid
    			if (@rtdate<@date)
    				update dbo.rtvalue set date=@date,value=@value where id=@variableid
    		end
    	end
     
     
     
    GO

    Y-a-t'il un moyen de suivre l’exécution du code ? Un mode pas à pas pour voir ce qui bloque ?


    Merci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    le code c'est du texte !!!! pas une image !!!! Obn va pas se retaper tout à la main !!!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre averti
    Homme Profil pro
    Webplanneur
    Inscrit en
    Décembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Décembre 2016
    Messages : 35
    Par défaut
    Mon objectif n'étant pas de modifier cette procédure (Qui fonctionnait très bien jusqu'à présent) mais de comprendre pourquoi celle-ci ne s’exécute plus, et de voir :
    -Par quel moyen elle est exécutée (Périodiquement, appelée par une autre procédure/fonction)
    -Si c'est possible d'avoir une trace de logs, un moyen de suivre ce qui a foiré depuis ce changement d'année...



    Merci

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Lancez la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC sp_configure 'two digit year cutoff'
    Afin de savoir quelle est votre configuration pour les années à 2 chiffres, à tout hasard...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    est-ce que le paramètre "etat" est bien passé à 0 ?

    Pour tracer les exécutions, utilisez le profileur.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre averti
    Homme Profil pro
    Webplanneur
    Inscrit en
    Décembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Décembre 2016
    Messages : 35
    Par défaut
    Bonjour,

    -Pour la commande 'two digit year cutoff' la valeur max est à 9999
    -Le paramètre état est bien à 0 à chaque réception correcte de variable (Si la réception n'est pas correcte, le paramètre est à 1 et donc la variable n'est pas ajoutée dans la table)


    J'ai trouvé d'où ça venait grâce au débogage. Dans ma table histo il y a un trigger qui permet d'ajouter toutes les données vers les différentes tables. Les commandes d'insert s'arrêtaient en 2018...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ALTER TRIGGER [dbo].[Trig_view_histo] ON [dbo].[histo] INSTEAD OF INSERT AS BEGIN 
    SET NOCOUNT ON
    INSERT INTO histo_2013.dbo.histo (id,date,value) SELECT id,date,value from inserted where year(date) = 2013 and id is not null
    INSERT INTO histo_2014.dbo.histo (id,date,value) SELECT id,date,value from inserted where year(date) = 2014 and id is not null
    INSERT INTO histo_2015.dbo.histo (id,date,value) SELECT id,date,value from inserted where year(date) = 2015 and id is not null
    INSERT INTO histo_2016.dbo.histo (id,date,value) SELECT id,date,value from inserted where year(date) = 2016 and id is not null
    INSERT INTO histo_2017.dbo.histo (id,date,value) SELECT id,date,value from inserted where year(date) = 2017 and id is not null
    INSERT INTO histo_2018.dbo.histo (id,date,value) SELECT id,date,value from inserted where year(date) = 2018 and id is not null
    INSERT INTO histo_2019.dbo.histo (id,date,value) SELECT id,date,value from inserted where year(date) = 2019 and id is not null
    INSERT INTO histo_2020.dbo.histo (id,date,value) SELECT id,date,value from inserted where year(date) = 2020 and id is not null
    INSERT INTO histo_2021.dbo.histo (id,date,value) SELECT id,date,value from inserted where year(date) = 2021 and id is not null
    END

    Merci pour m'avoir mis sur la piste !

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

Discussions similaires

  1. Procédure stockée --> Problème de syntaxe
    Par skyline86 dans le forum Développement
    Réponses: 1
    Dernier message: 08/02/2010, 12h40
  2. Procédure Stockée: temps d'éxécution trop long
    Par sysy35 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/11/2007, 13h21
  3. Réponses: 10
    Dernier message: 25/05/2007, 15h21
  4. Réponses: 5
    Dernier message: 09/05/2005, 12h24
  5. - [procédure stockée] - Problème de Somme
    Par korrigann dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 20/05/2003, 11h51

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