Ich möchte in der Lage sein, ein neues SQL-LOGIN hinzuzufügen und es nach einer Person E-Mail-Adresse nennen. Zum Beispiel "[email protected]". Wenn ich dies an die folgende gespeicherte Prozedur übergebe, erhalte ich einen Fehler (Fehler folgt Prozedur).SQL Encode String-Parameter so Sonderzeichen arbeiten
Die gespeicherte Prozedur:
CREATE PROCEDURE [Forms].[AddLogin]
@Email nvarchar(2048),
@TenantPassword nvarchar(2048)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
EXEC('CREATE LOGIN ' + @Email + ' WITH PASSWORD = ''' + @TenantPassword + ''', DEFAULT_DATABASE = DunderMifflin')
END
Der Fehler:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '.'.
Ich bin sicher, dass alles, was ich tun müssen, um irgendwie die Parameter codieren. Irgendeine Hilfe? Wenn ich einen Benutzer über den SQL-Manager-Assistenten hinzufüge, kann ich E-Mail-Adressen angeben, sodass ich weiß, dass es sich um einen gültigen Anmeldenamen handelt.
Obligatorische Injektionswarnung: Bitte geben Sie das Passwort des Benutzers nicht direkt in diese Routine ein !! Der Benutzer könnte ein Passwort von geben '); DROP DATABASE DunderMifflin; - – BradC