Vérifier la validité d’un SIRET – Algorithme de Luhn

Lors d’un chargement massif de données et/ou d’une migration, il est possible que la qualité des données soient altérées. Il faut alors tester leur qualité et valider chaque écart. Parmi ceux-ci, on peut trouver les numéro SIRET, qui permet l’identification d’un établissement ou d’une entreprise Française.

Cet identifiant numérique est constitué de 14 chiffres, et est articulé en trois parties :

  • le SIREN
  • le Numéro Interne de Classement, à quatre chiffres : c’est l’ordre de création de l’établissement par l’entreprise Française
  • une clé de contrôle, constituée d’un seul chiffre

Ce dernier est calculé à l’aide de l’algorithme de Luhn. Cet algorithme est aussi utilisé pour valider les numéros de carte bleue, et de nombreux identifiants distribués par les administrations de beaucoup de pays. Nous allons nous en servir pour vérifier la validité de SIRETs en l’implémentant spécifiquement pour ce type d’identifiant.

Lire la suite

Sauvegardes de bases de données et envoi d’email avec SQL Server Express

Windows Server Update Services (WSUS) est une application qui permet de gérer et distribuer les patch que Microsoft publie pour ses produits. Elle est supportée par SQL Server Express (with Adanced Services), et de ce fait :

  • On ne dispose pas de l’Agent SQL Server
  • On ne peut pas utiliser des plans de maintenance pour gérer les sauvegardes
  • On ne peut pas envoyer d’emails
  • La compression des fichiers de backup, introduite avec SQL Server 2008, n’est pas prise en charge

Si donc on souhaite planifier les sauvegardes de base de données, et envoyer un email en cas d’échec, on peut :

  • Remplacer un job de l’Agent SQL Server par une tâche du Planificateur de Tâches de Windows
  • Écrire une procédure stockée d’assembly pour envoyer des emails

Cet article détaille les étapes à suivre pour ce faire.
Lire la suite

La clause VALUES n’est-elle réservée qu’à l’ordre INSERT ?

Si je pose la question, c’est que la réponse est … non, et ce depuis SQL Server 2008 !

En effet l’utilisation la plus commune de la clause VALUES se fait lors de la définition d’un ordre INSERT, et permettait jusqu’à SQL Server 2005 inclus d’insérer seulement une ligne dans une table.

Cela a changé lors de la sortie de SQL Server 2008, qui permet de réaliser un INSERT d’au plus 1000 lignes dont les valeurs sont codées « en dur » dans un script. Voyons les autres utilisations possible de cette clause …
Lire la suite

Connaître les caractéristiques d’une trace SQL Profiler

Sur un serveur à la configuration sous-dimensionnée que je surveille de temps en temps, j’ai trouvé une trace SQL Profiler en cours d’exécution.
J’ai voulu en savoir plus sur les caractéristiques de cette trace.
Voici la requête :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-------------------------------
-- Nicolas SOUQUET - 16/06/2010
-------------------------------
SELECT    C.name
    , FI.value
    , T.start_time
    , T.last_event_time
    , T.event_count
    , S.login_name
    , S.session_id
    , 'EXEC sp_trace_setstatus ' + CAST(T.id AS varchar(10)) + ', 0' AS stop_trace_stmt
FROM    sys.traces AS T
CROSS APPLY  sys.fn_trace_getfilterinfo (T.id) AS FI
INNER JOIN  sys.trace_columns AS C ON FI.columnid = C.trace_column_id
INNER JOIN  sys.dm_exec_sessions AS S ON S.session_id = T.reader_spid

On sait tout de suite quel filtres ont été utilisés à l’aide des deux premières colonnes.
La dernière colonne contient l’instruction qui permet d’arrêter la trace : le développeur a donc toujours ses résultats.

Pour savoir comment créer une trace côté serveur, c’est par ici

Bon traçage !

ElSüket