MS SQLを使用して、SIDによってユーザーのログインを決定します

こんにちは。 DBA管理者(Microsoft Dynamics NAV)として、一部の従業員のSQL db_datareaderロールの存在を発行/確認するタスクが発生しました。 しかし、テーブルでは、ユーザーのリストはSIDウィンドウの形式で保存されました:S-1-5-21-3879 ...そして、エントリは常に追加されていました。 つまり、S-1-5-21-38から変換する必要がありました...→aapetrov。



約70台のサーバーがあり、標準ツールですべてを実行したかった( psgetsid.exeなどは使用しないでください )。



予想通り、私はGoogleから始めました-何も役に立つものが見つかりませんでした。 尊敬されるフォーラムで助けを求めなければなりませんでした。 多くの選択肢が提案されましたが、その多くは善良な人々のおかげですが、残念ながら解決策は見つかりませんでした。

「sql.ruのメンバーでさえわからない場合は、それで終わりだと思いました。」





そして、神経衰弱の寸前で、問題はまだ解決することができました。



まず、少しの理論。 SID(S-1-5-21-3879291865-2298129343-1096376209-3741)を部分的に分析してみましょう:

詳細についてはこちらをご覧ください



これでスクリプト自体。 私の意見では、関数を作成し、パラメーターを指定して呼び出すことをお勧めします。



-- , .



IF OBJECT_ID (N'dbo.StringSIDToLogin', N'FN') IS NOT NULL

DROP FUNCTION dbo.StringSIDToLogin

GO

CREATE FUNCTION dbo.StringSIDToLogin (@MYSID AS VARCHAR(255))

RETURNS VARCHAR(300)

AS

BEGIN



--



DECLARE @A AS BIGINT ,@B AS BIGINT ,@C AS BIGINT ,@D AS BIGINT

SET @MYSID = REVERSE(@MYSID)

SET @D = REVERSE(SUBSTRING(@MYSID,1,CHARINDEX('-',@MYSID)-1))

SET @MYSID = SUBSTRING(@MYSID,CHARINDEX('-',@MYSID)+1,255)

SET @C = REVERSE(SUBSTRING(@MYSID,1,CHARINDEX('-',@MYSID)-1))

SET @MYSID = SUBSTRING(@MYSID,CHARINDEX('-',@MYSID)+1,255)

SET @B = REVERSE(SUBSTRING(@MYSID,1,CHARINDEX('-',@MYSID)-1))

SET @MYSID = SUBSTRING(@MYSID,CHARINDEX('-',@MYSID)+1,255)

SET @A = REVERSE(SUBSTRING(@MYSID,1,CHARINDEX('-',@MYSID)-1))

declare @sid_sql VARBINARY(100)

DECLARE @StrLogin VARCHAR(100)

set @sid_sql= 0x010500000000000515000000

+ CONVERT(VARBINARY,REVERSE(CONVERT(BINARY(4),@A)))

+ CONVERT(VARBINARY,REVERSE(CONVERT(BINARY(4),@B)))

+ CONVERT(VARBINARY,REVERSE(CONVERT(BINARY(4),@C)))

+ CONVERT(VARBINARY,REVERSE(CONVERT(BINARY(4),@D)))



-- MS SQL



set @StrLogin=SUSER_SNAME(@sid_sql)

set @StrLogin=REPLACE (@StrLogin,'dom\','')

RETURN (@StrLogin)

END

GO








関数を呼び出すだけです。



SELECT dbo.StringSIDToLogin('S-1-5-21-1106671424-631848431-2339101832-7032') AS [Login]







ここでは、簡単なことがわかりました。 そして、アイデア自体がフォーラムで提案されました 。 ありがとう



PS:ハブロウザーに感謝します: rachiu、Zorkus、FeNUMe、Atrax、AusTiNのサポートと新人に対する人間の態度。



All Articles