Nicht finden können gespeicherte Prozedur (mit Schemata)
In meiner Datenbank habe ich drei schemas:
- Schema1
- Schema2
- Schema3
Objekte werden getrennt in jedem dieser Schemata abhängig, dass Objekte, die Funktion, die ich dachte, war eine gute Art, Dinge zu tun. Diese wiederum lässt keine Objekte in dbo
außer den Standard-Objekte aus der model
Datenbank, die ich nicht geändert haben.
Wenn ich versuche zu verweisen, die eine gespeicherte Prozedur aus dem code, während Sie Ihre eine gespeicherte Prozedur, erhalte ich eine Stored Procedure Not Found
Fehler. Wenn ich das CommandType
zurück zum text, den code dann funktioniert.
Habe ich nicht den code hatte, aber es sieht ungefähr so aus (geschrieben aus der Spitze von meinem Kopf, so dont erwarten, dass es zu kompilieren):
using(DbConnection conn as new DbConnection("Conn String")
{
using(DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Schema1.usp_Category_MySproc @param1,@param2";
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
DbDataReader rdr = cmd.ExecuteQuery();
while(rdr.Read())
{
//DO STUFF
}
}
}
Mir ist auch aufgefallen, dass die Parameter müssen übergeben werden, damit andere Sie sind alle vertauscht, um (da ich nur in der Lage gewesen zu verwenden CommandType.Normal
habe ich nicht getestet, die params mit den anderen Befehl geben). Ich vermute, es sollte nicht egal in welcher Reihenfolge die Parameter übergeben werden, wie, wie lange, wie jeder parameter übergeben wird?
Irgendwelche Ideen?
Wie immer, Antworten entweder in c# oder vb sind akzeptabel.
Hinweise:
- .Net 3.5 auf Windows 7 Enterprise
- Ja, ich bin mit DbCommand nicht SqlCommand
- Welche Sql-Server-2005->2012
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entsprechend der Dokumentation, es ist auf der Suche für eine gespeicherte Prozedur mit dem Namen
"Schema1.usp_Category_MySproc @param1,@param2"
, die natürlich nicht vorhanden ist.War ich in der Lage, verwenden Sie den folgenden code, um Parameter zu dem Befehl hinzufügen:
Ich denke, Sie versuchen, einen Befehl auszuführen, der bereits in Ihrer Datenbank?
Wenn also Ihr besser dran, bekommen die StoredProc zurück zu erhalten, fügen Sie den Parameter unter Verwendung des folgenden formats...
Check-out Abwicklung Parameter: http://msdn.microsoft.com/en-us/library/ff649451.aspx
Wenn Sie den Befehl geben der StoredProcedure, dann sollten Sie nicht geben Sie die parameter-Namen in dem Befehl text. Es sollte Aussehen wie dieses: