Envisagez d'utiliser le SQL dynamique pour créer un utilisateur. Par exemple, pour créer une connexion au serveur appelée @login
avec un utilisateur de base de données appelé 'DEV' + @login
:
create procedure dbo.CreateLoginAndUser(
@login varchar(100),
@password varchar(100),
@db varchar(100))
as
declare @safe_login varchar(200)
declare @safe_password varchar(200)
declare @safe_db varchar(200)
set @safe_login = replace(@login,'''', '''''')
set @safe_password = replace(@password,'''', '''''')
set @safe_db = replace(@db,'''', '''''')
declare @sql nvarchar(max)
set @sql = 'use ' + @safe_db + ';' +
'create login ' + @safe_login +
' with password = ''' + @safe_password + '''; ' +
'create user DEV' + @safe_login + ' from login ' + @safe_login + ';'
exec (@sql)
go
Il peut être plus facile de construire l'instruction SQL côté client. Mais même dans ce cas, vous ne pouviez pas utiliser de paramètres avec le create login
déclaration. Soyez donc sur vos gardes à propos de l'injection SQL.