KB4577594 - REMEDIERE: Adăugarea de directoare de limbă și extensii la variabila de mediu PATH în SQL Server 2019

Se aplică la
SQL Server 2019 on Linux SQL Server 2019 on Windows

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:

  1. Aveți o extensie de limbă cu o bibliotecă de dependențe la locația: C:\\Users\\admin\\Documents\\dependency.dll.
  2. language-extension.zip conține numai languageExtension.dll.
  3. 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:

  1. 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".
  2. 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.
  3. 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.