Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SID, уникальное значение юзера? создание?  [new]
MMM_Corp
Member

Откуда: Тернопіль, Україна
Сообщений: 2102
Всегда для идентификации пользователя использовал логин и на нем завяливал все, но стала задача возможности смены логина и теперь ищу что же будет уникального в юзере не учитивая его логина. После гуглений и размишлений пришол к выводу что это его SID,
SELECT * FROM sys.sql_logins


вроде оно?
возникла проблемка, при создании юзера в дополнительной таблице создается дополнительная информация:
CREATE PROCEDURE dbo.CreateNewLogin
  @type     INT,
  @username VARCHAR(50),
  @password VARCHAR(50),
  @sname    VARCHAR(50)
AS
BEGIN
  -- @LoginType int,
  -- SET NOCOUNT ON


  -- Disable single constraint

--  ALTER TABLE options NOCHECK CONSTRAINT CK_personal_check;

  -- Enable single constraint


-- ALTER TABLE options CHECK CONSTRAINT CK_personal_check;


BEGIN TRANSACTION B1;


DECLARE @SQL NVARCHAR(4000) = 
  N'CREATE LOGIN ['+ @username +'] WITH PASSWORD = '''+ @password +''',
	  DEFAULT_DATABASE=[' + db_name() + '], DEFAULT_LANGUAGE=[Russian], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON;' +char(13);

SET @SQL = @SQL +
CASE @type
  WHEN 0 THEN    
    N'ALTER SERVER ROLE sysadmin ADD MEMBER ['+ @username +'];'
  WHEN 1 THEN     
    N'CREATE USER ['+ @username +'] FOR LOGIN ['+ @username +']; 
      ALTER ROLE client ADD MEMBER ['+ @username +'];'
END;

-- PRINT @sql;

EXEC sp_executesql @sql;
COMMIT TRANSACTION B1;

DECLARE @s VARBINARY(MAX) = suser_sid(@sname);


INSERT INTO options(sname, sid)
  VALUES
    (@sname, @s);   -- ПОЧЕМУ SID = NULL ???


END;

GO


в общем как я только не пробовал но в не могу получить SID,
если же тот же код к примеру:
DECLARE @sname VARCHAR(50) = 'ttt';
  
DECLARE @s VARBINARY(MAX) = suser_sid(@sname);


  INSERT INTO options(sname, sid)
  VALUES
    (@sname, @s);


вынести вот так, то все ок, что не так? может мне нужен вовсе не сид а что другое, прошу совета?
29 мар 13, 11:25    [14111646]     Ответить | Цитировать Сообщить модератору
 Re: SID, уникальное значение юзера? создание?  [new]
MMM_Corp
Member

Откуда: Тернопіль, Україна
Сообщений: 2102
имеется выду код вынести после выполнения хранимки
29 мар 13, 11:31    [14111683]     Ответить | Цитировать Сообщить модератору
 Re: SID, уникальное значение юзера? создание?  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
MMM_Corp
что не так?
Очевидно, при вызове @username отличается от @sname.

ЗЫ: Логин можно пересоздать, тогда SID тоже изменится.
29 мар 13, 11:50    [14111811]     Ответить | Цитировать Сообщить модератору
 Re: SID, уникальное значение юзера? создание?  [new]
MMM_Corp
Member

Откуда: Тернопіль, Україна
Сообщений: 2102
invm,

тю блин, вот это я слепой))) все ок, тищу извинений, как всегда моя глупая невнимательность)

П.С. ну то что после пересоздания юзера у него изменится sid, это даже хорошо,
скажите пожалуйста, а чем еще может бить чревата привязка к SID?
29 мар 13, 12:07    [14111984]     Ответить | Цитировать Сообщить модератору
 Re: SID, уникальное значение юзера? создание?  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
MMM_Corp
скажите пожалуйста, а чем еще может бить чревата привязка к SID?
Зависит от того, как вы его собираетесь использовать.
29 мар 13, 12:48    [14112275]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить