Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SqlFunction non riesce ad aprire la connessione al contesto nonostante DataAccessKind.Read sia presente

Il problema è il seguente:

  1. SQLCLR non consente alcun accesso ai dati all'interno di TestFillRow

  2. Anche se "sembra" che TestFillRow non acceda ai dati, il modo in cui il compilatore traduce il codice con le istruzioni "yield" è in realtà rinviando l'esecuzione fino alla prima chiamata .MoveNext() all'iteratore. Pertanto la seguente affermazione:

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

    viene eseguito all'interno di TestFillRow ... che è illegale.

Non utilizzare il rendimento del rendimento; carica invece l'intero risultato in un List<> e restituisce l'elenco alla fine della funzione UD.