Tim*_*fey 0 sql-server clr sqlclr sql-server-2008
我想在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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是例外
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)
Run Code Online (Sandbox Code Playgroud)
也许尝试更改建立连接的using语句
using (SqlConnection conn = new SqlConnection("context connection=true;"))
Run Code Online (Sandbox Code Playgroud)
这告诉CLR使用当前的SQL连接.
我猜你失败的原因是,通过指定集成安全性,它将使用SQL Server服务帐户的凭据.
在此更多信息点击这里
| 归档时间: |
|
| 查看次数: |
1729 次 |
| 最近记录: |