sp_changedbowner (Transact-SQL)

Applies to: SQL Server

Changes the owner of the current database.


This feature will be removed in a future version of SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use ALTER AUTHORIZATION instead.

Transact-SQL syntax conventions


    [ @loginame = ] N'loginame'
    [ , [ @map = ] 'map' ]
[ ; ]


[ @loginame = ] N'loginame'

The login ID of the new owner of the current database. @loginame is sysname, with no default. @loginame must be an already existing SQL Server login or Windows user. @loginame can't become the owner of the current database if it already has access to the database through an existing user security account within the database. To avoid this scenario, drop the user within the current database first.

[ @map = ] 'map'

This parameter is deprecated and is maintained for backward compatibility of scripts.

Return code values

0 (success) or 1 (failure).


After sp_changedbowner is executed, the new owner is known as the dbo user inside the database. The dbo user has implied permissions to perform all activities in the database.

The owner of the master, model, or tempdb system databases can't be changed.

To display a list of the valid @loginame values, execute the sp_helplogins stored procedure.

Executing sp_changedbowner with only the @loginame parameter changes database ownership to @loginame.

You can change the owner of any securable by using the ALTER AUTHORIZATION statement. For more information, see ALTER AUTHORIZATION.


Requires TAKE OWNERSHIP permission on the database. If the new owner has a corresponding user in the database, requires IMPERSONATE permission on the login, otherwise requires CONTROL SERVER permission on the server.


The following example makes the login Albert the owner of the current database.

EXEC sp_changedbowner 'Albert';