Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Próbuję utworzyć procedurę składowaną, aby utworzyć login i użytkownika bazy danych?

Rozważ użycie dynamicznego SQL do utworzenia użytkownika. Na przykład, aby utworzyć login serwera o nazwie @login z użytkownikiem bazy danych o nazwie '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

Łatwiejsze może być skonstruowanie instrukcji SQL po stronie klienta. Ale nawet wtedy nie można było używać parametrów z create login oświadczenie. Uważaj więc na wstrzykiwanie SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Prawdziwa transpozycja

  2. Łączenie ciągów t-sql

  3. Jak zrobić deterministyczny RAND() w SQL Server

  4. Utwórz kolumnę „Ostatnia modyfikacja” w SQL Server

  5. Suma podzapytań w SQL Server