SQL Server giving logins(users) db_owner access to database

SqlSql ServerDatabase

Sql Problem Overview


We have a test database and some test logins that we would like to give db_owner access to through a script. Usually we would have to go into logins and right click on the username and go to user mapping and select the database to associate it with and give it owner access and click OK.

Sql Solutions


Solution 1 - Sql

You need to do two things, both running in the context of the target database (i.e., execute USE (database) first):

  1. Add that user as a login to the database: CREATE USER [LoginName] FOR LOGIN [LoginName]
  2. Add that user to the role: EXEC sp_addrolemember N'db_owner', N'LoginName'

In general, if you have SQL Server Management Studio 2005 or higher, you can go into the UI for an operation, fill out the dialog box (in this case, assigning the user to the database & adding roles), and then click the "Script" button at the top. Instead of executing the command, it will write a script for the action to a new query window.

Solution 2 - Sql

I'd like to propose another solution which may help someone...

-- create the user on the master database
USE [master] 
GO
CREATE LOGIN [MyUserName] WITH PASSWORD=N'MyPassword'
CREATE USER [MyUserName] FOR LOGIN [MyUserName]
GO

-- create the user on the target database for the login
USE [MyDatabaseName]
GO
CREATE USER [MyUserName] FOR LOGIN [MyUserName]
GO

-- add the user to the desired role
USE [MyDatabaseName]
GO
ALTER ROLE [db_owner] ADD MEMBER [MyUserName]
GO

Solution 3 - Sql

Use sp_addrolemember

> EXEC sp_addrolemember 'db_owner', 'MyUser'

Solution 4 - Sql

Here is how to use ALTER ROLE with an existing server login named MyLogin.

USE MyDatabase
CREATE USER MyLogin FOR LOGIN MyLogin
ALTER ROLE db_owner ADD MEMBER MyLogin
GO

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-role-transact-sql

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser516883View Question on Stackoverflow
Solution 1 - SqlTadmasView Answer on Stackoverflow
Solution 2 - Sqluser1477388View Answer on Stackoverflow
Solution 3 - SqlHardCodeView Answer on Stackoverflow
Solution 4 - SqlShaun LuttinView Answer on Stackoverflow