私はCLR dllをC#で書かれています。私は、permission_set = unsafeでSQL Serverにアセンブリを作成し、dllの関数を呼び出すSQL関数を作成しました。 SQL Serverで関数を実行すると、環境変数(システムとユーザーの両方に環境変数が存在する)を検索するコードの部分に到達し、値がnullになります。しかし、同じコードを実行ファイルとしてコンパイルし、それをSQL Server(同じコンピュータ)の外で実行すると、環境変数がわかります。環境変数部分を削除して、DLLに値をハードコードするだけで、すべてが正常に動作します。注:コードは外部サービスを持つソケットを開き、SQL Serverで実行しているときでも実行できます。したがって、DLLでのアクセス許可の問題ではないと確信しています。関連するコードは以下の通りです:C#SQL CLRは環境変数を読み取ることができません
string propertiesFile = Environment.GetEnvironmentVariable(ENVIRONMENT_VARIABLE_NAME);
私は、Windows 7マシン上でSQL Server Management Studioのバージョン12.0.2000.8でSQL Server Expressを使用していますし、環境変数が作成された後、私は私のSQL Server Management Studioを再起動してみてくださいでした。
読んでいただきありがとうございます!
異なるターゲットで試してみてください。https://msdn.microsoft.com/en-us/library/system.environmentvariabletarget(v=vs.110).aspx – artm
これはそれでした。ありがとう! – Hmmmmm