Erstellen einer SQL-Anmeldung mit Parametern in gespeicherten Prozeduren
Um die Mandantenerstellung innerhalb einer SaaS-Datenbank zu automatisieren, versuchte ein Entwickler, a Gespeicherte Prozedur mit parametrisierten Eingaben für Benutzername und Passwort in der CREATE LOGIN-Anweisung. Allerdings stießen sie auf kryptische Fehlermeldungen im Zusammenhang mit falscher Syntax.
Die Hauptursache des Problems liegt in der CREATE LOGIN-Syntax, die Literalwerte anstelle von Parametern erfordert. Um dieses Problem zu beheben, gibt es eine Problemumgehung:
Hier ist eine überarbeitete Version der gespeicherten Prozedur, die diese Änderungen beinhaltet:
CREATE PROCEDURE [MyScheme].[Tenants_InsertTenant] @username nvarchar(2048), @password nvarchar(2048) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + QUOTENAME(@username) + ' WITH PASSWORD = ' + QUOTENAME(@password, ''''); EXEC(@sql) END
Durch die Implementierung dieser Problemumgehung kann die gespeicherte Prozedur nun dynamisch SQL-Anmeldungen basierend auf bereitgestellten Parametern erstellen, wodurch der Mandantenerstellungsprozess vollständig automatisiert werden kann.
Das obige ist der detaillierte Inhalt vonWie kann ich SQL-Anmeldungen mithilfe von Parametern in gespeicherten Prozeduren sicher erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!