Technical Article

Dynamically Drop a User From Your SQL Instance

,

  • Copy the code into a new query window.
  • Edit the SET @UserLogin variable as required for the server login.
  • Execute the script.

Simple

DECLARE @Cursor CURSOR
DECLARE @DatabaseName VARCHAR(100)
DECLARE @UserLogin VARCHAR(100)
DECLARE @Message VARCHAR(100)

--Enter user server login:
SET @UserLogin = 'domain\username'

--Temp table for information purposes only
IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE ID = OBJECT_ID(N'tempdb..##DropUserCount'))
DROP TABLE ##DropUserCount

CREATE TABLE ##DropUserCount
(
[LoginFound] INT
)

--Remove user from each database
SET @Message = 'User found in and removed from database: '
SET @Cursor = CURSOR FOR
SELECT
[name]
FROM
sys.databases
WHERE
[state] <> 6 --6 = Offline
ORDER BY
[name]

OPEN @Cursor
FETCH NEXT FROM @Cursor INTO
@DatabaseName

WHILE (@@FETCH_STATUS = 0)
BEGIN

DECLARE @SQL NVARCHAR(MAX)
SET @SQL = 
'
USE [' + @DatabaseName + ']

SET NOCOUNT ON
DECLARE @LocalUser VARCHAR(200)

IF(
SELECT
COUNT(0)
FROM
sys.server_principals serv
JOIN sys.database_principals dbs
ON serv.[sid] = dbs.[sid]
WHERE
serv.[name] = ''' + @UserLogin + '''
) > 0

BEGIN
SELECT
@LocalUser = dbs.[name]
FROM
sys.server_principals serv
JOIN sys.database_principals dbs
ON serv.[sid] = dbs.[sid]
WHERE
serv.[name] = ''' + @UserLogin + '''

INSERT INTO ##DropUserCount ([LoginFound]) VALUES (''1'')

EXEC sp_dropuser @LocalUser
PRINT ''' + @Message + @DatabaseName + '.''
END

'

--PRINT @SQL
EXEC (@SQL)
FETCH NEXT FROM @Cursor INTO
@DatabaseName

END

CLOSE @Cursor
DEALLOCATE @Cursor

IF(SELECT SUM([LoginFound]) FROM ##DropUserCount) IS NULL
PRINT 'User database logins not found.'

--Remove login from server
IF (SELECT COUNT(0) FROM sys.syslogins WHERE [name] = @UserLogin) > 0
BEGIN
SET @SQL = 'DROP LOGIN [' + @UserLogin + ']'
EXEC (@SQL)
PRINT 'User login dropped from server.'
END
ELSE
BEGIN
PRINT 'User login to server not found.'
END

Rate

★ ★ ★ ★ ★ ★ ★ ★ ★ ★

You rated this post out of 5. Change rating

Share

Share

Rate

★ ★ ★ ★ ★ ★ ★ ★ ★ ★

You rated this post out of 5. Change rating