Simptome
Atunci când rulați o extensie de limbă externă de la terți care este dependentă de altă bibliotecă partajată, este posibil să primiți un mesaj de eroare.
Eroare bibliotecă negăsită
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.
Rezolvare
Această problemă este remediată în următoarea actualizare cumulativă pentru SQL Server:
Despre actualizările cumulative pentru SQL Server:
Fiecare actualizare cumulativă nouă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Soluție
Pentru Windows:
Pentru a rezolva această problemă, ar trebui să adăugați în mod explicit una dintre următoarele opțiuni:
- calea către bibliotecile de dependențe dacă arhivarul extensiei de limbă nu conține biblioteca de dependențe SAU
- Directoarele de limbă și extensii Dacă arhivarul extensiei de limbă conține biblioteca de dependențe în plus față de extensia propriu-zisă
la variabila de mediu PATH a sistemului, astfel încât să poată fi găsite bibliotecile de dependențe.
De exemplu:
Scenariul 1:
- Aveți o extensie de limbă cu o bibliotecă de dependențe la locația: C:\\Users\\admin\\Documents\\dependency.dll.
- language-extension.zip conține numai languageExtension.dll.
- Apoi, asigurați-vă că calea către dependență este adăugată la variabila de mediu PATH a sistemului. De exemplu, C:\\Users\\admin\\Documents.
CREAREA UNEI LIMBI EXTERNE [mylanguage]
FROM (CONTENT = N'C:\\Users\\admin\\Documents\\language-extension.zip', FILE_NAME = 'languageExtension.dll')
GO
Scenariul 2:
- Dacă language-extension.zip conține atât languageExtension.dll extensie, cât și biblioteca de dependențe - dependency.dll, găsiți mai întâi ID-ul limbii următoare, începând de la 65536, rulând următoarea vizualizare de catalog în baza de date respectivă și adăugând 1 la cel mai înalt ID de limbă instalat, mai mare decât 65536. De exemplu, pentru baza de date principală, "SELECT * FROM master.sys.external_languages".
- Generați calea către directorul lingvistic înlocuind numele instanței, database_id și next_language_id în următoarea cale: C:\\Program Files\\Microsoft SQL Server\\MSSQL15. ID de limbă> MSQLSERVER\\MSSQL\\ExternalLanguages\\<database_id>\\<next.
- Apoi, creați limba externă după cum urmează:
CREAREA UNEI LIMBI EXTERNE [mylanguage]
FROM (CONTENT = N'C:\\Users\\admin\\Documents\\language-extension.zip', FILE_NAME = 'languageExtension.dll',
ENVIRONMENT_VARIABLES = N'{"CALL":"C:\\ProgramFiles\\Microsoft SQLServer\\MSSQL15. MSSQLSERVER\\MSSQL\\ExternalLanguages\\1\\65536"}');
GO
Pentru Linux:
Nu există nicio remediere și trebuie întotdeauna să adăugați ${ORIGIN} la opțiunea rpath a linkerului atunci când compilați extensiile.
De exemplu: set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath,'${ORIGIN}'")
Referințe
Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.