2009-11-17 15 views
4

J'ai un problème avec une colonne dans une table qui contient des données codées à l'aide de la méthode System.Xml.XmlConvert.Encode.Comment puis-je appeler un assembly .NET standard dans SQL

Maintenant, j'ai besoin de manipuler ces données dans SQL et n'ai pas trouvé un moyen de dupliquer la méthode System.Xml.XmlConvert.Decode.

J'ai donc étudié comment je peux utiliser l'espace de noms System.XML dans SQL pour accéder à cette méthode SANS avoir à l'envelopper dans l'un de mes propres assemblys. Est-ce possible? c'est-à-dire comment puis-je accéder directement à cet assemblage via T-SQL?

+0

Je serais surpris si cela était possible. – Omar

+0

Oui, il est possible que votre version de SQL Server prenne en charge l'environnement CLR intégré. – Amy

+0

Si possible, comment ferais-je cela. Je ne veux pas écrire un wrapper .NET et utiliser le bit Create Assembly. Je veux accéder directement à l'espace de noms System.XML. – Webcognoscere

Répondre

2

Voici quelques exemples d'ajout de compléments utilisant .NET pour SQL. Je crois que vous devrez avoir SQL 2005 ou plus récent pour créer un complément.

Voici un exemple particulièrement utile.

Creating CLR SQL User Defined Function to Validate Values Using Regular Expressions @ MSDN

Dans votre cas, vous voudrez probablement écrire une fonction qui prend un octet [] et renvoie une chaîne (décodage), avec une fonction correspondante qui prend une chaîne et renvoie un octet [] . En fait, je ne suis pas sûr que vous pouvez utiliser directement byte [], mais vous devriez être capable d'écrire une fonction wrapper correspondante dans SQL qui peut prendre une chaîne hexadécimale et la transformer en varbinary() si cela est nécessaire .

modifier:

Voici quelques liens plus durables à d'autres références qui sont inclus dans le lien précédent, juste au cas où il disparaît jamais.

How to: Create and Run a CLR SQL User-Defined Function @ MSDN

Custom Attributes for CLR Routines @ TechNet

+0

Cela utilise un wrapper. Je ne veux pas utiliser une classe wrapper. J'essaie d'éviter d'avoir à utiliser le code SQL Create Assembly – Webcognoscere

+0

Ok, je vois maintenant. Créer un projet SQL et y ajouter du code. Brillant, merci un mil meklarian – Webcognoscere