Created
October 19, 2018 20:14
-
-
Save sgdan/4634dbb44b33b19533f0c8c1e03ec768 to your computer and use it in GitHub Desktop.
Create database and user login for AWS SQL Server RDS database
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Example for AWS SQL Server RDS instance: | |
- create database | |
- create login with basic permissions | |
Since RDS is managed there are some restrictions when creating users and assigning | |
permissions. This procedure shows how to create a database and login with combinations | |
of ddl, read and write permissions. | |
*/ | |
create procedure #createdbuser ( | |
@db nvarchar(max), | |
@login nvarchar(max), | |
@user nvarchar(max), | |
@pass nvarchar(max), | |
@canCreate bit, | |
@canWrite bit, | |
@canRead bit | |
) as begin | |
if exists (select * from master.sys.databases where name = @db) | |
print 'database ' + @db + ' already exists' | |
else exec ('create database ' + @db) | |
if exists (select * from master.sys.sql_logins where name = @login) | |
print 'login ' + @login + ' already exists' | |
else exec('create login ' + @login + ' with password = ''' + @pass + ''', check_policy = OFF') | |
exec('use ' + @db + ';' | |
+ ' if exists(select * from sys.database_principals where name = ''' + @user + ''') print ''user ' + @user + ' already exists''' | |
+ ' else create user ' + @user + ' for login ' + @login + ' with default_schema = dbo') | |
if @canCreate = 1 exec('use ' + @db + '; alter role db_ddladmin add member ' + @user) | |
if @canWrite = 1 exec('use ' + @db + '; alter role db_datawriter add member ' + @user) | |
if @canRead = 1 exec('use ' + @db + '; alter role db_datareader add member ' + @user) | |
end | |
go | |
exec #createdbuser 'testdb', 'testlogin', 'testuser', 'testpass', true, true, true | |
exec #createdbuser 'testdb', 'rwlogin', 'rwuser', 'rwpass', false, true, true | |
exec #createdbuser 'testdb', 'rologin', 'rouser', 'ropass', false, false, true | |
drop procedure #createdbuser | |
/* | |
drop database testdb | |
drop login testlogin | |
drop login rwlogin | |
drop login rologin | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment