Tenho um banco de dados que deve sempre restaurar para a data em que foi criado, após adicionar dados de teste nele, recebo o create_date do script abaixo:
WITH LastRestores AS
(
SELECT
[d].[create_date] ,
r.*,
RowNum = ROW_NUMBER() OVER (PARTITION BY d.Name ORDER BY r.[restore_date] DESC)
FROM master.sys.databases d
LEFT OUTER JOIN msdb.dbo.[restorehistory] r ON r.[destination_database_name] = d.Name
WHERE [d].[name] = 'MyDatabase'
)
SELECT create_date
FROM [LastRestores]
WHERE [RowNum] = 1
Agora o que eu preciso fazer é executar um script que restaure o banco de dados para a data em que foi criado, assumindo que a data é estática/codificada no script, ou seja: é sempre '2019-03-08 11:31:50.237' e o banco de dados não é restaurado, mas armazenado em uma determinada pasta, ou seja, C:\Documents\BackUps\MyDatabase.bak , agora digamos que eu normalmente restauro bancos de dados assim:
USE [master]
RESTORE DATABASE MyDatabase
FROM
DISK = N'C:\Documents\BackUps\MyDatabase.bak' WITH FILE = 1,
MOVE N'MyDatabase' TO N'C:\Documents\BackUps\MyDatabase_rows.mdf',
MOVE N'MyDatabase_log' TO N'C:\Documents\BackUps\MyDatabase_log.ldf',
NOUNLOAD, STATS = 5
GO
A única diferença agora é que ele deve restaurar para um ponto no tempo que é '2019-03-08 11:31:50.237' usando um script.