Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 4 Следующий »

Для заведения в КИС нового пользователя нужно в SQL-сервере запустить  этот скрипт, и перед выполнением внести информацию с регистрационной карты пользователя

в этот скрипт. Смотрим данные в регистрационной карте, вставляем в скрипт, придумываем пароль для пользователя, вносим в скрипт и запускаем его.


declare @dname varchar(80)   -- имя домена
declare @nuser varchar(80) -- учетка пользователя  
 
declare @basename varchar(50)
declare @idnew int, @idfrom int
declare @sql_idnew int, @sql_idfrom int

declare @sql nvarchar(max)

declare @user_name varchar(80)
declare @userfrom varchar(80)
declare @name_role  varchar(80)

declare @login varchar(80)
declare @pass varchar(80)
declare @email varchar(80)
declare @epass varchar(80)
 

--НАЧАЛО ДАННЫХ, КОТОРЫЕ ПОДСТАВЛЯЮТСЯ ДЛЯ НОВОГО ПОЛЬЗОВАТЕЛЯ:

set @dname = 'ARKONA'
set @user_name = 'TopaevaDA' -- имя пользователя
set @basename = 'Real' --- база
 

set @nuser = 'Топаева' --- фамилия кого заводим
set @userfrom = 'Бондарук' --- с кого будем права срисовывать

set @login = 'TopaevaDA' -- логин для КиС
set @pass = 'TopaevaDA421' -- пароль для КиС

set @email = 'topaevada@arkona36.ru' -- почта
set @epass = 'SuRPM57' -- пароль почты

--КОНЕЦ ДАННЫХ, КОТОРЫЕ ПОДСТАВЛЯЛИ.


set  @user_name =@dname + '\' +@user_name
select @user_name

/***** создание учетки  ***********/

USE [master]
if suser_id(@user_name) is not null  
begin
     
    set @sql = N'DROP LOGIN [' + @user_name + N']'
    exec sp_executesql @sql
end 
 

set @sql = N'CREATE LOGIN [' + @user_name + N'] FROM WINDOWS WITH DEFAULT_DATABASE=[' + @basename + N'], DEFAULT_LANGUAGE=[us_english]'
select @sql
exec sp_executesql @sql
 
 
/***** создание учетки  в базе ***********/
USE [Real]
 
 
set @sql = N'DROP USER IF EXISTS  [' + @user_name + N']' 
select @sql
exec sp_executesql @sql

set @sql = N'CREATE USER [' + @user_name + N'] FOR LOGIN [' + @user_name + N']'
select @sql
exec sp_executesql @sql

set @sql = N'ALTER USER [' +  @user_name + N'] WITH DEFAULT_SCHEMA=[arkona]'
select @sql
exec sp_executesql @sql 
 

 /******** проверим наличие в spr_kontr *****/
set @idnew = (select top 1 id_kontr from spr_kontr (nolock) where n_kontr like @nuser + '%' and employer = 1 and id_cond = 10 order by id_kontr desc) 
select  @idnew
set @idfrom = (select id_kontr from spr_kontr (nolock) where n_kontr like @userfrom + '%' and employer = 1) 
select @idfrom

set @sql_idfrom =  ( SELECT sql_id  FROM spr_kontr  (nolock)  where id_kontr= @idfrom)
select @sql_idfrom

if @idnew > 0 
begin
    /***** соответствие с базой  ***********/
 
    update spr_kontr 
    set sql_id = user_id(@user_name)
    where id_kontr = @idnew

    IF Not EXISTS (SELECT * FROM  sLoginUser with (nolock) WHERE idUser = @idnew)
    begin
        insert into sLoginUser
        select @idnew,@login,@pass
        from v_today
    end

    /***** роли в кис  ***********/
    IF  EXISTS (SELECT * FROM  rRoleUser with (nolock) WHERE IdKontr = @idnew)
    begin
        delete from  rRoleUser where IdKontr = @idnew
    end
 
    insert into rRoleUser
    select @idnew,idrole 
    FROM rRoleUser with (nolock)
    where rRoleUser.IdKontr = @idfrom

    /*****  копирование ролей *****/

    declare  ruser cursor for 
    select dp.name
    from sys.database_role_members (nolock)
    inner join sys.database_principals (nolock) dp
    on sys.database_role_members.role_principal_id = dp.principal_id
    where  sys.database_role_members.member_principal_id = @sql_idfrom
    
    open ruser

    fetch next from ruser
    into @name_role
    
    while @@FETCH_STATUS = 0
    begin
        exec sp_addrolemember @name_role ,@user_name
        fetch next from ruser
        into @name_role
    end

    close ruser
    deallocate ruser

    /**/
    IF  EXISTS (SELECT * FROM  sContactPersonal with (nolock) WHERE idUser = @idnew)
    begin
        delete from   sContactPersonal where idUser = @idnew
    end

    insert into sContactPersonal
    select @idnew,1, @email,'',@epass
    from v_today
    
    IF  EXISTS (SELECT * FROM  rkontrterritory  with (nolock) WHERE id_kontr = @idnew)
    begin
        delete from  rkontrterritory WHERE id_kontr = @idnew
    end
    
    IF  EXISTS (SELECT * FROM rUserTerr  with (nolock) WHERE idkontr = @idnew)
    begin
        delete from  rUserTerr WHERE idkontr = @idnew
    end
      

end 

 
 

  • Нет меток