1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
use mabase;
go
CREATE ROLE interne;
GRANT EXECUTE TO interne;
GRANT ALTER ANY USER TO interne;
--EXEC sp_addrolemember 'securityadmin', interne; // La je suis embêté, je ne sais pas comment autoriser le rôle "INTERNE" de ma base à créer des logins sur le serveur...
GO
CREATE ROLE externe;
GRANT EXECUTE TO externe;
GO
create procedure dbo.CreatePerson
(
@person_id int output,
@person_email varchar(256),
@person_name varchar(50),
@person_internal bit,
@user_name nvarchar(128),
@user_password varchar(50)
)
as
begin
declare @user_uid smallint;
execute('CREATE LOGIN mydb_' + @user_name + ' WITH PASSWORD = ''' + @user_password + '''');
execute('CREATE USER ' + @user_name + ' FOR LOGIN mydb_' + @user_name + ' WITH DEFAULT_SCHEMA = dbo');
select @user_uid = u.[uid]
from sys.sysusers u
where u.[name] = @user_name and u.islogin = 1;
if (@person_internal = 1)
begin
exec sp_addrolemember 'interne', @user_name;
end
else
begin
exec sp_addrolemember 'externe', @user_name;
end;
insert into dbo.person (email, [name], user_uid)
values (@person_email, @person_name, @user_uid);
end;
go |
Partager