Created
April 26, 2019 08:35
-
-
Save mattiasnorell/ebeefb8f62003f92d23b8d7e7a2f9b38 to your computer and use it in GitHub Desktop.
Restore MSSQL-database and add owners
This file contains 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
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