Technical Article

Rename User Login

,

You can effectively rename a user account but as this is messing wit the system tables I would suggest dropping and adding the user back. But for those of you who really want to know how here it is.

First off I tested this and it works fine renaming a user.

However this is directly modifying the system tables and setting the configuration to do this.

I make no guarantees that you could not possible cause yourself an issue.

And if you do make these kinds of changes they are yours to deal with if failure occurrs.

Note: I did find out that you can do this while the user is logged in. They just will have to use the new login name after they logout and come back. Also you will need to be a member of the server admin role to run this.

Ex. usp_RenameLogin 'Test', 'TestLogin'

CREATE PROCEDURE usp_RenameLogin

@CurrentLoginsysname,
@NewLoginsysname

AS

DECLARE @SQLState AS VARCHAR(200)

--Configure server to allow ad hoc updates to system tables
EXEC master.dbo.sp_configure 'allow updates', '1'
RECONFIGURE WITH OVERRIDE

--Update user login name in master db
SET @SQLState = 'UPDATE master.dbo.sysxlogins SET [name] = ''' + @NewLogin + ''' WHERE [name] = ''' + @CurrentLogin + ''''
EXEC (@SQLState)

--Update user login name in each db where has access as in in sysusers table
SET @SQLState = 'EXEC master.dbo.sp_MSForEachDB ''UPDATE ?.dbo.sysusers SET [name] = ''''' + @NewLogin + ''''' where [name] = ''''' + @CurrentLogin + ''''''''
EXEC (@SQLState)

--Configure server to disallow ad hoc updates to system tables
EXEC master.dbo.sp_configure 'allow updates', '0'
RECONFIGURE WITH OVERRIDE
GO

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating