الأعراض
عند تشغيل ملحق لغة خارجية تابع لجهة خارجية تعتمد على مكتبة مشتركة أخرى، قد تتلقى رسالة خطأ.
الخطأ "لم يتم العثور على المكتبة"
الحالة
لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".
الدقة
تم تصحيح هذه المشكلة في التحديث التراكمي التالي ل SQL Server:
حول التحديثات التراكمية ل SQL Server:
يحتوي كل تحديث تراكمي جديد ل SQL Server على جميع الإصلاحات العاجلة وجميع إصلاحات الأمان التي كانت مضمنة في التحديث التراكمي السابق. تحقق من آخر التحديثات التراكمية ل SQL Server:
الحل البديل
بالنسبة لنظام التشغيل Windows:
للتغلب على هذه المشكلة، يجب أن تضيف إما:
- المسار إلى مكتبات التبعيات إذا لم يتضمن ملحق اللغة ZIP مكتبة التبعيات أو
- دلائل اللغة والملحقات إذا كان ملحق اللغة، يحتوي zip على مكتبة التبعيات بالإضافة إلى الملحق نفسه
إلى متغير بيئة PATH للنظام، بحيث يمكن العثور على مكتبات التبعيات.
على سبيل المثال:
السيناريو 1:
- لديك ملحق لغة مع مكتبة تبعية في الموقع: C:\\Users\\admin\\Documents\\dependency.dll.
- يحتوي language-extension.zip على languageExtension.dllفقط.
- بعد ذلك، تأكد من إضافة المسار إلى التبعية إلى متغير بيئة PATH للنظام. على سبيل المثال، C:\\Users\\admin\\Documents.
إنشاء لغة خارجية [mylanguage]
FROM (CONTENT = N'C:\\Users\\admin\\Documents\\language-extension.zip', FILE_NAME = 'languageExtension.dll')
GO
السيناريو 2:
- إذا احتوت language-extension.zip على كل من languageExtension.dll الملحقات ومكتبة التبعيات الخاصة به - dependency.dll، فابحث أولا عن معرف اللغة التالي بدءا من 65536 عن طريق تشغيل طريقة عرض الكتالوج التالية في قاعدة البيانات المعنية وإضافة 1 إلى معرف اللغة الأعلى المثبت الأكبر من 65536. على سبيل المثال، لقاعدة البيانات الرئيسية، "SELECT * FROM master.sys.external_languages".
- قم بإنشاء المسار إلى دليل اللغة باستبدال اسم المثيل الخاص بك، database_id next_language_id في المسار التالي: C:\\Program Files\\Microsoft SQL Server\\MSSQL15. MSSQLSERVER\\MSSQL\\ExternalLanguages\\<database_id>\\<معرف اللغة> التالي.
- بعد ذلك، قم بإنشاء اللغة الخارجية كما يلي:
إنشاء لغة خارجية [mylanguage]
FROM (CONTENT = N'C:\\Users\\admin\\Documents\\language-extension.zip', FILE_NAME = 'languageExtension.dll',
ENVIRONMENT_VARIABLES = N'{"PATH":"C:\\ProgramFiles\\Microsoft SQLServer\\MSSQL15. MSSQLSERVER\\MSSQL\\ExternalLanguages\\1\\65536"}');
GO
بالنسبة لنظام التشغيل Linux:
لا يوجد أي إصلاح ، ويجب دائما إضافة ${ORIGIN} إلى خيار مسار رابط عند تجميع الملحقات.
على سبيل المثال: set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath,'${ORIGIN}'")
المراجع
تعرّف على المصطلحات التي تستخدمها Microsoft لوصف تحديثات البرامج.