Beim Versuch, ein SQL-Login innerhalb einer gespeicherten Prozedur mithilfe dynamischer Parameter zu erstellen, kann es sein, dass Entwickler auf die Fehlermeldung „Falsche Syntax in der Nähe von „@Benutzername“ stoßen '." Diese kryptische Nachricht kann irreführend sein und zu Verwirrung führen.
Das zugrunde liegende Problem besteht darin, dass die CREATE LOGIN-Anweisung nur wörtliche Benutzernamen und keine Parameter akzeptiert. Um diese Einschränkung zu umgehen, muss man einen Workaround anwenden:
Hier ist ein Beispiel, wie diese Problemumgehung implementiert werden kann:
DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + quotename(@username) + ' WITH PASSWORD = ' + quotename(@password, ''''); EXEC(@sql)
Dieser Code erstellt zunächst die dynamische SQL-Befehlszeichenfolge und stellt sicher, dass der Benutzername und das Passwort vorhanden sind zitiert für Sicherheit gegen SQL-Injection-Angriffe. Anschließend führt es den dynamischen SQL-Befehl mithilfe der EXEC-Anweisung aus und erstellt so die SQL-Anmeldung.
Durch die Übernahme dieses Ansatzes können Entwickler die Einschränkung überwinden, dass CREATE LOGIN nur Literale akzeptiert, und SQL-Anmeldungen innerhalb ihrer gespeicherten Prozeduren dynamisch erstellen.
Das obige ist der detaillierte Inhalt vonWie kann ich eine SQL-Anmeldung dynamisch innerhalb einer gespeicherten Prozedur erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!