Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SqlFunction nie otwiera połączenia kontekstowego pomimo obecności DataAccessKind.Read

Problem jest następujący:

  1. SQLCLR nie pozwala na dostęp do danych wewnątrz TestFillRow

  2. Mimo że „wygląda” na to, że TestFillRow nie uzyskuje dostępu do danych, sposób, w jaki kompilator tłumaczy kod za pomocą instrukcji „yield”, polega na faktycznym odroczeniu jego wykonania do pierwszego wywołania .MoveNext() do iteratora. Dlatego następujące oświadczenie:

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

    zostanie wykonany wewnątrz TestFillRow ... co jest nielegalne.

Nie używaj zwrotu zysku; zamiast tego załaduj cały wynik do List<> i zwróć listę na końcu funkcji UD.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć plik danych z bazy danych programu SQL Server (T-SQL)

  2. TDS Server — używaj instrukcji Transact-SQL (T-SQL) do pracy z danymi Salesforce w SQL Server

  3. SQL Server - Od długości i szerokości geograficznej do typu danych geometrii

  4. Co to jest we/wy STATYSTYKI w programie SQL Server?

  5. SELECT DISTINCT ignoruje różne przypadki