KB4577594 — POPRAWKA: Dodawanie katalogów językowych i rozszerzeń do zmiennej środowiskowej PATH w SQL Server 2019 r.

Dotyczy
SQL Server 2019 on Linux SQL Server 2019 on Windows

Objawy

Podczas uruchamiania rozszerzenia języka zewnętrznego innej firmy, które jest zależne od innej biblioteki udostępnionej, może zostać wyświetlony komunikat o błędzie.

Błąd: nie znaleziono biblioteki

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.

Rozwiązanie

Ten problem został rozwiązany w następującej aktualizacji zbiorczej dla programu SQL Server:

Informacje o aktualizacjach zbiorczych programu SQL Server:

Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji skumulowanej. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:

Obejście

Dla systemu Windows:

Aby obejść ten problem, należy jawnie dodać:

  • ścieżka do bibliotek zależności, jeśli rozszerzenie języka zip nie zawiera biblioteki zależności LUB
  • Katalogi języka i rozszerzeń Jeśli rozszerzenie języka zip zawiera bibliotekę zależności oprócz samego rozszerzenia

do systemowej zmiennej środowiskowej PATH, aby można było znaleźć biblioteki zależności.

Na przykład:

Scenariusz 1:

  1. Masz rozszerzenie języka z biblioteką zależności w lokalizacji: C:\\Users\\admin\\Documents\\dependency.dll.
  2. language-extension.zip zawiera tylko languageExtension.dll.
  3. Następnie upewnij się, że ścieżka do zależności została dodana do systemowej zmiennej środowiskowej PATH. Na przykład C:\\Users\\admin\\Documents.

TWORZENIE JĘZYKA ZEWNĘTRZNEGO [mylanguage]

FROM (CONTENT = N'C:\\Users\\admin\\Documents\\language-extension.zip', FILE_NAME = 'languageExtension.dll')

GO

Scenariusz 2:

  1. Jeśli language-extension.zip zawiera zarówno rozszerzenielanguageExtension.dll , jak i jego bibliotekę zależności — dependency.dll, najpierw znajdź następny identyfikator języka, zaczynając od 65536, uruchamiając następujący widok wykazu w odpowiedniej bazie danych i dodając 1 do najwyższego zainstalowanego identyfikatora języka większego niż 65536. Na przykład w przypadku głównej bazy danych "SELECT * FROM master.sys.external_languages".
  2. Wygeneruj ścieżkę do katalogu języka, zastępując nazwę, database_id i next_language_id wystąpienia następującą ścieżką: C:\\Program Files\\Microsoft SQL Server\\MSSQL15. MSSQLSERVER\\MSSQL\\ExternalLanguages\\<database_id>\\<identyfikator następnego języka>.
  3. Następnie utwórz język zewnętrzny w następujący sposób:

TWORZENIE JĘZYKA ZEWNĘTRZNEGO [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

Dla systemu Linux:
      

Nie ma poprawki i zawsze należy dodać ${ORIGIN} do opcji rpath konsolidatora podczas kompilowania rozszerzeń.

Na przykład: set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath,'${ORIGIN}'")

Źródła informacji

Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.