Skip to content

Commit c726ee9

Browse files
author
Ajay Dwivedi
committed
Update few queries
Update few queries
1 parent ae2c1c3 commit c726ee9

File tree

9 files changed

+329
-194
lines changed

9 files changed

+329
-194
lines changed
8 KB
Binary file not shown.

Backup-Restore/Backup-Restore.ssmssqlproj

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,18 @@
111111
<ConnectionProtocol>NotSpecified</ConnectionProtocol>
112112
<ApplicationName>Microsoft SQL Server Management Studio - Query</ApplicationName>
113113
</ConnectionNode>
114+
<ConnectionNode Name="TUL1CIPRDB1:CORPORATE\adwivedi">
115+
<Created>2019-06-07T13:14:16.770149+05:30</Created>
116+
<Type>SQL</Type>
117+
<Server>TUL1CIPRDB1</Server>
118+
<UserName />
119+
<Authentication>Windows Authentication</Authentication>
120+
<InitialDB>master</InitialDB>
121+
<LoginTimeout>30</LoginTimeout>
122+
<ExecutionTimeout>0</ExecutionTimeout>
123+
<ConnectionProtocol>NotSpecified</ConnectionProtocol>
124+
<ApplicationName>Microsoft SQL Server Management Studio - Query</ApplicationName>
125+
</ConnectionNode>
114126
</Items>
115127
</LogicalFolder>
116128
<LogicalFolder Name="Queries" Type="0" Sorted="true">
@@ -164,8 +176,8 @@
164176
<FullPath>7) Copy Latest Full backup to Location - Reading BackupFile.sql</FullPath>
165177
</FileNode>
166178
<FileNode Name="7) Copy Latest Full backup to Location - Using BackupHistory.sql">
167-
<AssociatedConnectionMoniker />
168-
<AssociatedConnSrvName />
179+
<AssociatedConnectionMoniker>8c91a03d-f9b4-46c0-a305-b5dcc79ff907:TUL1CIPRDB1:True</AssociatedConnectionMoniker>
180+
<AssociatedConnSrvName>TUL1CIPRDB1</AssociatedConnSrvName>
169181
<AssociatedConnUserName />
170182
<FullPath>7) Copy Latest Full backup to Location - Using BackupHistory.sql</FullPath>
171183
</FileNode>
@@ -199,11 +211,17 @@
199211
<AssociatedConnUserName />
200212
<FullPath>RevLogin-Script.sql</FullPath>
201213
</FileNode>
202-
<FileNode Name="ScriptOut - RESTORE With REPLACE.sql">
214+
<FileNode Name="ScriptOut - RESTORE With REPLACE - Multiple Dbs.sql">
215+
<AssociatedConnectionMoniker>8c91a03d-f9b4-46c0-a305-b5dcc79ff907:(local):True</AssociatedConnectionMoniker>
216+
<AssociatedConnSrvName>(local)</AssociatedConnSrvName>
217+
<AssociatedConnUserName />
218+
<FullPath>ScriptOut - RESTORE With REPLACE - Multiple Dbs.sql</FullPath>
219+
</FileNode>
220+
<FileNode Name="ScriptOut - RESTORE With REPLACE - Single Db.sql">
203221
<AssociatedConnectionMoniker>8c91a03d-f9b4-46c0-a305-b5dcc79ff907:(local):True</AssociatedConnectionMoniker>
204222
<AssociatedConnSrvName>(local)</AssociatedConnSrvName>
205223
<AssociatedConnUserName />
206-
<FullPath>ScriptOut - RESTORE With REPLACE.sql</FullPath>
224+
<FullPath>ScriptOut - RESTORE With REPLACE - Single Db.sql</FullPath>
207225
</FileNode>
208226
</Items>
209227
</LogicalFolder>
Lines changed: 73 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,57 @@
1-
/*
2-
Get RESTORE statement for databases Keeping pre-existing FILE STRUCTURE
3-
Run on Target (Destination)
4-
*/
51
SET NOCOUNT ON;
62

73
declare @p_dbName varchar(100);
4+
declare @_backupFile varchar(2000);
5+
declare @_SourceServer varchar(255) = 'TUL1MDPDWMID01';
86
declare @sqlRestoreText varchar(max);
7+
declare @tsqlFetchLastBackup varchar(max);
98
declare @counter int = 1;
109
declare @total_counts int;
10+
DECLARE @SourceBackups TABLE (DbName varchar(125), FullBackupFile varchar(2000));
1111

1212
IF OBJECT_ID('tempdb..#Dbs') IS NOT NULL
1313
DROP TABLE #Dbs;
1414
SELECT ROW_NUMBER()OVER(ORDER BY dbName) as ID, dbName
1515
INTO #Dbs
1616
FROM (VALUES
17-
('AMG_AVG'),('AMG_Extra'),('AMG_Music'),('AMG_MusicMore'),('Babel'),('DSG_EU'),('Facebook'),
18-
('Mosaic'),('MuzeUK'),('MuzeUS'),('MuzeVideo'),('Prism'),('RGS'),('RCM_rovicore_20130710_NoMusic1a_en-US'),
19-
('Sky'),('Staging'),('Staging2'),('Twitter'),('TVGolConfigs'),('UKVideo')
17+
('Mosaic'),('MuzeUS'),('RCM_rovicore_20130710_NoMusic1a_en-US'),('Staging'),('Babel')
2018
) Databases(dbName);
21-
set @p_dbName = 'Cosmo';
2219

2320
select @total_counts = count(*) from #Dbs;
2421

22+
IF @_SourceServer IS NOT NULL
23+
BEGIN
24+
SET @tsqlFetchLastBackup = '
25+
SELECT *
26+
FROM OPENROWSET(''SQLNCLI'', ''Server='+@_SourceServer+';Trusted_Connection=yes;'', ''select DbName, FullBackupFile from DBA..Vw_Latest_Backups'') AS v;
27+
';
28+
29+
INSERT @SourceBackups
30+
EXEC (@tsqlFetchLastBackup);
31+
END
32+
33+
2534
while @counter <= @total_counts
2635
BEGIN
36+
SELECT @_backupFile = NULL,@sqlRestoreText = '';
2737
SELECT @p_dbName = dbName FROM #Dbs d WHERE d.ID = @counter;
2838

39+
IF @_SourceServer IS NOT NULL
40+
BEGIN
41+
SELECT @_backupFile = v.FullBackupFile
42+
FROM @SourceBackups AS v
43+
WHERE DbName = @p_dbName;
44+
45+
SET @_backupFile = CASE WHEN CHARINDEX(':',@_backupFile) > 0 THEN '\\TUL1MDPDWMID01\'+REPLACE(@_backupFile,':','$') ELSE @_backupFile END;
46+
END
47+
2948
set @sqlRestoreText = '
30-
RESTORE DATABASE '+QUOTENAME(@p_dbName)+' FROM DISK = N''Your-Backup-File-Path-in-Here''
31-
WITH RECOVERY
49+
USE master;
50+
go
51+
EXEC master..sp_Kill @p_DbName = '''+@p_dbName+''' ,@p_Force = 1;
52+
go
53+
RESTORE DATABASE '+QUOTENAME(@p_dbName)+' FROM DISK = N'''+CASE WHEN @_backupFile IS NOT NULL THEN @_backupFile ELSE 'Your-Backup-File-Path-in-Here' END +'''
54+
WITH NORECOVERY
3255
,STATS = 3
3356
,REPLACE
3457
';
@@ -37,14 +60,51 @@ BEGIN
3760
' ,MOVE N'''+name+''' TO N'''+physical_name+'''
3861
'
3962
from sys.master_files as mf
40-
where DB_NAME(mf.database_id) IN ('AMG_AVG','AMG_Extra','AMG_Music','AMG_MusicMore','Babel','DSG_EU','Facebook','Mosaic',
41-
'MuzeUK','MuzeUS','MuzeVideo','Prism','RGS','RCM_rovicore_20130710_NoMusic1a_en-US','Sky','Staging','Staging2','Twitter',
42-
'TVGolConfigs','UKVideo');
63+
where mf.database_id = DB_ID(@p_dbName);
4364

4465
SET @sqlRestoreText += '
4566
GO'
4667

4768
PRINT @sqlRestoreText;
4869

70+
SELECT @_backupFile = '',@sqlRestoreText = '', @p_dbName = '';
4971
SET @counter += 1;
5072
END
73+
74+
/*
75+
USE [DBA]
76+
GO
77+
ALTER VIEW [dbo].[Vw_Latest_Backups] AS
78+
WITH T_Latest_Full AS
79+
(
80+
SELECT ROW_NUMBER()OVER(PARTITION BY bs.type ,bs.database_name ORDER BY bs.backup_finish_date DESC) as rownum,
81+
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS SERVER
82+
,bs.database_name
83+
,bs.backup_start_date
84+
,bmf.physical_device_name
85+
,checkpoint_lsn
86+
FROM msdb.dbo.backupmediafamily AS bmf
87+
INNER JOIN msdb.dbo.backupset AS bs ON bmf.media_set_id = bs.media_set_id
88+
WHERE bs.type='D'
89+
and bs.is_copy_only = 0
90+
--and bmf.physical_device_name like 'F:\dump\FullBackups2\%'
91+
)
92+
SELECT f.SERVER as Server, f.database_name as DbName, f.physical_device_name as FullBackupFile,
93+
f.backup_start_date as FullBackupStartDate, f.checkpoint_lsn as Full_checkpoint_lsn
94+
,d.physical_device_name as DiffBackupFile ,d.backup_start_date as DiffBackupStartDate ,d.database_backup_lsn as Diff_database_backup_lsn
95+
FROM T_Latest_Full as f
96+
outer apply
97+
( SELECT TOP (1) bs.backup_start_date
98+
,bmf.physical_device_name
99+
,bs.database_backup_lsn
100+
FROM msdb..backupmediafamily AS bmf
101+
INNER JOIN msdb.dbo.backupset AS bs ON bmf.media_set_id = bs.media_set_id
102+
WHERE bs.type='I' and bs.database_name = f.database_name
103+
and f.checkpoint_lsn = bs.database_backup_lsn
104+
and bs.is_copy_only = 0
105+
and bmf.physical_device_name like 'F:\dump\DiffBackups\%'
106+
order by backup_start_date desc
107+
) AS d
108+
where F.rownum = 1;
109+
GO
110+
*/

0 commit comments

Comments
 (0)