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)
謝謝,這是正確的答案 – Tim 2010-07-19 16:09:45