Create SQL server/windows Users by scripts and then assign that user specific permissions

-- Create a login for SQL Server by specifying a server name and a Windows domain account name.
USE [master]
CREATE LOGIN [XDEV\mjawad] FROM WINDOWS;
GO

-- OR use the code below to Create a SQL Server User
--USE [master]
--GO
--CREATE LOGIN applogin WITH PASSWORD=N'applogin', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
--GO


-- Cursor For assigning roles to the specified Users on all databases
------***************************************************************** For DBA'S
USE master
GO

DECLARE @dbname VARCHAR(50)
DECLARE @statement NVARCHAR(max)
DECLARE @UserName NVARCHAR(100)
SET @UserName='[XDEV\DBA]'     ----***** Set User Name here to give permission ********

DECLARE db_cursor CURSOR
LOCAL FAST_FORWARD
FOR
SELECT name
FROM sys.databases
WHERE --name NOT IN ('master','model','msdb','tempdb') AND
state=0
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbname
WHILE @@FETCH_STATUS = 0
BEGIN

SELECT @statement = 'use '+@dbname +';'+ 'CREATE USER '+@UserName +
'FOR LOGIN '+@UserName + '; EXEC sp_addrolemember N''db_datareader'',
'+@UserName + ';EXEC sp_addrolemember N''db_datawriter'',' + @UserName+ ';EXEC sp_addrolemember N''db_owner'',' + @UserName+ ''
+  ';EXEC sp_addrolemember N''db_backupoperator'',' + @UserName+ ''
+  ';EXEC sp_addrolemember N''db_ddladmin'',' + @UserName+ ''
+  ';EXEC sp_addrolemember N''db_owner'',' + @UserName+ ''
+  ';EXEC sp_addrolemember N''db_securityadmin'',' + @UserName+ ''


exec sp_executesql @statement

FETCH NEXT FROM db_cursor INTO @dbname
END
CLOSE db_cursor
DEALLOCATE db_cursor


------***************************************************************** For Team Leads
USE master
GO

DECLARE @dbname VARCHAR(50)
DECLARE @statement NVARCHAR(max)
DECLARE @UserName NVARCHAR(100)
SET @UserName='[XDEV\TeamLeads]'     ----***** Set User Name here to give permission ********

DECLARE db_cursor CURSOR
LOCAL FAST_FORWARD
FOR
SELECT name
FROM sys.databases
WHERE name NOT IN ('master','model','msdb','distribution','TrackingDB')
AND state=0
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbname
WHILE @@FETCH_STATUS = 0
BEGIN

SELECT @statement = 'use '+@dbname +';'+ 'CREATE USER '+@UserName +
'FOR LOGIN '+@UserName + '; EXEC sp_addrolemember N''db_datareader'',
'+@UserName + ';EXEC sp_addrolemember N''db_datawriter'',' + @UserName+ ';EXEC sp_addrolemember N''db_owner'',' + @UserName+ ''
+  ';EXEC sp_addrolemember N''db_ddladmin'',' + @UserName+ ''

exec sp_executesql @statement

FETCH NEXT FROM db_cursor INTO @dbname
END
CLOSE db_cursor
DEALLOCATE db_cursor



------***************************************************************** For Junior Developers
USE master
GO

DECLARE @dbname VARCHAR(50)
DECLARE @statement NVARCHAR(max)
DECLARE @UserName NVARCHAR(100)
SET @UserName='[XDEV\JrDevelopers]'     ----***** Set User Name here to give permission ********

DECLARE db_cursor CURSOR
LOCAL FAST_FORWARD
FOR
SELECT name
FROM sys.databases
WHERE name NOT IN ('master','model','msdb','distribution','TrackingDB')
AND state=0
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbname
WHILE @@FETCH_STATUS = 0
BEGIN

SELECT @statement = 'use '+@dbname +';'+ 'CREATE USER '+@UserName +
'FOR LOGIN '+@UserName + '; EXEC sp_addrolemember N''db_datareader'',
'+@UserName + ';EXEC sp_addrolemember N''db_datawriter'',' + @UserName+ ''
+  ';EXEC sp_addrolemember N''db_ddladmin'',' + @UserName+ ''

exec sp_executesql @statement

FETCH NEXT FROM db_cursor INTO @dbname
END
CLOSE db_cursor
DEALLOCATE db_cursor 

Comments

  1. Format above Script using SQL prompt for understanding.

    ReplyDelete

Post a Comment

Popular posts from this blog

TSQL To Get All the Names of tables and Databases whose data have changed in last 24 Hours

To Get All the Names of tables and Databases their data have changed in last 24 Hours And Backup those databases

Apply paging in procedure