sql >> Database teknologi >  >> RDS >> Sqlserver

Jeg forsøger at oprette en lagret procedure for at oprette et login og en databasebruger?

Overvej at bruge dynamisk SQL til at oprette en bruger. For eksempel at oprette et serverlogin kaldet @login med en databasebruger kaldet '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

Det kan være lettere at konstruere SQL-sætningen på klientsiden. Men selv da kunne du ikke bruge parametre med create login udmelding. Så vær på vagt med SQL Injection.



  1. Er det muligt at få listen over rækker grupperet sammen efter et kolonnenavn i Mysql?

  2. FEJL 1067 (42000):Ugyldig standardværdi for 'created_at'

  3. SQL - HVIS FINDER OPDATERING ELLERS INDSÆT I

  4. Fordelene ved PostgreSQL