Restore de Múltiplos Datafiles

 

Este script torna indisponível o banco, realiza o restore de múltiplos datafiles e ativa todos os logins existentes nele.
 
 
USE [master]
GO
ALTER DATABASE [CUSTO_PRE_PROD] SET  RESTRICTED_USER WITH ROLLBACK IMMEDIATE
GO
 
RESTORE DATABASE [CUSTO_PRE_PROD] FROM  DISK = N'N:\MSSQL2005\BACKUP\CUSTO\CUSTO_1_4.bak',  DISK = N'N:\MSSQL2005\BACKUP\CUSTO\CUSTO_3_4.bak',  DISK = N'N:\MSSQL2005\BACKUP\CUSTO\CUSTO_4_4.bak',  DISK = N'N:\MSSQL2005\BACKUP\CUSTO\CUSTO_2_4.bak' WITH  FILE = 1,  MOVE N'CUSTO_Data' TO N'S:\MSSQL2005\Data\CUSTO_PreProd.MDF',  MOVE N'CUSTO_Data2' TO N'R:\MSSQL2005\Data\CUSTO2_PreProd.MDF',  MOVE N'CUSTO_Log' TO N'L:\MSSQL2005\Log\CUSTO_Preprod.LDF',  NOUNLOAD,  REPLACE,  STATS = 10
GO
 

Este script torna indisponível o banco, realiza o restore de múltiplos datafiles e ativa todos os logins existentes nele.

USE [master]

GO

ALTER DATABASE [BANCO_DE_DADOS] SET  RESTRICTED_USER WITH ROLLBACK IMMEDIATE

GO

RESTORE DATABASE [BANCO_DE_DADOS] FROM  DISK = N'N:\MSSQL2005\BACKUP\BANCO_DE_DADOS\BANCO_DE_DADOS_1_4.bak',  DISK = N'N:\MSSQL2005\BACKUP\BANCO_DE_DADOS\BANCO_DE_DADOS_3_4.bak',  DISK = N'N:\MSSQL2005\BACKUP\BANCO_DE_DADOS\BANCO_DE_DADOS_4_4.bak',  DISK = N'N:\MSSQL2005\BACKUP\BANCO_DE_DADOS\BANCO_DE_DADOS_2_4.bak' WITH  FILE = 1,  MOVE N'BANCO_DE_DADOS_Data' TO N'S:\MSSQL2005\Data\BANCO_DE_DADOS_PreProd.MDF',  MOVE N'BANCO_DE_DADOS_Data2' TO N'R:\MSSQL2005\Data\BANCO_DE_DADOS2_PreProd.MDF',  MOVE N'BANCO_DE_DADOS_Log' TO N'L:\MSSQL2005\Log\BANCO_DE_DADOS_Preprod.LDF',  NOUNLOAD,  REPLACE,  STATS = 10

GO

USE [BANCO_DE_DADOS]

GO

EXEC sp_change_users_login 'Report'

GO

DECLARE @username VARCHAR(25)

DECLARE @create_login NVARCHAR(1000)

DECLARE fixusers CURSOR

FOR

SELECT

UserName = name

FROM

sysusers

WHERE

issqluser = 1 AND (sid IS NOT NULL AND sid <> 0x0) AND SUSER_SNAME(sid) IS NULL

ORDER BY

name

OPEN fixusers

FETCH NEXT FROM fixusers INTO @username

WHILE @@FETCH_STATUS = 0

BEGIN

BEGIN TRY

EXEC sp_change_users_login 'update_one', @username, @username

PRINT @username + ' atualizado.'

END TRY

BEGIN CATCH

PRINT CONVERT(VARCHAR(10), @@ERROR) + ' ' + ERROR_MESSAGE();

SET @create_login = N'CREATE LOGIN ' + @username + ' WITH PASSWORD = ''altere_a_senha'', CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'

PRINT @create_login

EXEC sys.sp_executesql @stmt = @create_login

EXEC sp_change_users_login 'update_one', @username, @username;

PRINT 'login ' + @username + ' criado e atualizado.'

END CATCH

FETCH NEXT FROM fixusers INTO @username

END

CLOSE fixusers

DEALLOCATE fixusers

GO

 

USE [CUSTO_PRE_PROD]
GO
 
EXEC sp_change_users_login 'Report'
GO
 
DECLARE @username VARCHAR(25)
DECLARE @create_login NVARCHAR(1000)
DECLARE fixusers CURSOR 
FOR
SELECT 
UserName = name 
FROM 
sysusers
WHERE 
issqluser = 1 AND (sid IS NOT NULL AND sid <> 0x0) AND SUSER_SNAME(sid) IS NULL
ORDER BY 
name
 
OPEN fixusers
 
FETCH NEXT FROM fixusers INTO @username
 
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN TRY
EXEC sp_change_users_login 'update_one', @username, @username
PRINT @username + ' atualizado.'
END TRY
BEGIN CATCH
PRINT CONVERT(VARCHAR(10), @@ERROR) + ' ' + ERROR_MESSAGE();
SET @create_login = N'CREATE LOGIN ' + @username + ' WITH PASSWORD = ''altere_a_senha'', CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'
PRINT @create_login
EXEC sys.sp_executesql @stmt = @create_login
EXEC sp_change_users_login 'update_one', @username, @username;
PRINT 'login ' + @username + ' criado e atualizado.'
END CATCH
FETCH NEXT FROM fixusers INTO @username
END
 
CLOSE fixusers
DEALLOCATE fixusers
GO