Table-Valued-Functionの非常に簡単なテストを含むSqlServerプロジェクトがあります:-
[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
ます。
このエラーが発生する他の理由を知っている人はいますか?