Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

EF4 - Prosedur tersimpan yang dipilih tidak mengembalikan kolom

EF tidak mendukung pengimporan prosedur tersimpan yang membuat kumpulan hasil dari:

  • Kueri dinamis
  • Tabel sementara

Alasannya adalah untuk mengimpor prosedur EF harus menjalankannya . Operasi tersebut bisa berbahaya karena dapat memicu beberapa perubahan dalam database. Karena itu EF menggunakan perintah SQL khusus sebelum menjalankan prosedur tersimpan:

SET FMTONLY ON

Dengan menjalankan perintah ini, prosedur tersimpan hanya akan mengembalikan "metadata" tentang kolom dalam kumpulan hasil dan tidak akan menjalankan logikanya. Tetapi karena logika tidak dijalankan, tidak ada tabel sementara (atau kueri dinamis yang dibangun) sehingga metadata tidak berisi apa pun.

Anda memiliki dua pilihan (kecuali yang memerlukan penulisan ulang prosedur tersimpan Anda untuk tidak menggunakan fitur ini):

  • Tentukan tipe kompleks yang dikembalikan secara manual (saya kira itu akan berhasil)
  • Gunakan peretasan dan hanya untuk menambahkan prosedur tersimpan, letakkan di awal SET FMTONLY OFF . Ini akan memungkinkan sisa kode SP Anda untuk dieksekusi dengan cara normal. Pastikan SP Anda tidak mengubah data apa pun karena modifikasi ini akan dijalankan selama impor! Setelah impor berhasil, hapus peretasan itu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkah saya menggunakan ADFS 2.0 untuk mengautentikasi pengguna tertentu terhadap SQL Server?

  2. PARSE() vs CAST() vs CONVERT() di SQL Server:Apa Perbedaannya?

  3. Bagaimana cara mengganti nilai (null) dengan 0 output di PIVOT

  4. Setel opsi 9 dalam prosedur tersimpan SQL Server menggunakan WinHttp.WinHttpRequest.5.1 untuk TLS 1.2

  5. Memecahkan masalah kueri yang berjalan lama di MS SQL Server