هل يتطلب الرجوع إلى التطبيق Microsoft.SqlServer.Smo تجميعات إضافية ليتم تضمينها على الجهاز المستهدف؟

StackOverflow https://stackoverflow.com/questions/76933

  •  09-06-2019
  •  | 
  •  

سؤال

لدي تطبيق صغير يشير إلى مجموعة Microsoft.SqlServer.Smo (حتى أتمكن من عرض قائمة الخوادم وقواعد البيانات للمستخدم التي يمكنه الاتصال بها).

أشار طلبي في الأصل إلى Microsoft.SqlServer.Smo وMicrosoft.SqlServer.ConnectionInfo.سارت الأمور كما هو متوقع في صندوق التطوير الخاص بي.

عندما قمت بتثبيت التطبيق على جهاز اختبار، تلقيت رسالة System.IO.FileNotFoundException.وتضمنت تفاصيل الرسالة ما يلي:تعذر تحميل الملف أو التجميع Microsoft.SqlServer.SmoEnum

لقد قمت في النهاية بحل المشكلة عن طريق الرجوع إلى التجميعات التالية بالإضافة إلى تلك المذكورة أعلاه:

  • Microsoft.SqlServer.SmoEnum
  • Microsoft.SqlServer.SqlEnum
  • Microsoft.SqlServer.BatchParser
  • Microsoft.SqlServer.Replication

هل يمكن لأي شخص أن يؤكد أنني أحتاج بالفعل إلى تضمين كل من هذه التجميعات الإضافية في تطبيقي (وبالتالي تثبيتها على أجهزة المستخدم) على الرغم من أن التطبيق يعمل بشكل جيد في صندوق التطوير الخاص بي دون الإشارة إليها؟

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

المحلول

نعم، لا بد من ضمهم.من المحتمل أن يكون لديك SQL Server مثبتًا على جهاز التطوير، والذي يضع هذه التجميعات في ذاكرة التخزين المؤقت للتجميع العمومي.عندما تقوم بالإنشاء، يقوم Visual Studio بالسحب منها من GAC.ويفترض أيضًا أن GAC لأي جهاز كمبيوتر سيتم نشره عليه سيحتوي أيضًا على تلك الملفات.إذا لم يكن الأمر كذلك، فإنه يطرح الاستثناء FileNotFound.

نصائح أخرى

تحتاج إلى تثبيت ملفين MSI على الجهاز المستهدف، وهما:

1) SQLSysClrTypes.msi [هذا مطلوب لـ C# -> SMO GAC]

2) SharedManagementObjects.msi

بالنسبة لـ SQL Server 2014، يمكنك تنزيلها هنا.

ويجب عليك أيضًا التأكد من صحة الإصدار.يمكن العثور على هذين الملفين بقليل من البحث على Google.بهذه الطريقة لا تقوم بنسخ أي شيء إلى المستوى المحلي وسيتم حل المشكلة من GAC.

أعلم أن هذا سؤال قديم، لكن الإجابات لم تكن مرضية.

نظرًا لأن JIT ترتبط بالتجميعات الخارجية في وقت التشغيل، فلا يمكن الإجابة على هذا السؤال دون تحليل التعليمات البرمجية الخاصة بك ورؤية ما تستدعيه وبالتالي ما تستدعيه تلك الاستدعاءات، وما إلى ذلك.

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

والشيء الآخر الذي يجب عليك النظر فيه هو سبب عدم وجود الجمعيات الأربعة التي ذكرتها في GAC.يبدو بالتأكيد أنهم ينبغي أن يكونوا كذلك.

بالنسبة لي تبين أن هذه الإجابة غير صحيحة.أضفت المراجع المذكورة أعلاه ولكن دون حل.في النهاية وجدت أنني بحاجة فقط إلى المرجع:

Microsoft.SqlServer.Smo

...والقرار التالي:

تظهر لي رسالة الخطأ "جرت محاولة لتحميل برنامج بتنسيق غير صحيح" في مشروع النسخ المتماثل لـ SQL Server

للتلخيص، كنت بحاجة إلى تمكين IIS 6 الخاص بي لتمكين تطبيق 32 بت على تجمع تطبيقات IIS.هذا لأنه كان لدي نظام Win 7 x64 ولكن تم تثبيت SQL x86.من المؤسف أن رسالة الخطأ لا يمكن أن تكون أكثر تحديدًا، أليس كذلك؟

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