كيف يمكنني استدعاء تجميع .NET قياسي داخل SQL
سؤال
أواجه مشكلة حيث يحتوي عمود داخل جدول خاص بي على بيانات تم ترميزها باستخدام طريقة System.Xml.XmlConvert.Encode.
أحتاج الآن إلى معالجة هذه البيانات داخل SQL ولم أجد طريقة لتكرار أسلوب System.Xml.XmlConvert.Decode.
لذلك كنت أتحقق من كيفية استخدام مساحة الاسم System.XML داخل SQL للوصول إلى هذه الطريقة دون الحاجة إلى تغليفها داخل إحدى التجميعات الخاصة بي.هل هذا ممكن؟أي.كيف يمكنني الوصول إلى هذا التجميع مباشرة عبر T-SQL؟
المحلول
هناك عدد لا بأس به من الأمثلة على كتابة الوظائف الإضافية باستخدام .NET لـ SQL.أعتقد أنك ستحتاج إلى SQL 2005 أو إصدار أحدث لإنشاء وظيفة إضافية.
هنا مثال مفيد بشكل خاص.
إنشاء وظيفة محددة من قبل مستخدم CLR SQL للتحقق من صحة القيم باستخدام التعبيرات العادية @ MSDN
في حالتك، ربما تريد كتابة دالة تأخذ بايت[] وترجع سلسلة (فك تشفير)، بالإضافة إلى دالة مقابلة تأخذ سلسلة وترجع بايت[].
في الواقع، لست متأكدًا من أنه يمكنك استخدام byte[] مباشرةً، ولكن يجب أن تكون قادرًا على كتابة دالة مجمعة مقابلة في SQL يمكنها أخذ سلسلة سداسية عشرية وتحويلها إلى varbinary() إذا كان ذلك ضروريًا.
يحرر:
فيما يلي بعض الروابط الأكثر استدامة لمراجع أخرى تم تضمينها في الرابط السابق، فقط في حالة اختفائه.