2010-07-19 102 views
0

我想在SQL Server 2008中使用CLR表值函數,該函數從本身內部訪問數據庫。我有一個權限異常。我試圖按照創建它的相同用戶來執行函數。所以,問題的原因尚不清楚..SQL Server 2008:執行嘗試通過連接訪問數據庫的CLR函數時出現異常

下面是函數:

public partial class MyClass 
    {  
     [SqlFunction(
      DataAccess = DataAccessKind.Read, 
      FillRowMethodName = "Availability_FillRow", 
      TableDefinition = "B0RID nchar(32)")] 
     public static IEnumerable Fn_SEARCH_Availability(SqlDateTime checkin, SqlInt32 overnights) 
     { 
      if (checkin.IsNull || overnights.IsNull) 
      { 
       return null; 
      } 
      List<ResultRoom> roomsResultList = new List<ResultRoom>(); 


     using (SqlConnection conn = new SqlConnection("Data Source=MachineName;Initial Catalog=DBNANE;Integrated Security=True")) 
     { 
      conn.Open(); 
     } 
     return roomsResultList; 
    } 
} 

這裏是例外

A .NET Framework error occurred during execution of user-defined routine or aggregate "Fn_SEARCH_Availability": 
System.Security.SecurityException: Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 
System.Security.SecurityException: 
    at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) 
    at System.Security.PermissionSet.Demand() 
    at System.Data.Common.DbConnectionOptions.DemandPermission() 
    at System.Data.SqlClient.SqlConnection.PermissionDemand() 
    at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) 
    at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 
    at System.Data.SqlClient.SqlConnection.Open() 
    at StoredProcedures.Fn_SEARCH_Availability(SqlDateTime checkin, SqlInt32 overnights) 

回答

5

也許嘗試改變using語句建立到

連接
using (SqlConnection conn = new SqlConnection("context connection=true;")) 

它告訴CLR使用當前的SQL連接。

我對你爲什麼失敗的猜測是,通過指定集成安全性,它將使用SQL Server服務帳戶的憑據。

更多有關此信息here

+0

謝謝,這是正確的答案 – Tim 2010-07-19 16:09:45

相關問題