Backup trans.logu   zodpovězená otázka

SQL, Databáze

Chtěla bych napsat servis, který by automaticky v určitý čas spustil backup databáze. Ten mi prochází, nemám žádný problém. Ale když chci backup transakčního logu, prográmek mi vynadá, že "časový limit vypršel před dokončením operace". Hrála jsem si s timeout v conn.stringu, ale zcela bezvýsledně. Kde může být chybka ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jak konkrétně máte realizováno to zálohování?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
strConn= "Server=xxx;DataBase=xxx;USERID=sa";PASSWORD=xxx";Timeout=30;"
Dim cnData As New SqlConnection(strConn)
cnData.Open()
Dim aName As String = "xxx"
Dim aCommand As New SqlCommand("BACKUP LOG xdbs TO DISK=N'" & Me.TextBoxAdr.Text & "\C_" & aName & ".bak' WITH NOFORMAT, NOINIT,  NAME = N'xdbs-Transaction Log  Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10", cnData)
aCommand.ExecuteNonQuery()

Zapoměla jsem napsat, že se jedná o SqlExpress 2005

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Provede se vám ten samý příkaz provedený pod tím samým uživatelem korektně v Management Studiu? To bych vyzkoušel jako první, pokud se to provede korektně, zkusil bych ve VB.NET aplikaci nastavit nějakou extrémní hodnotu timeoutu pro případ, že by to zálohování trvalo dlouho.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Samozřejmě (překopírovala jsem script z MS). Jinak timeout jsem jednou nastavila i na 7200 :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

On bude možná rozdíl mezi timeoutem zadaném v connection stringu a timeoutem příkazu (SqlCommand.CommandTimeout). Zkuste zvýšit i tento timeout. Pokud to nepomůže, tak bych možná řešil to zálohování jinak - pomocí úlohy v Plánovači úloh z Windows a nástroje SQLCMD.EXE (součástí SQL Serveru).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak je určitě rozdíl mezi timeoutem zadaném v connection stringu a timeoutem příkazu. Děkuji za nakopnutí. Už mi to funguje.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nepřihlásila jsem se a chci označit příspěvěk za zodpovězený.

Jinak o plánovači samozřejmě vím, ale chci určitou zodpovědnost přenést na zákazníky. Takže jim dávám možnost, aby si tyto činnosti jednoduchým způsobem časově řídili sami, a přitom je nepouštím tam, kam nechci. (Pro případ, že u zákazníka nemám partnera, t.j. jsou tam jen laici).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Timeout v connection stringu označuje ConnectionTimeout (také nastavitelný v objektu SqlConnection), který popisuje, jak dlouho se má maximálně klient pokoušet připojit k serveru, než zobrazí chybu. Se samotným vykonáváním příkazu to nemá nic společného (vlastnost CommandTimeout). Je to logické, ale snadno se to splete.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback