Chinese (People's Republic of China)  English  Français


Supinfo-Projects.com
Tous les projets des élèves ingénieurs de Supinfo



Projets
  Dernier Projet
  Les plus populaires
  Tous les Projets

298 Visiteurs
3168 Projets


My Supinfo-Projects

   Connectez-vous
   Créez un Compte


Synopsis

   16 Visites
   Note INTERNET : 20
    (3 Votants)
   1 Commentaires

   Lire l'article

Evaluez cet article

20
18
16
14
12
10
8
6
4
2
0


Commentez cet article

Auteur :

Email :

Votre commentaire :



 
2005 - Note de Synthèse Stage
Intégrer .Net dans Sql Server 2005
[25 mn de lecture - paru le 10/20/2005 9:54:01 PM - Public : Confirmé]

Auteur

degrem_mMichel DEGREMONT
Elève-Ingénieur Supinfo Paris
Promotion SUPINFO 2006

   Lui écrire
   Tous les projets de cet auteur
   Le mini-CV de cet auteur

3. Créer un Trigger dans Sql server 2005 avec .NET  

3.1. Création de la classe Trigger

Nous allons prendre pour exemple que si notre table est modifiée alors nous créerons automatiquement un INSERT dans cette même table avec la date du jour en paramètre.

Ajouter une nouvelle class Trigger.

sql_clr_14.jpg

 

Exemple simple


 
using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;

public partial class Triggers
{
[Microsoft.SqlServer.Server.
SqlTrigger(Name = "MonTrigger", Target = "project", Event = "FOR UPDATE")]
public static void Trigger1()
{
SqlTriggerContext monTrig = SqlContext.TriggerContext;
SqlPipe sqlPip = SqlContext.Pipe;
if (monTrig.TriggerAction == TriggerAction.Update)
{
using (SqlConnection conn = new SqlConnection("context connection=true;"))
using (SqlCommand cmd = conn.CreateCommand())
{
try
{
cmd.CommandText =
"INSERT INTO project (nomProjet) VALUES (getdate())";
conn.Open();
SqlContext.Pipe.Send("Résultat : " + cmd.ExecuteNonQuery().ToString()); 
}
catch (Exception ex)
{
SqlContext.Pipe.Send("Erreur " + ex.Message);
}
finally
{
conn.Close();
}
}
}
}
}

La classe Trigger est déclarée en partial (classe partielles). La classe partial va permettre de diviser la clase en plusieurs fichiers ce qui va permettre de faciliter le développement, les tests et la maintenance.

public partial class Triggers
{

}

On place un attribut pour spécifier à Sql Server que c'est une procédure.

L'attribut prend plusieurs paramètres :
- Name : le nom de l'objet
- Target : sur quel table agit l'objet
- Event : sur quel évènement : FOR INSERT, FOR UPDATE, FOR DELETE, FOR CREATE TABLE ...

[Microsoft.SqlServer.Server.SqlTrigger(Name = "MonTrigger", Target = "project", Event = "FOR UPDATE")]
public static void Trigger1()
{

}

Lorsque vous s'exécutez une procédure, un trigger, une fonction CLR au sein de SQL Server 2005, le code opère dans le contexte d'une connexion préétablie. SqlContext représente cette connection. Il fourni différents objets comme SqlPipe, SqlResultSet, SqlTransaction, Sql TriggerContext....

Sql TriggerContext va déterminer la cause de déclenchement du trigger.

SqlTriggerContext monTrig = SqlContext.TriggerContext;
SqlPipe sqlPip = SqlContext.Pipe;

Ensuite on vérifie si le trigger a détecté l'Update

if (monTrig.TriggerAction == TriggerAction.Update)
{

}

On récupère la connexion en court.

using (SqlConnection conn = new SqlConnection("context connection=true;"))

Puis on exécute la requête insert dans la Base de données

using (SqlCommand cmd = conn.CreateCommand())
{
try
{
cmd.CommandText =
"INSERT INTO project (nomProjet) VALUES (getdate())";
conn.Open();
SqlContext.Pipe.Send("Résultat : " + cmd.ExecuteNonQuery().ToString()); 
}
catch (Exception ex)
{
SqlContext.Pipe.Send("Erreur " + ex.Message);
}
finally
{
conn.Close();

 

3.2. Déployer l'assemblie dans SQL Server 2005

Ensuite vous devez déployer votre DLL,

Clique droit sur le projet > Deploy

sql_clr_13.jpg

Basculer dans Sql Server Management Studio (anciennement entreprise manager)

Faites un Refresh de votre base de données

sql_clr_17.jpg

Dans l'arborescence de votre base de données : DataBase >> VotreTable >> Triggers. Votre trigger s'est bien déployé.

3.3 Test du Trigger

 

sql_clr_16.jpg

En exécutant ce script vous devez voir qu'une ligne c'est créée dans la même table avec la date et heure du jour.

Le test est terminé.



Articles de la même catégorie

 Pages : Top


8 Visites
0 Commentaires
Start with JavaServer Faces
[15 mn de lecture - paru le 10/19/2005 4:44:43 PM - Public : Confirmé]

En savoir plus


16 Visites
0 Commentaires
Démarrer avec les JavaServer Faces
[15 mn de lecture - paru le 10/19/2005 4:41:23 PM - Public : Confirmé]

En savoir plus


10 Visites
0 Commentaires
WebDev : programming software
[25 mn de lecture - paru le 10/17/2005 11:18:57 PM - Public : Confirmé]

En savoir plus

   Tous les Articles


SUPINFO Training Center peut vous proposer une formation ...

   Devenez Ingénieur Système Microsoft en 35 jours avec SUPINFO Training Center
   Devenez Certifiés Cisco en 13 jours avec SUPINFO Training Center
   Devenez Administrateur Système Microsoft avec SUPINFO Training Center
   Devenez Développeur Microsoft .NET en 13 jours avec SUPINFO Training Center



Powered by Campus-Booster Technology
Conditions d'utilisation & Copyright | Respect de la vie privée
© Copyright 1965-2006 Supinfo Paris, Paris Academy of Computer Science
Supinfo, Ecole Supérieure d'Informatique et Paris Academy Of Computer Science are trade marks.
23, rue de Château LANDON - 75010 PARIS - Phone : +33 (0) 153359 700 Fax : +33 (0) 153359 701

Web site autided by :