KB4577594 - FIX: Add language and extension directories to the PATH environment variable in SQL Server 2019

Applies to: SQL Server 2019 on LinuxSQL Server 2019 on Windows


When you run a third-party external language extension that is dependent on another shared library, you may receive an error message.
Library not found error


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section. 


This issue is fixed in the following cumulative update for SQL Server:
About cumulative updates for SQL Server:
Each new cumulative update for SQL Server contains all the hotfixes and all the security fixes that were included with the previous cumulative update. Check out the latest cumulative updates for SQL Server:


For Windows:
To work around this issue, you should explicitly add either:
  • the path to the dependency libraries if the language extension zip does not contain the dependency library OR
  • the language and extension directories If the language extension zip contains the dependency library in addition to the extension itself
to the system PATH environmentvariable, so that the dependency libraries can be found.

For example:
Scenario 1:
  1. You have a language extension with a dependency libraryat location: C:\\Users\\admin\\Documents\\dependency.dll.
  2. The language-extension.zipcontains only the languageExtension.dll.
  3. Then, make sure the path to thedependency is added to the system PATH environment variable. For example, C:\\Users\\admin\\Documents.
FROM (CONTENT = N'C:\\Users\\admin\\Documents\\language-extension.zip', FILE_NAME = 'languageExtension.dll')
Scenario 2: 
  1. If the language-extension.zip contains both the extension languageExtension.dll and its dependency library - dependency.dll, first find the next language ID starting from 65536 by running the following catalog view in the respectivedatabase and adding 1 to the highest installed language ID greater than 65536. For example, for master database, "SELECT * FROM master.sys.external_languages".
  2. Generate the path to the language directory by replacingyour instance name, database_id and next_language_id in the following path: C:\\Program Files\\Microsoft SQLServer\\MSSQL15.MSSQLSERVER\\MSSQL\\ExternalLanguages\\<database_id>\\<next language id>.
  3. Then, create the external language asfollows:
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"}');
For Linux:
There is no fix, and you should always add ${ORIGIN} to the linker rpath option when you compile the extensions.


Learn about the terminology that Microsoft uses to describe software updates.