DECLARE @Domain nVARCHAR(MAX) = 'domain'
DECLARE @User nVARCHAR(MAX) = 'Synergetic Upgrades'
-- Create the login if it doesn't exist
IF NOT EXISTS (SELECT 1 FROM sys.server_principals WHERE name = @Domain + '\' + @User)
BEGIN
EXEC ('USE [master]; CREATE LOGIN ['+@Domain+'\'+@User+'] FROM WINDOWS WITH DEFAULT_DATABASE=[master]')
END
ELSE
BEGIN
PRINT 'Login ' + @Domain + '\' + @User + ' already exists.';
END
-- Grant sysadmin server role if the login doesn't already have it
IF NOT EXISTS (SELECT 1 FROM sys.server_role_members AS SRM JOIN sys.server_principals AS SP ON SRM.member_principal_id = SP.principal_id JOIN sys.server_principals AS SR ON SRM.role_principal_id = SR.principal_id WHERE SP.name = @Domain + '\' + @User AND SR.name = 'sysadmin')
BEGIN
EXEC ('USE [master]; ALTER SERVER ROLE [sysadmin] ADD MEMBER ['+@Domain+'\'+@User+']')
END
ELSE
BEGIN
PRINT 'Login ' + @Domain + '\' + @User + ' is already a sysadmin.';
END
-- Check if the user already exists in the MASTER database
IF NOT EXISTS (SELECT 1 FROM master.sys.database_principals WHERE name = @User AND type_desc = 'SQL_USER' AND authentication_type_desc = 'INSTANCE')
BEGIN
-- Create the user in the MASTER database and grant db_owner role
BEGIN TRY
EXEC ('USE [master]; CREATE USER ['+@Domain+'\'+@User+'] FOR LOGIN ['+@Domain+'\'+@User+']')
EXEC ('USE [master]; ALTER ROLE [db_owner] ADD MEMBER ['+@Domain+'\'+@User+']')
END TRY
BEGIN CATCH
-- Handle any errors, e.g., print an error message
PRINT 'Error creating user in database MASTER: ' + ERROR_MESSAGE();
END CATCH
END
ELSE
BEGIN
PRINT 'User ' + @User + ' already exists in database MASTER';
END
-- Get a list of all databases
DECLARE @Databases TABLE (DatabaseName nVARCHAR(MAX));
INSERT INTO @Databases (DatabaseName)
SELECT name
FROM sys.databases
WHERE name LIKE 'synergetic%';
-- Loop through each database
DECLARE @Database nVARCHAR(MAX);
WHILE EXISTS (SELECT 1 FROM @Databases)
BEGIN
SELECT TOP 1 @Database = DatabaseName FROM @Databases;
-- Check if the user already exists in the current database
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = @User AND type_desc = 'SQL_USER' AND authentication_type_desc = 'INSTANCE')
BEGIN
-- Create the user in the current database and grant db_owner role
BEGIN TRY
EXEC ('USE [' + @Database + ']; CREATE USER ['+@Domain+'\'+@User+'] FOR LOGIN ['+@Domain+'\'+@User+']')
EXEC ('USE [' + @Database + ']; ALTER ROLE [db_owner] ADD MEMBER ['+@Domain+'\'+@User+']')
END TRY
BEGIN CATCH
-- Handle any errors, e.g., print an error message
PRINT 'Error creating user in database ' + @Database + ': ' +
ERROR_MESSAGE();
END CATCH
END
ELSE
BEGIN
PRINT 'User ' + @User + ' already exists in database ' + @Database;
END
-- Remove the processed database from the list
DELETE TOP (1) FROM @Databases;
ENDCode for ICON, Need to DELETE Later.
DECLARE @Domain NVARCHAR(MAX) = 'icon'
DECLARE @User NVARCHAR(MAX) = 'synsdtnonprod'
-- Create the login if it doesn't exist
IF NOT EXISTS (SELECT 1 FROM sys.server_principals WHERE name = @Domain + '\' + @User)
BEGIN
EXEC ('USE [master]; CREATE LOGIN ['+@Domain+'\'+@User+'] FROM WINDOWS WITH DEFAULT_DATABASE=[master]')
END
ELSE
BEGIN
PRINT 'Login ' + @Domain + '\' + @User + ' already exists.';
END
-- Grant sysadmin server role if the login doesn't already have it
IF NOT EXISTS (SELECT 1 FROM sys.server_role_members AS SRM JOIN sys.server_principals AS SP ON SRM.member_principal_id = SP.principal_id JOIN sys.server_principals AS SR ON SRM.role_principal_id = SR.principal_id WHERE SP.name = @Domain + '\' + @User AND SR.name = 'sysadmin')
BEGIN
EXEC ('USE [master]; ALTER SERVER ROLE [sysadmin] ADD MEMBER ['+@Domain+'\'+@User+']')
END
ELSE
BEGIN
PRINT 'Login ' + @Domain + '\' + @User + ' is already a sysadmin.';
END
-- Check if the user already exists in the MASTER database
IF NOT EXISTS (SELECT 1 FROM master.sys.database_principals WHERE name = @User AND type_desc = 'SQL_USER' AND authentication_type_desc = 'INSTANCE')
BEGIN
-- Create the user in the MASTER database and grant db_owner role
BEGIN TRY
EXEC ('USE [master]; CREATE USER ['+@Domain+'\'+@User+'] FOR LOGIN ['+@Domain+'\'+@User+']')
EXEC ('USE [master]; ALTER ROLE [db_owner] ADD MEMBER ['+@Domain+'\'+@User+']')
END TRY
BEGIN CATCH
-- Handle any errors, e.g., print an error message
PRINT 'Error creating user in database MASTER: ' + ERROR_MESSAGE();
END CATCH
END
ELSE
BEGIN
PRINT 'User ' + @User + ' already exists in database MASTER';
END
-- Get a list of all databases
DECLARE @Databases TABLE (DatabaseName nVARCHAR(MAX));
INSERT INTO @Databases (DatabaseName)
SELECT name
FROM sys.databases
WHERE name LIKE 'synergetic%';
-- Loop through each database
DECLARE @Database nVARCHAR(MAX);
WHILE EXISTS (SELECT 1 FROM @Databases)
BEGIN
SELECT TOP 1 @Database = DatabaseName FROM @Databases;
-- Check if the user already exists in the current database
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = @User AND type_desc = 'SQL_USER' AND authentication_type_desc = 'INSTANCE')
BEGIN
-- Create the user in the current database and grant db_owner role
BEGIN TRY
EXEC ('USE [' + @Database + ']; CREATE USER ['+@Domain+'\'+@User+'] FOR LOGIN ['+@Domain+'\'+@User+']')
EXEC ('USE [' + @Database + ']; ALTER ROLE [db_owner] ADD MEMBER ['+@Domain+'\'+@User+']')
END TRY
BEGIN CATCH
-- Handle any errors, e.g., print an error message
PRINT 'Error creating user in database ' + @Database + ': ' + ERROR_MESSAGE();
END CATCH
END
ELSE
BEGIN
PRINT 'User ' + @User + ' already exists in database ' + @Database;
END
-- Remove the processed database from the list
DELETE TOP (1) FROM @Databases;
ENDWas this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article