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

EF4 — wybrana procedura składowana nie zwraca żadnych kolumn

EF nie obsługuje importowania procedur składowanych, które budują zestaw wyników z:

  • Zapytania dynamiczne
  • Tabele tymczasowe

Powodem jest to, że aby zaimportować procedurę, EF musi ją wykonać . Taka operacja może być niebezpieczna, ponieważ może wywołać pewne zmiany w bazie danych. Z tego powodu EF używa specjalnego polecenia SQL przed wykonaniem procedury składowanej:

SET FMTONLY ON

Po wykonaniu tego polecenia procedura składowana zwróci tylko „metadane” dotyczące kolumn w swoim zestawie wyników i nie wykona swojej logiki. Ale ponieważ logika nie została wykonana, nie ma tabeli tymczasowej (ani wbudowanego dynamicznego zapytania), więc metadane nic nie zawierają.

Masz dwie możliwości (oprócz tej, która wymaga ponownego napisania procedury składowanej, aby nie używać tych funkcji):

  • Zdefiniuj zwrócony typ złożony ręcznie (chyba powinno działać)
  • Użyj hacka i tylko w celu dodania procedury składowanej umieść na jej początku SET FMTONLY OFF . Pozwoli to na normalne wykonanie reszty kodu SP. Tylko upewnij się, że Twój SP nie modyfikuje żadnych danych, ponieważ te modyfikacje zostaną wykonane podczas importu! Po udanym imporcie usuń ten hack.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co właściwie oznacza indeks klastrowy i nieklastrowy?

  2. Połącz się z bazą danych MSSQL za pomocą Flask-SQLAlchemy

  3. Przygotuj nową maszynę wirtualną dla SQL Server 2014 CTP1

  4. Zaktualizowałem sterownik ODBC programu SQL Server i negatywnie wpłynęło to na wydajność. Co mogę zrobić?

  5. Jak połączyć wiele wierszy w listę rozdzielaną przecinkami w SQL Server 2005?