* First copy the dump from \\\\spifls07.mon.local\\DATA.1013\\01_DBdumps\\SQL\\ to the target SQL Server in ONT * Check the current security settings on the ONT database, use this script [[Link List all permission in DB]]. * Restore over the existing database. Use the GUI interface to setup the restore, check the 'with replace' box, then script the statement to a new window. * There alter the script to get the following result ALTER DATABASE [[DBToRestore]] SET Single_user with rollback immediate GO RESTORE DATABASE ... * Let the restore do it's thing * When finished, recreate the premission with the above generated script * Eventually clean up the MON accounts ... * If any SQL accounts are restored, fix them with the following statement exec sp_change_users_login 'auto_fix', 'usernametofix' [[Category:SQL Server]] [[Category:BackupRestore]] set nocount on set quoted_identifier off declare @as_ObjectName sysname set @as_ObjectName = NULL --database owner info select 'alter authorization on database::[['+db_name()+']] to [['+ suser_sname(owner_sid)+']]' AS '--owner of database when script was created' from master.sys.databases where name = db_name() --drop and recreate users select '-- It is not always necessary to drop and recreate the users it will depend on the circumstances under which you need to run this script' select 'drop user [[' + name + ']]' from sys.database_principals where principal_id > 4 and owning_principal_id is NULL and type != 'A' order by name select 'CREATE USER [[' + dp.name collate database_default + ']] FOR LOGIN [[' + sp.name + ']]'+ case dp.type when 'G' then ' ' else ' WITH DEFAULT_SCHEMA=[['+dp.default_schema_name + ']]' end as '-- by default Orphaned users will not be recreated' from sys.server_principals sp inner join sys.database_principals dp on dp.sid = sp.sid where dp.principal_id > 4 and dp.owning_principal_id is NULL and sp.name <> // order by dp.name -- Recreate the User defined roles select '-- server created roles should be added by the correct processes' select 'CREATE ROLE [['+ name + ']] AUTHORIZATION [['+USER_NAME(owning_principal_id)+']]' from sys.database_principals where name != 'public' and type = 'R' and is_fixed_role = 0 -- recreate application roles select 'CREATE APPLICATION ROLE [['+ name + ']] with password = '+QUOTENAME('insertpwdhere',**')+' ,default_schema = [['+default_schema_name+']]' from sys.database_principals where type = 'A' -- ADD ROLE MEMBERS SELECT 'EXEC sp_addrolemember [[' + dp.name + ']], [[' + USER_NAME(drm.member_principal_id) + ']] ' AS [[-- AddRolemembers]] FROM sys.database_role_members drm INNER JOIN sys.database_principals dp ON dp.principal_id = drm.role_principal_id where USER_NAME(drm.member_principal_id) != 'dbo' order by drm.role_principal_id -- CREATE GRANT Object PERMISSIONS SCRIPT SELECT replace(state_desc,'_with_grant_option',//) + ' '+ permission_name + ' ON [[' + OBJECT_SCHEMA_NAME(major_id) + ']].[[' + OBJECT_NAME(major_id) + ']]'+ case minor_id when 0 then ' ' else ' ([['+col_name(sys.database_permissions.major_Id, sys.database_permissions.minor_id) + ']])' end +' TO [[' + USER_NAME(grantee_principal_id)+']]' + case when state_desc like '%with_grant_option' then ' with grant option' else ' ' end as '-- object/column permissions' FROM sys.database_permissions (NOLOCK) WHERE class not in (0,3) and major_id = ISNULL(OBJECT_ID(@as_ObjectName), major_id) --AND OBJECT_SCHEMA_NAME(major_id) != 'SYS' ORDER BY USER_NAME(grantee_principal_id),OBJECT_SCHEMA_NAME(major_id), OBJECT_NAME(major_id) --SCHEMA permissions SELECT replace(state_desc,'_with_grant_option',//) + ' '+ permission_name + ' ON SCHEMA::[[' + SCHEMA_NAME(major_id) + ']]'+ +' TO [[' + USER_NAME(grantee_principal_id)+']]' + case when state_desc like '%with_grant_option' then ' with grant option' else ' ' end as '-- Schema permissions' FROM sys.database_permissions (NOLOCK) WHERE class_desc = 'SCHEMA' ORDER BY USER_NAME(grantee_principal_id),SCHEMA_NAME(major_id) SELECT replace(state_desc,'_with_grant_option',//) + ' '+ permission_name + ' TO [[' + USER_NAME(grantee_principal_id)+']]' + case when state_desc like '%with_grant_option' then ' with grant option' else ' ' end FROM sys.database_permissions (NOLOCK) WHERE permission_name = 'VIEW DEFINITION' and class_desc = 'database' ORDER BY USER_NAME(grantee_principal_id) [[Category:SQL Server]]