Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

  • Jeroen_ae92
  • Registratie: April 2012
  • Laatst online: 28-11 14:17
Guys,

In onze opleidingsomgeving hebben we een SQL job lopen. Deze doet elke avond een backup van de database terugzetten om zo tijdens elke opleiding dezelfde data te hebben. Dit heeft uiteraard altijd keurig gewerkt totdat we qua DBA'ers omhoog kwamen te zitten. En uiteraard moest er wel een verversing van de data plaats te vinden.

Nu wordt nog steeds keurig de backup terug gezet echter stap 2 uit de job faalt. Dit is een check script.
Deze checked de datum uit een tabel en vervolgens dropped ie de tabel. Maar hoe krijg ik die tabel er nu in zodat het check script wel correcte output heeft?

Uiteraard moet ik eerst de tabel maken, check script testen daarna wederom tabel erin zetten, backup maken en dan de volledige job testen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
declare @cmd varchar(500)
declare @cmd2 varchar(500)
DECLARE @Thisday nvarchar(20)
Select @Thisday = Right('0' + Convert(VarChar(2), Day(GetDate())), 2) 
print @Thisday

DECLARE @Thismonth nvarchar(20)
SELECT @Thismonth = DATENAME(month, GETDATE())
print @Thismonth

DECLARE @Thismonthnumber nvarchar(20)
SELECT @Thismonthnumber = Right('0' + Convert(VarChar(2), Month(GetDate())), 2) 
print @Thismonthnumber
 
DECLARE @Thisyear nvarchar(20)
SELECT @Thisyear = DATENAME(year, GETDATE())
print @Thisyear
 
DECLARE @maindirectory VARCHAR(255)
SET @maindirectory = 'K:\Backup\Refresh_database\'
PRINT @maindirectory

DECLARE @Logfile VARCHAR(255)
SET @Logfile = '' + @maindirectory + @Thisday + ''+ @Thismonthnumber +'' + @Thisyear + '.log '
PRINT @Logfile

DECLARE @BackupFile VARCHAR(255)
SET @BackupFile = '' + @maindirectory + '\frismedisch1508.bak '
PRINT @BackupFile

set @cmd = 'ECHO Start check restore FrisMedisch on ' + @Thisday + ''+ @Thismonthnumber +'' + @Thisyear + ' >> '+ @Logfile + ''
exec master..xp_cmdshell @cmd;


DECLARE @checkdate char(6)
SELECT @checkdate=datum from ZVDZ_CHECK
PRINT 'Het is vandaag ' + @checkdate + ''
IF @checkdate='101012'
    BEGIN
        set @cmd = 'ECHO Check okee einde restore FrisMedisch on ' + @Thisday + ''+ @Thismonthnumber +'' + @Thisyear + ' >> '+ @Logfile + ''
        exec master..xp_cmdshell @cmd;
        DROP TABLE DETRON_CHECK
    END
ELSE
    BEGIN
        set @cmd = 'ECHO Check fout einde restore FrisMedisch on ' + @Thisday + ''+ @Thismonthnumber +'' + @Thisyear + ' >> '+ @Logfile + ''
        exec master..xp_cmdshell @cmd;
    END
PRINT 'Einde Script'

U+


  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 16:16
1. Definieer "Stap 2 uit de job faalt" => hier moet minimaal een reden van failure bij staan
2. Er worden logfiles aangemaakt (Day/Month/Year.log), staan hier nog aanwijzingen in?
3. Anders dan je aan lijkt te geven haalt hij de datum uit een andere tabel (ZVDZ_CHECK) dan de tabel die gedropt wordt..
4. ..mijn gok is dit deze tabellen in een eerdere step worden aangemaakt
5. Het handmatig aanmaken van deze tabellen zou symptoombestrijding zijn, de melding zou nu 'okee' zijn ondanks dat er fouten optreden.. of ben je er zeker van dat de restore goed is verlopen?

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


  • Jeroen_ae92
  • Registratie: April 2012
  • Laatst online: 28-11 14:17
Ik snap je deels. Zelf heb ik ook het idee dat de datum een vaste waarde is. Namelijk van het moment dat de backup is gemaakt. Hij zet immers elke dag dezelfde backup terug.

Misschien dat dit helpt. Dit is stap 1 van de job:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
declare @cmd varchar(500)
declare @cmd2 varchar(500)
DECLARE @Thisday nvarchar(20)
Select @Thisday = Right('0' + Convert(VarChar(2), Day(GetDate())), 2) 
print @Thisday

DECLARE @Thismonth nvarchar(20)
SELECT @Thismonth = DATENAME(month, GETDATE())
print @Thismonth

DECLARE @Thismonthnumber nvarchar(20)
SELECT @Thismonthnumber = Right('0' + Convert(VarChar(2), Month(GetDate())), 2) 
print @Thismonthnumber
 
DECLARE @Thisyear nvarchar(20)
SELECT @Thisyear = DATENAME(year, GETDATE())
print @Thisyear
 
DECLARE @maindirectory VARCHAR(255)
SET @maindirectory = 'K:\Backup\Refresh_database'
PRINT @maindirectory

DECLARE @Logfile VARCHAR(255)
SET @Logfile = '' + @maindirectory  + @Thisday + ''+ @Thismonthnumber +'' + @Thisyear + '.log '
PRINT @Logfile

DECLARE @BackupFile VARCHAR(255)
SET @BackupFile = '' + @maindirectory + '\frismedisch1508.bak '
PRINT @BackupFile

set @cmd = 'ECHO Start restore FrisMedisch on ' + @Thisday + ''+ @Thismonthnumber +'' + @Thisyear + ' > '+ @Logfile + ''
exec master..xp_cmdshell @cmd;

ALTER DATABASE FrisMedisch SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE

RESTORE DATABASE FrisMedisch
FROM DISK = @BackupFile
WITH REPLACE

ALTER DATABASE FrisMedisch SET RECOVERY FULL
ALTER DATABASE FrisMedisch SET MULTI_USER

set @cmd = 'ECHO Einde restore FrisMedisch on ' + @Thisday + ''+ @Thismonthnumber +'' + @Thisyear + ' >> '+ @Logfile + ''
exec master..xp_cmdshell @cmd;


EDIT

En de output van de failed job:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Date        8/17/2013 9:43:02 AM
Log     Job History (Restore opleiding FrisMedisch)

Step ID     2
Server      AMD-MA-SQL-57\NI1
Job Name        Restore opleiding FrisMedisch
Step Name       2 Check
Duration        00:00:00
Sql Severity        16
Sql Message ID      208
Operator Emailed        
Operator Net sent       
Operator Paged      
Retries Attempted       0

Message
Executed as user: MA\sa_zz_SQL. 17 [SQLSTATE 01000] (Message 0)  August [SQLSTATE 01000] (Message 0)  08 [SQLSTATE 01000] (Message 0)  2013 [SQLSTATE 01000] (Message 0)  K:\Backup\Refresh_database\ [SQLSTATE 01000] (Message 0)  K:\Backup\Refresh_database\17082013.log [SQLSTATE 01000] (Message 0)  K:\Backup\Refresh_database\\frismedisch1508.bak [SQLSTATE 01000] (Message 0)  Invalid object name 'ZVDZ_CHECK'. [SQLSTATE 42S02] (Error 208).  The step failed.

[ Voor 20% gewijzigd door Jeroen_ae92 op 18-08-2013 16:07 ]

U+


  • Oogje
  • Registratie: Oktober 2003
  • Niet online
Invalid object name 'ZVDZ_CHECK'

Bestaat die tabel nog wel?

Any errors in spelling, tact, or fact are transmission errors.


  • Jeroen_ae92
  • Registratie: April 2012
  • Laatst online: 28-11 14:17
Nope, dat is ook mijn issue. Ik kan de tabel wel aanmaken maar welke waardes moet ik hieraan meegeven.

Sterker nog, als stap 1 gelukt is, dan hoef ik toch eigenlijk geen check script te hebben?

U+


  • Oogje
  • Registratie: Oktober 2003
  • Niet online
Weet je zeker dat die tabel niet aangemaakt wordt met een ander script?

Any errors in spelling, tact, or fact are transmission errors.


  • Jeroen_ae92
  • Registratie: April 2012
  • Laatst online: 28-11 14:17
Daar is geen job voor. Dus ik denk dat die tabel erin gezet is voordat de "Golden" backup is gemaakt.

Heb ik stap 2 uberhaupt nodig?

[ Voor 14% gewijzigd door Jeroen_ae92 op 18-08-2013 16:59 ]

U+


  • HeSitated
  • Registratie: April 2009
  • Laatst online: 26-10 12:12
Ik denk dat dit je probleem is:
K:\Backup\Refresh_database\\frismedisch1508.bak
Let op de \\

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 16:16
Ik ben eigenlijk wel benieuwd of er verschillen zitten tussen de "Golden" backup die jullie hebben gemaakt en de oorspronkelijke "Golden" backup. Gaat stap 2 bij laatstgenoemde wel goed? Dan is dat een indicatie dat jullie backup niet goed gemaakt is, of in ieder geval een tabel mist :)

Daarnaast mis ik de context van stap 2. Is dit wel de target database of is deze misschien per ongeluk op master of msdb gezet / blijven staan?

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


  • Oogje
  • Registratie: Oktober 2003
  • Niet online
HeSitated schreef op zondag 18 augustus 2013 @ 17:02:
Ik denk dat dit je probleem is:

[...]


Let op de \\
Hmm das ook wel een goede, had ik over het hoofd gezien.

@ts, check regel 20 en 28 in je startpost, 1 van de \ moet verdwijnen.

Any errors in spelling, tact, or fact are transmission errors.


  • Jeroen_ae92
  • Registratie: April 2012
  • Laatst online: 28-11 14:17
Done maar dat maakt niets uit.

Ik denk dat ik stap 2 gewoon maar ga overslaan. Doet niets af van de werking en is m.i. alleen bedoeld voor een stukje logging.

U+


  • HeSitated
  • Registratie: April 2009
  • Laatst online: 26-10 12:12
Jeroen_ae92 schreef op zondag 18 augustus 2013 @ 18:14:
Ik denk dat ik stap 2 gewoon maar ga overslaan. Doet niets af van de werking en is m.i. alleen bedoeld voor een stukje logging.
Huh?

Volgens mij is RESTORE DATABASE iets meer dan logging.... ;)

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 15:08

Dido

heforshe

HeSitated schreef op zondag 18 augustus 2013 @ 18:44:
[...]

Huh?

Volgens mij is RESTORE DATABASE iets meer dan logging.... ;)
Da's stap 1 ;)

Wat betekent mijn avatar?


  • HeSitated
  • Registratie: April 2009
  • Laatst online: 26-10 12:12
Oohps.... over heen gelezen.... :z

Maar wat is de inhoud van Step2 dan? :?

  • Jeroen_ae92
  • Registratie: April 2012
  • Laatst online: 28-11 14:17
Das het 3e bericht. Daar staat stap 1 van de job. Stap 2 van de job staat in de openingspost.

U+


  • demokert
  • Registratie: Mei 2011
  • Laatst online: 28-11 13:45
Voor een simpele restore actie vind ik dit nogal een hoop werk.
Er zijn makkelijkere manieren om te kijken wanneer een database voor het laatst gerestored is. Als je daar interesse in hebt stuur me maar een PM dan kan ik je wel helpen. (morgen vroeg weer :) )
Pagina: 1