You've already forked ssms-addin
mirror of
https://github.com/alex-bochkov/ssms-addin.git
synced 2025-11-23 22:04:53 +02:00
51 lines
1.4 KiB
Transact-SQL
51 lines
1.4 KiB
Transact-SQL
CREATE TABLE #OrphanUsers (UserName nvarchar(128), UserType char(1));
|
|
--SQL Users
|
|
INSERT INTO #OrphanUsers
|
|
SELECT dp.name, dp.type
|
|
FROM sys.database_principals dp
|
|
LEFT OUTER JOIN sys.server_principals sp ON dp.sid = sp.sid
|
|
WHERE dp.type = 'S'
|
|
AND sp.sid IS NULL
|
|
AND dp.authentication_type_desc <> 'NONE';
|
|
|
|
--Windows Users
|
|
DECLARE @sqlcmd nvarchar(4000), @username nvarchar(128);
|
|
|
|
CREATE TABLE #ADinfo (
|
|
AccountName nvarchar(128),
|
|
AccountType char(8), --user or group
|
|
Privilege char(9), --admin, user, or null.
|
|
MappedLogin nvarchar(128), --the mapped login name by using the mapped rules
|
|
PermissionPath nvarchar(128));
|
|
|
|
DECLARE cur_users CURSOR FAST_FORWARD FOR
|
|
SELECT dp.name
|
|
FROM sys.database_principals dp
|
|
WHERE dp.type IN ('G','U');
|
|
|
|
OPEN cur_users;
|
|
FETCH NEXT FROM cur_users INTO @username;
|
|
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
TRUNCATE TABLE #ADinfo
|
|
SET @sqlcmd = N'INSERT INTO #ADinfo EXEC xp_logininfo N''' + @username + N''',''all''';
|
|
BEGIN TRY
|
|
EXEC sp_executesql @sqlcmd;
|
|
END TRY
|
|
BEGIN CATCH
|
|
END CATCH
|
|
|
|
IF NOT EXISTS (SELECT * FROM #ADinfo WHERE MappedLogin IS NOT NULL)
|
|
INSERT INTO #OrphanUsers VALUES (@username, 'W');
|
|
|
|
FETCH NEXT FROM cur_users INTO @username;
|
|
END
|
|
|
|
CLOSE cur_users;
|
|
DEALLOCATE cur_users;
|
|
|
|
DROP TABLE #ADinfo;
|
|
SELECT 'USE [' + DB_NAME() + ']; DROP USER [' + username + '];', * FROM #OrphanUsers;
|
|
DROP TABLE #OrphanUsers;
|