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 :

Tracer au niveau de la ligne les nombreuses requêtes modifiant les données


Sujet :

Développement SQL Server

  1. #1
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut Tracer au niveau de la ligne les nombreuses requêtes modifiant les données
    Bonjour à tous,

    un client souhaite refondre une base Access en une application uniquement SQL Server :
    • structure et données SQL Server
    • importation des données: BCP au début, remplacé par Talend ensuite
    • transformations en SQL, pas de Talend
    • programmabilité en T-SQL (ce qui était fait en macro dans Access), pas de Talend


    Il y a 3 grandes phases:
    • import des données
    • préparation des données : de nombreuses (autour de 100) requêtes pour exclure certains cas, corriger des données, joindre des tables, etc.
    • application séquentiellement de plusieurs centaines (autour de 400) de requêtes cumulatives sur UNE table pour calculer un montant X: update majoritairement.


    Il y a aussi une gestion de campagne qui permet de faire plusieurs campagnes avec les mêmes données source, pour tester des règles différentes.


    Le client voudrait profiter du passage sous SQL Server pour augmenter sa traçabilité et être capable de dire, pour chaque ligne fonctionnelle (disons une ligne dont la clé unique est un n° de facture ou n° de dossier):
    • quelles sont les règles (sur les 400) qui ont impacté la ligne: en plus du fait qu'une ligne peut répondre ou pas au cas traité par la règle (par exemple la règle "malus de 10% si le nombre d'incident est supérieur à ...", la règle peut s'appliquer ou pas selon la campagne.
    • comment la règle a impacté la ligne (le montant X a varié de 10 à 15)


    Le client ne veut pas passer en traitement ligne à ligne, il veut conserver la logique de la série de requêtes cumulatives. Il préfère agir à coup de requêtes et de procédures stockées que de passer par des interfaces.

    Je pensais travailler ainsi:
    • créer une table de traçabilité des règles : identifiant de la ligne, identifiant de la règle, date, effet, valeur avant application, valeur après application
    • coder chaque règle dans une procédure stockée, cette procédure stockée log dans la table de table de traçabilité des règles les informations
    • créer une table qui donne pour chaque campagne la liste des règles à appliquer et l'ordre dans lequel l'appliquer et des procédures stockées pour la manipuler.
    • lors du lancement de la MAJ d'une campagne, les règles à jouer sont lues et sont exécutées, donc X procédures stockées sont exécutées de manière séquentielle


    Outre que je suis ouvert à d'autres façons de répondre à ce besoin, ma question porte principalement sur la manière de tracer. Je pensais le faire en 2 temps:
    1) logger que je vais appliquer la règle X sur la campagne choisie
    2) identifier les lignes qui répondent au cas de la règle "malus de 10% si le nombre d'incident est supérieur à ..." et stocker cette liste de lignes avec les identifiant fonctionnels de la ligne et l'identifiant de la campagne.
    3) pour ces lignes, inscrire dans la table de traçabilité que les lignes vont être traitées, et sauver la valeur du montant actuel
    4) appliquer la règle sur ces lignes (avec un exist qui tient compte de la campagne)
    5) updater la table de traçabilité avec la nouvelle valeur de ces lignes
    6) logger que j'ai bien appliqué la règle X sur la campagne choisie


    SQL Server 2012

    Merci de vos idées / remarques / retours d'expérience
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    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 766
    Points : 52 561
    Points
    52 561
    Billets dans le blog
    5
    Par défaut
    Utilisez la clause OUTPUT de SQL Server pour savoir :
    1) si la requête à modifié une ligne au moins
    2) quelles sont les lignes qui ont été modifiées.

    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/ * * * * *

  3. #3
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Merci beaucoup, voilà le genre d'information extrêmement pertinente que je cherchais
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/10/2011, 11h16
  2. [WD14] Wdmodfic en ligne de commande qui modifie les droits d'accès
    Par kuranes dans le forum WinDev
    Réponses: 2
    Dernier message: 22/12/2009, 11h04
  3. Réponses: 1
    Dernier message: 22/07/2007, 22h07
  4. Modifier les alias sur toutes les form
    Par mozcity dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/10/2006, 08h08
  5. Réponses: 4
    Dernier message: 25/05/2006, 21h05

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