Net
Par Ronald VASSEUR
Introduction...................................................................................................................................................................3
Pr requis logiciels.......................................................................................................................................................3
I - Intgration de la CLR dans SQL Server 2005....................................................................................................... 3
II - SQL Server Project et Visual Studio 2005............................................................................................................ 4
III - Ecrire une procdure stocke en .Net.................................................................................................................. 6
IV - Publier une procdure stocke dans SQL Server avec Visual Studio................................................................. 8
Conclusion..................................................................................................................................................................10
-2-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de
prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005-2013 Ronald VASSEUR. Aucune
reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
Introduction
Au cours de cet article, nous allons voir les apports d'une innovation majeure de SQL Server 2005, savoir l'intgration
de la CLR 2.0. Nous verrons comment crer et dployer du code .Net directement l'intrieur du serveur de base de
donnes, pour tayer mes propos, je prendrais pour exemple la cration et le dploiement d'une procdure stocke
en VB.Net dans SQL Server 2005.
Pr requis logiciels
1
2
Safe
External-Access
Unsafe
Le mode d'excution le plus sr tant Safe, il est trs vivement recommand de l'employer systmatiquement, il s'agt
d'ailleurs le mode par dfaut. En mode Safe, l'assembly n'aura accs rien en dehors du contexte d'xcution de SQL
Server, elle n'aura, par exemple, pas accs au systme de fichier, son univers se limitera SQL Server seulement.
External-Access est le mode de scurit et de permissions intermdiaires, ici l'assembly, en plus du serveur SQL
mme, va avoir accs des ressources externes comme le registre, le rseau et le systme de fichiers du serveur.
Comme tout autre assembly .Net, il est bien entendu ncessaire de possder les autorisations adquates ces
ressources, il ne s'agt donc pas de crer une brche bante dans votre serveur ! Enfin, le mode Unsafe est le niveau
de scurisation le moins lev, ici l'assembly a potentiellement (toujours selon les autorisations accordes) accs
tous les types de ressources imaginables, pour des raisons videntes de scurit, il est dconseill d'utiliser ce mode !
-3-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de
prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005-2013 Ronald VASSEUR. Aucune
reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
Comme nous venons de le voir l'intgration de la CLR offre de nombreuses possibilits aux dveloppeurs .Net, il
s'agt d'une relle alternative l'utilisation de T-SQL. Cela va mme, dans une certaine mesure, modifier votre faon
de concevoir des applications puisqu'il sera possible d'intgrer facilement une partie de la logique de vos applications
directement dans le serveur de base de donnes. Vous avez potentiellement accs la puissance et la richesse du
Framework .Net 2.0 l'intrieur mme de SQL Server. Nous pouvons donc raisonnablement penser que l'intgration
de la CLR 2.0 dans SQL Server est une innovation majeure. Voyons maintenant comment tirer profit de cela dans
Visual Studio au travers de la cration d'une procdure stocke en code manag
-4-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de
prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005-2013 Ronald VASSEUR. Aucune
reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
Dbogage SQL/CLR
Jusqu'ici vous n'avez cr qu'un projet "gnrique", il faut maintenant spcifier que vous voulez dvelopper une
procdure stocke, pour cela cliquez avec le bouton droit de votre souris sur votre projet dans l'explorateur de solution
-5-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de
prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005-2013 Ronald VASSEUR. Aucune
reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
et slectionnez add new item, vous l'aurez devin, choisissez Stored Procedure dans la liste Vous avez dans
cette liste un aperu des lments que vous pouvez intgrer dans un SQL Server Project. Nommez cette procdure
maPremiereProcedure.
Vous pouvez voir qu'en choisissant une procdure stocke Visual Studio vous fournit un squelette pour celle-ci, avec
notamment les Imports et les diverses dclarations ncessaires ! Voici, ci-dessous, une copie du code qui vous est
donn :
Squelette du code gnr par Visual Studio 2005
Imports
Imports
Imports
Imports
Imports
System
System.Data
System.Data.Sql
System.Data.SqlTypes
Microsoft.SqlServer.Server
Au travers de ce code, vous voyez qu'il ne diffre pas normment d'une classe "normale". Tout est prt pour accueillir
votre code.
-6-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de
prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005-2013 Ronald VASSEUR. Aucune
reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
System
System.Data
System.Data.Sql
System.Data.SqlClient
System.Data.SqlTypes
Microsoft.SqlServer.Server
-7-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de
prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005-2013 Ronald VASSEUR. Aucune
reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
Signature de l'assembly
Aprs avoir vu comment coder notre procdure stocke, nous allons maintenant voir comment la dployer directement
sur notre serveur SQL Server 2005.
IV - Publier une procdure stocke dans SQL Server avec Visual Studio
Publier une procdure stocke dans SQL Server 2005, depuis Visual Studio, est un vritable jeu d'enfant. En effet,
regardez bien, cela va allez trs vite :
Compilez votre projet en cliquant sur Build puis "Build le_nom_de_votre_projet", si tout va bien la compilation ne
pose pas de problme, vous n'avez alors plus qu'a cliquer sur votre projet avec le bouton droit de la souris dans
l'explorateur de solution et choisir "Deploy". Ds lors, la fentre que vous pouvez voir ci-dessous s'ouvre et vous
demande si ncessaire un login et un mot de passe ayant les autorisations ncessaires pour dployer cette procdure
stocke dans SQL Server 2005.
-8-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de
prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005-2013 Ronald VASSEUR. Aucune
reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
Si le dploiement s'est bien droul, dans la fentre output de Visual Studio vous devez voir s'afficher :
========== Deploy: 1 succeeded, 0 failed, 0 skipped ==========
Cela signifie que votre assembly .Net, et donc votre procdure stocke, se trouve dsormais directement intgre
dans SQL Server 2005. Vous pouvez bien entendu vrifier sa prsence et son fonctionnement par vous-mme dans le
SQL Express Manager. Pour cela, allez dans l'explorateur jusqu'au nud de la base de donnes que vous avez utilis,
puis dans le dossier programability; allez voir dans Stored Procedure et vous trouverez votre ou vos procdure(s)
stocke(s). Votre procdure stocke est bien videmment utilisable depuis du code manag dans une application .Net
mais aussi depuis n'importe quel script T-SQL ayant les permissions requises, votre dveloppement est un devenu
un lment part entire de SQL Server, il s'excute l'intrieur de celui-ci de part l'intgration de la CLR.
Voici comment excuter votre procdure stocke dans SQL Express Manager : dans la fentre "Query Editor"
saisissez le script suivant et lancer son excution :
Commande d'excution de la procdure stocke
USE Developpez
Le rsultat (le nombre d'enregistrements dans la table passe en paramtre) vous est retourn; voil, vous venez de
raliser et de tester votre premire procdure stocke en .Net.
-9-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de
prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005-2013 Ronald VASSEUR. Aucune
reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.
Conclusion
Au travers de cet article, nous avons pu entrevoir les possibilits offertes par l'intgration de la CLR dans SQL Server
2005. L'imbrication avec Visual Studio vous permet d'tre trs productif, on peut citer en exemple le systme de
dploiement de vos assembly que l'on a vu un peu plus haut. Au del des procdures stockes en .Net, la CLR 2.0
va vous permettre d'tendre les capacits et la personnalisation de SQL Server 2005, pour voir cela plus en dtail,
je vous donne rendez-vous dans de prochains articles.
Si vous souhaitez avoir plus d'informations sur SQL Server 2005 je vous recommande l'excellent article de Thomas
Lebrun que vous pouvez trouver ici.
Un grand merci Freegreg pour la relecture de cet article.
- 10 -
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de
prsentation constitue une uvre intellectuelle protge par les droits d'auteur. Copyright 2005-2013 Ronald VASSEUR. Aucune
reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.