我想在 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)