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
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
Format above Script using SQL prompt for understanding.
ReplyDelete