Una class library (c#) no tiene acceso por si misma a un archivo de configuración.
Cuando se publica una DLL en el CLR del SQL Server, éste levanta la DLL en su memoria interna y se desconoce la ubicación física de la misma.
También hay que considerar la implementación en un cluster de servidores SQL Server.
Las opciones analizadas son las siguientes:
- Especificar un recurso compartido "pre definido" donde se encuentre el archivo de configuración.
- Obtener parámetros consumiendo un servicio API externo "pre definido" por código. Para nuestro caso en particular sería un nuevo método dentro la "Analytics_WebApi" existente.
- Utilizar archivo de configuración propio del SQL Server (sqlservr.exe.config).
- Obtener parámetros consumiendo una función o SP del SQL Server. Desde CLR se tiene acceso a la instancia de SQL Server donde está alojado. A partir de allí se podría definir una función en la master o una base de datos "pre definida" con los parámetros necesarios.
Conclusiones:
La opción 1 parece ser la más fácil de implementar, y a la vez compatible con la publicación de las DLLs al momento de levantar los assemblies dentro del SQL Server.
Sin embargo, la opción 2 permite una implementación transparente en ambientes de nube y/o contenedores, definiendo el acceso a la API como un DNS Alias.
Referencias:
Does SQL Server CLR Integration support configuration files?
Muy buen artículo que propone utilizar archivo de configuración del SQL Server (sqlservr.exe.config).
HOW TO USE A CONFIGURATION (.CONFIG) FILE IN SQL SERVER CLR
Se explica cómo obtener el path y acceder al archivo de configuración del SQL Server.