Skip to content

Instantly share code, notes, and snippets.

@mattiasnorell
Created April 26, 2019 08:35
Show Gist options
  • Save mattiasnorell/ebeefb8f62003f92d23b8d7e7a2f9b38 to your computer and use it in GitHub Desktop.
Save mattiasnorell/ebeefb8f62003f92d23b8d7e7a2f9b38 to your computer and use it in GitHub Desktop.
Restore MSSQL-database and add owners
USE [Master];
DECLARE @databaseName varchar(8000) = 'DATABASE NAME';
DECLARE @backupPath varchar(8000) = 'c:\path\to\database.bak';
DECLARE @databaseOwners varchar(2000) = 'list;of;usernames';
DECLARE @kill varchar(8000) = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), session_id) + ';'
FROM sys.dm_exec_sessions
WHERE database_id = db_id(@databaseName)
EXEC(@kill);
RESTORE DATABASE @databaseName FROM DISK = @backupPath WITH REPLACE;
PRINT 'Adding users';
DECLARE user_cursor CURSOR FOR Select value From STRING_SPLIT(@databaseOwners, ';');
OPEN user_cursor
DECLARE @value VARCHAR(500)
FETCH NEXT FROM user_cursor
INTO @value
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @addUser varchar(8000) = 'ALTER AUTHORIZATION ON DATABASE::' + @databaseName + ' TO "' + @value + '"';
EXEC(@addUser);
PRINT 'Added user: ' + @value;
FETCH NEXT FROM user_cursor INTO @value
END
CLOSE user_cursor;
DEALLOCATE user_cursor;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment