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

C#, sp_executesql und falsche Syntax

Mir ist aufgefallen, dass Sie CommandType nicht auf StoredProcedure gesetzt haben... Ich weiß nicht, ob das die Ursache Ihres Problems ist oder nicht:

cmd.CommandType = CommandType.StoredProcedure;

Ich habe das selbst so oft gemacht, dass ich es nicht zählen kann.

Tipp, um Ihr Gedächtnis auszulösen, wenn dies das nächste Mal Ausnahmen auslöst:

Lassen Sie SQL Query Profiler geöffnet, während Sie Ihre App ausführen. Wenn jeder Befehl ausgeführt wird, zeigt er das SQL, das auf der Serverseite generiert und ausgeführt wird. Wenn das generierte SQL mit sp_executesql beginnt gefolgt von Ihrer Abfrage, dann wird sie als reguläre Abfrage ausgeführt - d. h. cmd.CommandType = CommandType.Text , wenn es mit exec beginnt , die Chancen stehen gut, dass es als gespeicherter Prozess ausgeführt wird. Stellen Sie sicher, dass Sie das richtige SQL für den Abfragetyp generiert bekommen, den Sie auszuführen versuchen.