2009-07-22 7 views
0

j'ai le scénario suivantcomment consommer un service Web reste de SQL Server

  • une véritable service web reste de base surtout, je suis en train de vérifier l'existence d'un seul enregistrement, il est juste un validation, je ne bouge pas autour des centaines de lignes ...

  • qui devrait être appelé à partir sql 2005, SQL Server 2008 ... et oui sql 2000 et sql 6.5 (aïe!)

  • Je suppose que avec sql 2005 et 2008 je pourrais mettre en place un assem bly avec HttpWebRequest ...

  • qu'en est-il de sql 2000 et 6.5 ??? peut-être utiliser curl thru xp_cmdshell ???

Quelqu'un at-il essayé de faire quelque chose comme ça?

- quelques liens intéressants que j'ai trouvé

SQL Server - Using CLR integration to consume a Web Service

http://blogs.msdn.com/sqllive/archive/2008/06/18/accessing-rest-based-web-services-using-sql-clr.aspx

http://www.simple-talk.com/sql/sql-server-2005/practical-sql-server-2005-clr-assemblies/

http://curl.haxx.se/

+0

Je créerais un service d'application chargé d'effectuer ce travail, plutôt que de le faire directement à partir de SQL Server. De cette façon, vous n'avez pas à vous soucier de la version de SQL Server (beaucoup) ... –

+0

oui, je comprends ce que vous voulez dire, le problème est que nous parlons d'une application qui a presque tout son code de logique métier dans les procédures stockées, et nous aimerions le garder de cette façon, car les procédures stockées sont accessibles directement à partir de plusieurs endroits ... Je veux dire que ces procédures stockées sont une sorte d'api à l'application ... – opensas

Répondre

1

hey, que pensez-vous de cette solution qui vient à mon avis

Je crée une table sql avec les champs suivants:

id

, url, demande, réponse, HTTP_STATUS, domain_user, domain_password, résultat, begin_time, end_time

et créer un exe de Visual Basic, ou juste un vbscript, pour être exécuté à partir de la coque avec les informations suivantes

de serveur call_rest.vbs, db, table, id, dbuser, dBPassword

ou tout simplement

call_rest.vbs udl_file, table, id

call_rest, se connecte à la base de données (en utilisant dbuser & dbpassword), lit les données de la table, appelle le service Web de repos (personnifié comme domain_user) et écrit le résultat à la réponse, HTTP_STATUS et champs de résultats (il peut aussi begin_time et end_time complète, à des fins d'audit) ...

Je pense que cela peut fonctionner, et je pourrais utiliser cette solution pour toutes les versions de SQL ...

+2

Cela rend beaucoup mieux sens que d'avoir votre base de données faire des appels de service Web, ce qui est très peu logique. –