2016-09-28 1 views
1

У меня есть CLR-библиотека, написанная на C#, которая ведет себя странно (для меня). Я успешно создал сборку в SQL Server с помощью allow_set = unsafe и создал функции SQL, которые вызывают функции dll. Когда я запускаю функции в SQL Server и попадает в ту часть кода, которая ищет переменную среды (переменная среды существует как для системы, так и для моего пользователя), она получает значение null для значения. Однако, если я возьму тот же код, скомпилирую его как исполняемый файл и запустив его за пределами SQL Server (тот же компьютер), он может легко найти переменную окружения. Если я удалю часть переменной окружения и просто переустановить значение в DLL, все будет работать так, как ожидалось. Примечание: код открывает сокет с внешней службой и может это сделать даже при запуске на SQL Server, поэтому я уверен, что это не проблема с DLL. Соответствующий код приведен ниже:C# SQL CLR не может прочитать переменную окружения

string propertiesFile = Environment.GetEnvironmentVariable(ENVIRONMENT_VARIABLE_NAME); 

Я использую SQL Server Express с SQL Server Management Studio Версия 12.0.2000.8 на машине Windows 7, и я попробуйте перезагрузить мой SQL Server Management Studio после переменной среды была создана ,

Спасибо за чтение!

+0

Попробуйте использовать разные цели: https://msdn.microsoft.com/en-us/library/system.environmentvariabletarget(v=vs.110).aspx – artm

+0

Так оно и было. Благодаря! – Hmmmmm

ответ

1

Благодаря artm для указания использования целей. Когда я сменил код на:

string propertiesFile = Environment.GetEnvironmentVariable(ENVIRONMENT_VARIABLE_NAME, EnvironmentVariableTarget.Machine); 

все работало нормально.