У меня есть проект SqlServer с очень простым тестом для Table-Valued-Function: -
[SqlFunction(TableDefinition = "forename nvarchar(50)", FillRowMethodName = "TestFillRow", DataAccess = DataAccessKind.Read)]
public static IEnumerable TestConn(int ID)
{
using (SqlConnection con = new SqlConnection("context connection=true"))
{
//con.Open();
yield return "Anthony";
}
}
public static void TestFillRow(object obj, out string forename)
{
forename = (string)obj;
}
Обратите внимание, что в настоящий момент открытое соединение закомментировано. После развертывания я могу выполнить так в SQL: -
SELECT * FROM [dbo].[TestConn](1)
Все отлично работает.
Теперь я раскомментирую con.open()
, и он завершается с: -
Доступ к данным не разрешен в этом
контекст. Либо контекст является
функция или метод не помечены
DataAccessKind.Read или
SystemDataAccessKind.Read, является
обратный вызов для получения данных из FillRow
метод табличной функции или
метод проверки UDT.
Я не вижу, в чем проблема, функция TestConn имеет DataAccessKind.Read
.
Кто-нибудь знает какие-либо другие причины получения этой ошибки?