Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.338 pregleda

Najnovija ↓

Backup DB na Express verziji - skripta 14.08.2015. u 18:32 · pre 136 meseci #1
Pozdrav svim ljudima dobre volje!

Molim vas sve za pomoć - radim na MS SQL serveru, revizija 2014 - EXPRESS izdanje ... A budući da ono ne poseduje agenta gde bih podesio bekap "job" ... pronašao sam alternativno rešenje u vidu saveta sa sledećeg linka ---> MSSQL Tips

Skripte rade odlično, ali u mom slučaju problem mi pravi što SQL skripta bekapuje SVE baze koje postoje na serveru ... a ne pojedinačno ciljano samo onu koju bih odredio za bekap.

Da li bih mogao da zamolim nekog iskusnijeg od mene da prepravi sledeću skriptu da može da se definiše ime jedne ili više pojedinačnih baza za bekap sa iste instance?

Code:

DECLARE @dateString CHAR(12), @dayStr CHAR(2), @monthStr CHAR(2), @hourStr CHAR(2), @minStr CHAR(2)
--month variable
IF (SELECT LEN(CAST(MONTH(GETDATE()) AS CHAR(2))))=2
   SET @monthSTR=CAST(MONTH(GETDATE()) AS CHAR(2))
ELSE
   SET @monthSTR= '0' + CAST(MONTH(GETDATE()) AS CHAR(2))
--day variable
IF (SELECT LEN(CAST(DAY(GETDATE()) AS CHAR(2))))=2
   SET @daySTR=CAST(DAY(GETDATE()) AS CHAR(2))
ELSE
   SET @daySTR='0' + CAST(DAY(GETDATE()) AS CHAR(2))
--hour variable
IF (SELECT LEN(DATEPART(hh, GETDATE())))=2
   SET @hourStr=CAST(DATEPART(hh, GETDATE()) AS CHAR(2))
ELSE
   SET @hourStr= '0' + CAST(DATEPART(hh, GETDATE()) AS CHAR(2))
--minute variable
IF (SELECT LEN(DATEPART(mi, GETDATE())))=2
   SET @minStr=CAST(DATEPART(mi, GETDATE()) AS CHAR(2))
ELSE
   SET @minStr= '0' + CAST(DATEPART(mi, GETDATE()) AS CHAR(2))
--name variable based on time stamp
SET @dateString=CAST(YEAR(GETDATE()) AS CHAR(4)) + @monthStr + @dayStr + @hourStr + @minStr
--=================================================================
DECLARE @IDENT INT, @sql VARCHAR(1000), @DBNAME VARCHAR(200)
SELECT @IDENT=MIN(database_id) FROM SYS.DATABASES WHERE [database_id] > 0 AND NAME NOT IN ('TEMPDB')
WHILE @IDENT IS NOT NULL
BEGIN
   SELECT @DBNAME = NAME FROM SYS.DATABASES WHERE database_id = @IDENT
/*Change disk location here as required*/
   SELECT @SQL = 'BACKUP DATABASE '+@DBNAME+' TO DISK = ''E:\SQL_Backup\'+@DBNAME+'_db_' + @dateString +'.BAK'' WITH INIT'
   EXEC (@SQL)
   SELECT @IDENT=MIN(database_id) FROM SYS.DATABASES WHERE [database_id] > 0 AND database_id>@IDENT AND NAME NOT IN ('TEMPDB')
END 



Svaka sugestija je dobrodošla.
Hvala u napred!
Potpis
.:NeXuS 2008:.
Re: Backup DB na Express verziji - skripta 14.08.2015. u 18:58 · pre 136 meseci #2
Najjednostavnije je da promeniš WHERE klauzulu tako da umesto
Code:
AND NAME NOT IN ('TEMPDB')

staviš
Code:
AND NAME IN ('NazivBaze1', 'NazivBaze2', ... itd.)

Gde su 'NazivBaze1', 'NazivBaze2', ... nazivi baza za koje ŽELIŠ da praviš rezervne kopije.
Napomenuću da ova izmena treba da se uradi na dva mesta.
Pozdrav
Sviđa mi se1
Re: Backup DB na Express verziji - skripta 14.08.2015. u 19:34 · pre 136 meseci #3
Hvala ti mnogo dobri čoveče Dušane!

Ne mogu da ti opišem koliko si mi pomogao ... ovo je jedan od onih problema gde imaš 95% posto rešenja pokriveno, ali onih poslednjih 5% je ključ da sve "klikne" i radi :)




Veliki pozdrav!
Potpis
.:NeXuS 2008:.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme