c# SQL CLR不能读取环境变量
本文关键字:读取 环境变量 不能读 不能 SQL CLR | 更新日期: 2023-09-27 18:09:22
我有一个用c#编写的CLR dll,它的行为很奇怪(对我来说)。我成功地在SQL Server中创建了permission_set =不安全的程序集,并创建了调用dll函数的SQL函数。当我在SQL Server中运行函数时,它会到达查找环境变量(环境变量存在于系统和我的用户)的代码的一部分,它的值为null。然而,如果我采用相同的代码,将其编译为可执行文件,然后在SQL Server(同一台计算机)之外运行它,它可以找到环境变量。如果我删除环境变量部分并将值硬编码到DLL中,则一切都按预期工作。注意:代码打开一个套接字与外部服务,并能够这样做,即使在SQL Server中运行,所以我相当有信心,这不是与DLL的权限问题。相关代码如下:
string propertiesFile = Environment.GetEnvironmentVariable(ENVIRONMENT_VARIABLE_NAME);
我在Windows 7机器上使用SQL Server Express与SQL Server Management Studio版本12.0.2000.8,我确实尝试在创建环境变量后重新启动SQL Server Management Studio。
感谢阅读!
感谢artm指出目标的使用。当我将代码改为:
string propertiesFile = Environment.GetEnvironmentVariable(ENVIRONMENT_VARIABLE_NAME, EnvironmentVariableTarget.Machine);
一切正常