Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SqlFunction kann keine Kontextverbindung öffnen, obwohl DataAccessKind.Read vorhanden ist

Das Problem ist folgendes:

  1. SQLCLR erlaubt keinen Datenzugriff innerhalb von TestFillRow

  2. Auch wenn es so aussieht, als ob Ihr TestFillRow nicht auf Daten zugreift, übersetzt der Compiler Code mit "yield"-Anweisungen, indem er seine Ausführung tatsächlich bis zum ersten Aufruf von .MoveNext() an den Iterator verzögert. Daher folgende Aussage:

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

    wird innerhalb von TestFillRow ausgeführt ... was illegal ist.

Yield return nicht verwenden; Laden Sie stattdessen das gesamte Ergebnis in eine List<> und die Liste am Ende der UD-Funktion zurückgeben.