1: use master
2: DECLARE @dbName varchar(255),
3: @cmdtxt varchar(1000)
4:
5: -- Tar bort restore textfilen.
6: set @cmdtxt='del c:\SQLBackups\AutoRestore.txt'
7: exec xp_cmdshell @cmdtxt
8:
9: -- Skapar en pekare mot queryn för att hämta databasnamnen
10: DECLARE TableCrsr CURSOR FOR
11: -- sid=0x01 är det på databaser som kommer till vid installationen. Iallafall i min DB. ;)
12: SELECT name FROM sysdatabases where sid<>0x01 order by name
13:
14: -- Öppnar pekaren
15: OPEN TableCrsr
16:
17: -- Hämtar första raden in i min variabel
18: FETCH TableCrsr INTO @dbName
19:
20: -- Loopar till status = 0
21: WHILE @@Fetch_Status = 0
22: BEGIN
23: -- Skapar min restore text som skrivs ner med gamla hederliga DOS-komandot echo till textfilen med hjälp av xp_cmdshell i SQL Servern.
24: select @cmdtxt = 'echo restore database '+@dbName+' from disk =N''c:\SQLBackups\'+@dbName+'.bak'' >> c:\SQLBackups\AutoRestore.txt'
25: exec xp_cmdshell @cmdtxt
26:
27: -- Visar enkelt vart man är under själva exekveringen av backup.
28: select 'Backing up DB: ' + @dbName
29: -- Gör själva backupen.
30: exec (N'backup database '+@dbName+' to disk =N''c:\SQLBackups\'+@dbName+'.bak'' with init')
31:
32: -- Hämtar nästa rad av databasnamnen
33: FETCH TableCrsr INTO @dbName
34: END
35: -- Stänger pekaren
36: CLOSE TableCrsr
37: DEALLOCATE TableCrsr