Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

EF4 - Избраната съхранена процедура не връща колони

EF не поддържа импортиране на съхранени процедури, които изграждат набор от резултати от:

  • Динамични заявки
  • Временни таблици

Причината е, че за импортиране на процедурата EF трябва да я изпълни . Такава операция може да бъде опасна, защото може да предизвика някои промени в базата данни. Поради това EF използва специална SQL команда, преди да изпълни съхранената процедура:

SET FMTONLY ON

Изпълнявайки тази команда, съхранената процедура ще върне само "метаданни" за колоните в своя набор от резултати и няма да изпълни своята логика. Но тъй като логиката не е изпълнена, няма временна таблица (или изградена динамична заявка), така че метаданните не съдържат нищо.

Имате два избора (освен този, който изисква пренаписване на вашата съхранена процедура, за да не използвате тези функции):

  • Дефинирайте ръчно върнатия комплексен тип (предполагам, че трябва да работи)
  • Използвайте хак и само за добавяне на съхранената процедура поставете в началото й SET FMTONLY OFF . Това ще позволи на останалата част от вашия SP код да се изпълни по нормален начин. Просто се уверете, че вашият SP не променя никакви данни, защото тези модификации ще бъдат изпълнени по време на импортиране! След успешно импортиране премахнете този хак.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използвайте TYPE_NAME(), за да получите името на тип данни в SQL Server

  2. Автоматично увеличаване на първичния ключ в SQL Server Management Studio 2012

  3. Използвайте IDENT_CURRENT() за връщане на текущата стойност на самоличността в колона за самоличност в SQL Server

  4. Не може да се влезе в SQL Server + SQL Server Удостоверяване + Грешка:18456

  5. Динамична PIVOT заявка на SQL Server?