it-swarm.asia

دلل الطرف الثالث في SQL Server CLR

أحتاج إلى استخدام طرف ثالث DLL في مشغل c # في SQL Server CLR

ولكن عندما أحاول إضافة مرجع ، فإنه يظهر فقط بعض ملفات DLL من SQL Server.

كيف يمكنني إضافة dll طرف ثالث إلى SQL Server؟

14
AVEbrahimi

يمكنك فقط إضافة مراجع لتلك التجميعات التي تم تسجيلها مع خادم SQL. إذا لم يتم تسجيلهم ، فلن يظهروا في مربع الحوار "إضافة مراجع".

هناك عدد من الخطوات التي ستحتاج إليها لتسجيل ملف DLL ، أولاً ستحتاج إلى إعادة تكوين قاعدة بياناتك:

ALTER DATABASE [MyDatabase] SET TRUSTWORTHY ON;
sp_configure 'clr enabled', 1;
RECONFIGURE;

بمجرد القيام بذلك ، يتم تمكين خادم SQL CLR. بعد ذلك ، ستحتاج إلى تسجيل التجميع الخاص بك:

CREATE Assembly [MyAssembly] AUTHORIZATION [MyUser]
FROM 'C:\CLR\MyAssembly.dll'
WITH PERMISSION_SET = SAFE

إذا كان هذا البرنامج النصي الأخير يعمل بشكل صحيح ، يتم الآن تسجيل التجميع ، وسيظهر في مربع الحوار "إضافة مراجع".

ومع ذلك ، ما عليك مراعاته هو أمان التطبيق لتكوين Sql Server CLR:

  1. تفضل تسجيل تجميع كـ SAFE ، فقط في الظروف الاستثنائية في حالة استخدام EXTERNAL_ACCESS أو UNSAFE.
  2. لا تتوقع أن تكون قادرًا على القيام بكل ما يمكنك فعله على CLR الموثوق به بالكامل (أي ليس CLR الذي يستضيفه Sql Server) - SQLCLR هو وقت تشغيل محمي.
  3. لا تحاول تحميل التجميعات ديناميكيًا ، حيث إن Assembly.Load() مُقيّدة عن قصد.
  4. قد تحتاج إلى التأكد من توقيع مكتبة الطرف الثالث باستخدام مفتاح عام إذا كنت تخطط لاستخدام UNSAFE.
  5. يعمل تنفيذ التعليمات البرمجية في سياق هوية الخدمة التي تشغل SQL Server (على ما أظن!)
  6. يتم تشغيل الوصول إلى قاعدة البيانات من تجميع مستضاف (على سبيل المثال عبر context connection = true;) في سياق المستخدم المتصل ، لذلك عليك التأكد من أنك على دراية بالوصول إلى تلك البيانات إلى تلك المكتبة.
15
Matthew Abbott

أفترض أنك تسأل عن بدائل تثبيت تجميعات SQL CLR من Visual Studio.

لا يلزم وجود الرمز في Visual Studio.

نشر كائنات قاعدة بيانات CLR في تفاصيل MSDN ، بما في ذلك عبارات SQL ونصوص النشر.

5
Oded

أستخدم جهة خارجية كبيرة جدًا DLL التي تأخذ صفحة ويب وتحولها إلى PDF.

يتم حفظ PDF في مشاركة ملف ويتم تحديث قاعدة البيانات من حيث موقعها ونوعها.

هذه عملية من 3 خطوات:

  1. إنشاء تطبيق وحدة تحكم يستخدم الطرف الثالث DLL لإنشاء PDF وقبول URL و FilePath كمعلمات وإرجاع PDF حجم وعدد الصفحات.

  2. قم بإنشاء إجراء CLR المخزن الذي يستدعي تطبيق وحدة التحكم على الخادم

  3. أقوم بتغليف هذا كله في إجراء مخزن واحد يستدعي تطبيق CLR لإنشاء PDF ثم أكتب البيانات الوصفية حوله إلى قاعدة البيانات.

أدرك أن هذا ليس مثاليًا ولا يجب أن تفعل أي شيء مجنون جدًا داخل الزناد!

أذكرها هنا فقط للآخرين الذين لديهم أسئلة حول استخدام DLL الخاص بجهة خارجية في CLR الخاصة بهم.

أملي هو أنه من خلال تشغيل وحدة تحكم cmd.exe لتشغيل DLL لجهة خارجية ، بدلاً من تشغيل كل شيء في proc ، إذا تعطل ، فلن يؤثر سلبًا على SQL Server بنفس القدر. هذا ما أتمنى.

يرجى التعليق إذا كان هذا نهجًا سيئًا حقًا ولماذا.

1
MikeTeeVee