Verificador de los miembros de grupos de Windows
Un script para revelar que los inicios de sesión tienen acceso al servidor SQL a través de los grupos de Windows.
Si utiliza autenticación de Windows y tiene grupos de Windows como inicios de sesión este script te puede ayudar.
Revela los miembros de los grupos de Windows y sus permisos de servidor.
Esto es especialmente útil si no eres el administrador de red o no tienes acceso a las herramientas del Active Directory.
Espero que ayude a alguien…
[sql]
/*
Script : SQL Server – Windows Group Membership Checker
Version : 1.0 (August 2010)
Author : Richard Doering
Email : r3m1xn9@gmail.com
Web : http://sqlsolace.blogspot.com
*/
DECLARE @CurrentRow INT
DECLARE @TotalRows INT
SET @CurrentRow = 1
DECLARE @SqlGroupMembership TABLE(
ACCOUNT_NAME SYSNAME,
ACCOUNT_TYPE VARCHAR(30),
ACCOUNT_PRIVILEGE VARCHAR(30),
MAPPED_LOGIN_NAME SYSNAME,
PERMISSION_PATH SYSNAME
)
DECLARE @WindowsGroupsOnServer TABLE(
UniqueRowID int IDENTITY (1, 1) Primary key NOT NULL
, Name SYSNAME
)
INSERT INTO @WindowsGroupsOnServer (NAME)
SELECT [NAME] FROM master.sys.server_principals WHERE TYPE = ‘G’
SELECT @TotalRows = MAX(UniqueRowID) FROM @WindowsGroupsOnServer
DECLARE @WindowsGroupName sysname
— Loop Each Windows Group present on the server
WHILE @CurrentRow <= @TotalRows
BEGIN
SELECT @WindowsGroupName = [Name]
FROM @WindowsGroupsOnServer
WHERE UniqueRowID = @CurrentRow
BEGIN TRY
— Insert found logins into table variable
INSERT INTO @SqlGroupMembership (ACCOUNT_NAME,ACCOUNT_TYPE,ACCOUNT_PRIVILEGE,MAPPED_LOGIN_NAME,PERMISSION_PATH)
EXEC xp_logininfo @WindowsGroupName , ‘members’
END TRY
BEGIN CATCH
— No action for if xp_logininfo fails
END CATCH
SELECT @CurrentRow = @CurrentRow + 1
END
— Display final results
SELECT @@servername AS Servername
, [PERMISSION_PATH] AS WindowsGroup
, Account_Name
, Mapped_Login_Name
, Account_Type
, Account_Privilege
FROM @SqlGroupMembership ORDER BY [PERMISSION_PATH], [ACCOUNT_NAME]
[/sql]