2016-09-28 2 views
1

私は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を再起動してみてくださいでした。

読んでいただきありがとうございます!

+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); 

すべて正常に機能しました。

関連する問題