Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » muerte 14:18
 » Wedrowiec 14:18
 » JE Jacaw 14:17
 » stefan_nu 14:15
 » dulik 14:13
 » bajbusek 14:13
 » krismel 14:11
 » bmiluch 14:10
 » @GUTEK@ 14:08
 » Hitman 14:03
 » Zibi 14:03
 » bieniek 14:02
 » rooter666 14:01
 » Syzyf 14:00
 » petropank 14:00
 » ekspert_I 13:57
 » Soulburne 13:56
 » abes99 13:53
 » Kenny 13:52
 » XepeR 13:51

 Dzisiaj przeczytano
 41116 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

Skrypt do backupu bazy w SQL Express , DmK 14/07/09 11:28
Z uwagi na brak agenta w SQL Express 2008 wygrzebałem z netu skrypt który taki bakup umożliwia. Jednak czy ktoś jest w stanie tak go zaktualizować, aby brał pod uwagę konkretną bazę? Dzięki za pomoc. Skrypt poniżej (o ile się wklei) :

Author
Brian Knight

**/



SET QUOTED_IDENTIFIER OFF

USE master
GO
SET NOCOUNT ON


DECLARE @dayofweek varchar(20)

SELECT
@dayofweek = CASE datepart(dw, getdate())
WHEN 1 THEN 'Sunday'
WHEN 2 THEN 'Monday'
WHEN 3 THEN 'Tuesday'
WHEN 4 THEN 'Wednesday'
WHEN 5 THEN 'Thursday'
WHEN 6 THEN 'Friday'
WHEN 7 THEN 'Saturday'
END

DECLARE @OutputPath varchar(500)
DECLARE @DatabaseBackupFile varchar(500)
DECLARE @FolderName varchar(25)
DECLARE @DatabaseName varchar(25)
DECLARE @strSQL varchar(2000)
DECLARE @hostname varchar(255)

SET @hostname = (select replace(convert(varchar(255),serverproperty('SERVERNAME')), '\','_'))

/**
MODIFY THIS PATH TO YOUR NEEDS:
**/

SET @OutputPath = 'D:\backupftp\sets\sqlexpress'

DECLARE cur_Backup CURSOR FOR
select name from sysdatabases where name !='tempdb'

OPEN cur_Backup

-- Fetch the db names from Cursor
FETCH NEXT FROM cur_Backup INTO @DatabaseName

WHILE @@FETCH_STATUS = 0
BEGIN


SET @DatabaseBackupFile = @OutputPath + '\' + @hostname + '-' + @DatabaseName + '-' + @dayofweek + '.bak'

print @DatabaseBackupFile


SET @strSQL = 'BACKUP DATABASE '+@DatabaseName+' TO DISK = "'+ @DatabaseBackupFile+ '" WITH RETAINDAYS = 7, NOFORMAT, INIT, NAME = N''Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10'

PRINT @strSQL
EXEC (@strSQL)

FETCH NEXT FROM cur_Backup INTO @DatabaseName
END

-- Distroy Cursor
CLOSE cur_Backup
DEALLOCATE cur_Backup


SET NOCOUNT OFF

  1. ten skrypt , gorii 14/07/09 11:32
    robi backup wszystkich utworzonych baz oprócz tempdb, jeśli chcesz tylko jedną konkretną to najszybciej zmienić warunek
    <name !='tempdb'> na <name = 'mojabaza'>

    szkoda że nie dali schedulera do SQL Express, też się z tym borykam, ale darowanemu koniowi...

    1. sprawdzę, dzięki , DmK 14/07/09 11:38
      szybkie pytanie, czy to zadziała również w tej wersji:

      <name = 'mojabaza','mojabaza1','mojabaza2'>

      ?

      1. o tak: , gorii 14/07/09 11:42
        name in ( 'baza1', 'baza2', 'baza3' )

        1. dzięki , DmK 14/07/09 11:51
          chyba przyda mi się powtórka z SQL..... jeszcze raz dzięki za pomoc, a skrypt może się komuś również przydać.

  2. po co CI tak rozbudowany ja mam u siebie na 2005 takie cos: , smagar 14/07/09 12:57
    zapisz jako C:\scripts\backup.sql

    declare @a datetime, @TMP varchar(300)
    set @a = getdate()
    --print replace(convert(char(10), @a, 102),'.','')
    set @TMP = ('backup database simple_master to disk = ''d:\backup\simple\simple_master_'+replace(convert(char(10), @a, 102),'.','')+'.bak''')
    execute (@TMP)
    set @TMP = ('backup database bd_simple to disk = ''d:\backup\simple\bd_simple_'+replace(convert(char(10), @a, 102),'.','')+'.bak''')
    execute (@TMP)

    zmień tylko simple_master i bd_simple na swoje i zrob plik backup.bat z zawartoscia:


    D:
    cd D:\backup\simple
    del *.* /q
    sqlcmd -S (local)\SIMPLE -U sa -P XXXXX-i C:\scripts\backup.sql

    sa user super admin
    XXXXX hasło

    w harmonogramie windowsa ustaw wywoływanie pliku bat

    1. acha, , smagar 14/07/09 12:59
      ja jescze arcserve zbieram pliki codzienie na macierz wiec kasuje w pliku bat ty mozesz nie kasowac a z harmonogramu innym skryptem je raz na tydzien przenosic sobie albo pakowac.

    2. dzięki , DmK 14/07/09 15:03
      ogólnie to co powyżej to wyszukałem na szybko w necie, chętnie skorzystam z czegoś mniej rozbudowanego. Powyższe sprawdze dopiero jutro, ale dzięki jeszcze raz. Pozdrawiam

      1. jak masz jedną bazę to kilka linijek i smiga ładnie , smagar 14/07/09 16:22
        declare @a datetime, @TMP varchar(300)
        set @a = getdate()
        --print replace(convert(char(10), @a, 102),'.','')
        set @TMP = ('backup database simple_master to disk = ''d:\backup\simple\simple_master_'+replace(convert(char(10), @a, 102),'.','')+'.bak''')
        execute (@TMP)

        1. mam 3 bazy , DmK 14/07/09 18:35
          ale pewnie to nie będzie problem, żeby to powyżej dopasować. Posklejam, powycinam i będzie działać ;) Najważniejsze, że ruszyło z kopyta bo dość mam ręcznego backaupu. Z drugiej strony szukanie w google szło mi gorzej niż słabo, bo zanim skrypt znalazłem minęło trochę czasu.

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL