簡體   English   中英

C# SQL CLR 無法讀取環境變量

[英]C# SQL CLR cannot read environment variable

我有一個用 C# 編寫的 CLR dll,它的行為很奇怪(對我來說)。 我使用permission_set = unsafe 在SQL Server 中成功創建了程序集,並創建了調用dll 函數的SQL 函數。 當我在 SQL Server 中運行這些函數並且它到達查找環境變量的代碼部分(系統和我的用戶都存在環境變量)時,它的值變為空值。 但是,如果我采用相同的代碼,將其編譯為可執行文件,然后在 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);

一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM