mullfreak 10 Geschrieben 14. Dezember 2008 Melden Teilen Geschrieben 14. Dezember 2008 Hallo, ich habe eine Verständnisfrage zu "Gespeicherte Prozeduren". Wenn ich im SQL 2005 Mgm. Studio sage "Neue gespeicherte Prozedur..." dann kann ich eine neue Prozedur erstellen. Will ich die abspeichern, dann hat diese die Endung *.sql. Sind also gespeicherte Prozeduren nix anderes als SQL-Skripts? Gruß Mull Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 14. Dezember 2008 Melden Teilen Geschrieben 14. Dezember 2008 Moin, das Abspeichern im SSMS ist das Exportieren als Skript. Das hat nichts mit dem Datenbankobjekt selbst zu tun. Eine Stored Procedure erzeugst du als Datenbankobjekt, indem du sie mit "CREATE PROCEDURE" erzeugst. Führst du diese Anweisung aus, legt SQL Server die Prozedur in der aktuellen Datenbank ab. Dort steht sie dann allen Anwendungen zur Verfügung. Inhaltlich kann man eine Stored Procedure durchaus als SQL-Skript bezeichnen, das direkt in der Datenbank gespeichert ist. Beim ersten Aufruf wird die Prozedur vorkompiliert und dadurch bei weiteren Aufrufen beschleunigt ausgeführt. Das ist eine sehr effiziente Art, Anwendungslogik direkt in der Datenbank abzulegen. Gruß, Nils Zitieren Link zu diesem Kommentar
mullfreak 10 Geschrieben 14. Dezember 2008 Autor Melden Teilen Geschrieben 14. Dezember 2008 Hi Nils, vielen Dank für Deine Antwort. Ich hab mir ein MS-Buch gekauft, wo als How-To ein Webshop mit Datenbank programmiert wird in VB und SQL. Dort werden die Datenbank-Abfragen wie z. B. einen User erstellen als Stored Procedure abgelegt. Hier z. B. mal ein Skript: ALTER PROCEDURE dbo.CurrentUser ( @EMail NVARCHAR(10), @Passwort NVARCHAR(10) ) AS SELECT Nutzer.Id, Nutzer.IsAdmin, Nutzer.Name, Nutzer.Vorname, Nutzer.Strasse, Nutzer.StrasseNr, Nutzer.PLZ, Nutzer.Ort, Nutzer.EMail, Nutzer.passwort FROM Nutzer WHERE Nutzer.EMail=@EMail AND Nutzer.passwort=@passwort RETURN Dies ist 1:1 aus dem Buch und eine CREATE PROCEDURE kann ich hier nicht finden. Warum? Eine Frage ist auch, wo ich eine CREATE PROCEDURE anlege. Kann das auch in Visual Studio sein? Oder soll dies im Manag. Studio sein? Gruß Mull Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 15. Dezember 2008 Melden Teilen Geschrieben 15. Dezember 2008 Moin, das Skript fängt mit ALTER PROCEDURE an, versucht also, eine vorhandene Prozedur zu verändern. Entweder hat der Autor da geschlampt, oder es gibt vorher ein Beispiel, in dem die Prozedur mit CREATE erzeugt wird. Eine CREATE-Anweisung (oder auch ALTER) wird durch den SQL Server ausgeführt. Wie sie dorthinkommt, ist erst mal egal. Man kann das sicher von Visual Studio aus machen (ich arbeite nicht damit und weiß es daher nicht genau). Auf jeden Fall geht es vom SSMS oder einem anderen SQL-Client aus. Gruß, Nils Zitieren Link zu diesem Kommentar
mullfreak 10 Geschrieben 15. Dezember 2008 Autor Melden Teilen Geschrieben 15. Dezember 2008 Hi Nils, ich tausche jetzt "ALTER" gegen "CREATE", dann führe ich im SQL die Prozedur aus. Es wird dann eine Stored Procedure gespeichert mit Namen dbo.CurrentUser. Diese hat dann folgenden, veränderten Code: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[CurrentUser] ( @EMail NVARCHAR(10), @Passwort NVARCHAR(10) ) AS SELECT Nutzer.Id, Nutzer.IsAdmin, Nutzer.Name, Nutzer.Vorname, Nutzer.Strasse, Nutzer.StrasseNr, Nutzer.PLZ, Nutzer.Ort, Nutzer.EMail, Nutzer.passwort FROM Nutzer WHERE Nutzer.EMail=@EMail AND Nutzer.passwort=@passwort RETURN Ich denke das wars. Jetzt werde ich dann mal die Anwendung in ASP.NET schreiben und wir sehen weiter. Gruß und danke. Mull Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 15. Dezember 2008 Melden Teilen Geschrieben 15. Dezember 2008 Moin, okay, schön. Ich hoffe allerdings, dass du diesen Beispielcode nicht verwendest. Eine Nutzerauthentisierung per "WHERE Username = Variable1 AND Password = Variable2" gilt als Bad Practice. Gruß, Nils Zitieren Link zu diesem Kommentar
mullfreak 10 Geschrieben 15. Dezember 2008 Autor Melden Teilen Geschrieben 15. Dezember 2008 Hi Nils, dies ist nur eine Übung! Ich befasse mich jetzt seit einem Jahr mit VB.NET und natürlich brauch ich dazu auch SQL. Habe jetzt vor ca. 2 Monaten damit begonnen. Schön wenn man weiß, das MS-Bücher "Bad Practice" verbreiten. :-) Gruß Mull Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 15. Dezember 2008 Melden Teilen Geschrieben 15. Dezember 2008 Moin, Schön wenn man weiß, das MS-Bücher "Bad Practice" verbreiten. :-) ich weiß jetzt nicht, in welchem Zusammenhang das da steht. Mag ja sein, dass das Thema dort noch näher beleuchtet wird. Ich bin auch kein Entwickler. Aber soweit ich weiß, bietet gerade ASP.NET sehr gute Authentisierungsfunktionen, die ohne solch eine Simpelfunktion auskommen. Das aber nur am Rande. ;) Gruß, Nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.