2009-10-27 185 views
0

我有這個用戶自定義函數。用戶自定義函數

public partial class UserDefinedFunctions 
{ 
    static int i; 
    [SqlFunction(IsDeterministic = true)] 
    public static SqlSingle f() 
    { 
     return new SqlSingle(1.3F); 
    } 
}; 

但它只適用於i是隻讀的。爲什麼?

回答

2

它也'工作'如果是讀寫。

如果「不工作」你的意思是,大會無法安裝在SQL,因爲它包含一個靜態字段,使用靜態類變量是危險的,原因在CLR Hosted Environment解釋說:

鑑於這些考慮,我們 不鼓勵使用SQL Server中使用的靜態變量 和類型爲 的靜態數據成員。對於SAFEEXTERNAL_ACCESS組件,SQL服務器 檢查裝配 的元數據在CREATE ASSEMBLY時間,如果它 發現使用靜態數據成員 和變量的失敗 創造這樣的組件。

標記您的組件是不安全的,你明白靜態變量和SQL會接受你的組件所帶來的風險的跡象。