سؤال

أواجه مشكلة حيث يحتوي عمود داخل جدول خاص بي على بيانات تم ترميزها باستخدام طريقة System.Xml.XmlConvert.Encode.

أحتاج الآن إلى معالجة هذه البيانات داخل SQL ولم أجد طريقة لتكرار أسلوب System.Xml.XmlConvert.Decode.

لذلك كنت أتحقق من كيفية استخدام مساحة الاسم System.XML داخل SQL للوصول إلى هذه الطريقة دون الحاجة إلى تغليفها داخل إحدى التجميعات الخاصة بي.هل هذا ممكن؟أي.كيف يمكنني الوصول إلى هذا التجميع مباشرة عبر T-SQL؟

هل كانت مفيدة؟

المحلول

هناك عدد لا بأس به من الأمثلة على كتابة الوظائف الإضافية باستخدام .NET لـ SQL.أعتقد أنك ستحتاج إلى SQL 2005 أو إصدار أحدث لإنشاء وظيفة إضافية.

هنا مثال مفيد بشكل خاص.

إنشاء وظيفة محددة من قبل مستخدم CLR SQL للتحقق من صحة القيم باستخدام التعبيرات العادية @ MSDN

في حالتك، ربما تريد كتابة دالة تأخذ بايت[] وترجع سلسلة (فك تشفير)، بالإضافة إلى دالة مقابلة تأخذ سلسلة وترجع بايت[].

في الواقع، لست متأكدًا من أنه يمكنك استخدام byte[] مباشرةً، ولكن يجب أن تكون قادرًا على كتابة دالة مجمعة مقابلة في SQL يمكنها أخذ سلسلة سداسية عشرية وتحويلها إلى varbinary() إذا كان ذلك ضروريًا.

يحرر:

فيما يلي بعض الروابط الأكثر استدامة لمراجع أخرى تم تضمينها في الرابط السابق، فقط في حالة اختفائه.

كيف:إنشاء وتشغيل وظيفة محددة من قبل المستخدم CLR SQL @ MSDN

السمات المخصصة لإجراءات CLR @ TechNet

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top