SQL Server kann nicht finden meine benutzerdefinierte Funktion in einer gespeicherten Prozedur
Muss ich haben einige Berechtigungen falsch, aber ich kann nicht herausfinden, wie. Der folgende code ist vereinfacht, aber ich kann nicht einmal dies funktioniert
CREATE FUNCTION ufTest
(
@myParm int
)
RETURNS int
AS
BEGIN
DECLARE @Result int
SELECT @Result = @myParm + 1
RETURN @Result
END
GO
Dann habe ich nur wollen, um in der Lage sein, um die Funktion aufzurufen, die aus einer gespeicherten Prozedur:
CREATE PROCEDURE dbo.[uspGetGroupProfileService]
@id int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @otherId int;
SET @otherId = dbo.ufTest(@id);
END
SQLServer sagt mir, dass es nicht finden können dbo.ufTest
. Es zeigt sich unter [DB]\Programmability\Funktionen\skalarwertfunktionen aber ich kann nicht herausfinden, wie es zu benutzen.
Jemand eine Idee, was ich falsch mache?
Sind Sie sicher, dass es erstellt wird, in der
Was passiert, wenn Sie versuchen, führen Sie den code aus der SP, indem Sie sich als einen Stapel (mit einer fest codierten Wert oder was auch immer)?
Die gespeicherte Prozedur läuft einfach gut. Ich habe einfach nur ein wenig code in eine Menge von verschiedenen gespeicherte Prozeduren, die ich verschieben möchten, um eine Funktion. Das sollte eigentlich nicht so schwer sein. Ich bin Anfang zu denken, es ist etwas falsch mit der Installation
+1 ~bump~ nur dieses problem ist mir in SQLServer 2005.
dbo
schema? Sie erhalten in was auch immer Ihr Standard-schema ist.Was passiert, wenn Sie versuchen, führen Sie den code aus der SP, indem Sie sich als einen Stapel (mit einer fest codierten Wert oder was auch immer)?
Die gespeicherte Prozedur läuft einfach gut. Ich habe einfach nur ein wenig code in eine Menge von verschiedenen gespeicherte Prozeduren, die ich verschieben möchten, um eine Funktion. Das sollte eigentlich nicht so schwer sein. Ich bin Anfang zu denken, es ist etwas falsch mit der Installation
+1 ~bump~ nur dieses problem ist mir in SQLServer 2005.
InformationsquelleAutor Josh Russo | 2011-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Funktioniert für mich.
Versuchen
CREATE FUNCTION dbo.ufTest ...
Ich nehme an, Ihr Standard-schema kann nicht sein
dbo
und es endet in einem anderen schema. Ansonsten die einzige Erklärung die ich mir denken kann ist, könnten Sie brauchen, um Berechtigungen zu gewähren.Kein Würfel. Wenn Sie bemerken Ende von meinem ursprünglichen post. Es zeigt sich unter der entsprechenden Datenbank im Management Studio.
Können Sie mit der rechten klicken Sie auf die Skalare Funktion im SSMS unter dem Konto, das Sie verwenden, zum erstellen dieser Objekte, wählen Sie "Skript-Funktion, die als select..." Füllen Sie den parameter-Wert ein und führen Sie es standalone? Wenn ja, können Sie es ausführen von der gespeicherten Prozedur im SSMS unter demselben account? Wenn ja und das problem ist in Ihrer Anwendung müssen Sie tun
GRANT EXECUTE ON [dbo].[ufTest]
ZU[username]
auch Sie sind nicht einfach nur ab, was intellisense Ansprüche?Danke!!!! Es arbeiteten alle zusammen. Es war SSMS Schrauben mich. Er betonte, der Aufruf der Funktion sagen, dass Sie nicht finden konnte, so dass ich nie die Mühe gemacht, wirklich zu versuchen, um Sie auszuführen.
Ich erkannte, dass dies war Ihre Antwort. LOL ich war ein wenig erschöpft von diesem problem, das hat keinen Sinn. Nochmals vielen Dank für Wandern mir durch.
InformationsquelleAutor Martin Smith
Script aus der UDF und überprüfen Sie den schema-Namen. Es ist wahrscheinlich nicht dbo ist. Ich würde die UDF-definition umfasst insbesondere dbo. In anderen Worten:
InformationsquelleAutor Randy Minder
Hatte genau das gleiche problem und mir wurde fixiert, indem Sie einfach einen Neustart von SQL Server Management Studio.
Nur dieses posting in Fall, jemand hat alles richtig gemacht und ist noch nicht in der Lage seine Funktion.
InformationsquelleAutor jrdev22
Versuchen den Aufruf mit select anstatt einen Satz. Und Sie überprüft haben, dass aus gehört dem dbo-schema?
Oder bei der Zuweisung mehrerer Werte auf einmal oder, wenn u mit einer where-Klausel oder wenn innerhalb einer Funktion aufgerufen ufTest 😉 Aber davon abgesehen tut es behandeln von null-Werten unterschiedlich, die Ihrem Fall so war, lohnt sich ein Schuss. Sie bekam eine verrückte, nicht nachvollziehbare Problem gibt, viel Glück!
Was genau meinst du mit der Zuweisung mehrerer Werte? Mehrere Argumente aus? Tatsächlich stellte sich heraus, dass es nur SSMS Angabe eines falschen Fehler im Abfrage-editor, so dass ich eigentlich nie versucht, um Sie auszuführen.
Nur darüber zu reden, durch Komma getrennt wahrnehmen; Sie können es nicht mit einstellen nichts großes. Ich bin froh, Sie haben Ihr Problem herausgefunden.
InformationsquelleAutor Malk
Scheint es, könnte ein Fehler in der Abfrage-editor. Die Funktion erscheint in der Baumstruktur an der richtigen Stelle, aber auch die Benennung der Funktion dbo.xxxxxx die Funktion nicht angezeigt, im Abfrage-editor, bis Sie Sie schließen und öffnen Sie eine neue Sitzung, die dann angezeigt wird, wenn Sie geben in dbo.
Wenn Sie den Namen ändern der Funktion die alte nicht vorhandene Funktion ist avalable aber nicht der neue name. Refresh fix nicht nur dieses schließen Sie die Sitzung und starten Sie eine neue.
Warum ich sagen, dass dies vielleicht ein bug ist, dass die Berechtigungen Eigenschaften für Tisch-Funktion includeds ein blauer link, um die Eigenschaften für das schema, aber die Skalare Funktionen gibt es nicht. So kann es sein, einen tiefer liegenden Fehler in der Art und Weise der schema festgelegt ist, an die erste Stelle setzen, für die kann es eine Arbeit um. Oder vielleicht das schema in der Datenbank, ich arbeite nicht korrekt eingerichtet ist.
Ich hoffe, jemand anderes kann Sie glänzen ein wenig Licht auf dieses Problem.
InformationsquelleAutor AdsFMS
Als letzten resort, wenn einer der oben genannten und vor allem @jrdev22 die Antwort hat dir nicht helfen (und Links, die Sie nicht verstehe, warum), starten Sie den SQL Server - service in Configuration Manager seit dem Neustart des SSMS allein manchmal nicht alles neu einstellen (z.B. ähnlich wie beim anlegen eines neuen login-Instanz aber nicht in der Lage, sich mit es).
InformationsquelleAutor Derptastic
Wenn Sie nicht in der Lage zu finden, die Funktion, die Sie gerade erstellt haben, gibt es zwei Gründe dafür.
In diesem Fall schließen Sie einfach den sql server und öffnen Sie es, und Sie sollten in der Lage sein die Funktion.
InformationsquelleAutor K Saketh
Ich hatte gerade ein Problem, wo dies der Fehler und alle Ratschläge auf dieser Spalte wurde nicht als gut.
Sicher sein, überprüfen Ihre Funktion Erklärung der Art und Verwendung dieses Typs.
Als ich erklärte, dass ein return-type-Tabelle und versucht, es zu nennen mit
Select functionName()
wo ich brauchte, umSELECT * FROM functionName()
InformationsquelleAutor TylerSmall19