Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SqlFunction ne parvient pas à ouvrir la connexion contextuelle malgré la présence de DataAccessKind.Read

Le problème est le suivant :

  1. SQLCLR n'autorise aucun accès aux données dans TestFillRow

  2. Même s'il "semble" que votre TestFillRow n'accède pas aux données, la façon dont le compilateur traduit le code avec des instructions "yield" consiste en fait à différer son exécution jusqu'au premier appel .MoveNext() à l'itérateur. D'où l'énoncé suivant :

    using (SqlConnection con = new SqlConnection("context connection=true"))        
    

    est exécuté dans TestFillRow ... ce qui est illégal.

N'utilisez pas le retour de rendement; à la place, chargez le résultat entier dans une List<> et renvoie la liste à la fin de la fonction UD.