Avatar billede Slettet bruger
07. februar 2006 - 09:40 Der er 9 kommentarer

FireBird database låst af asp.net processen

Jeg bruger en FireBird embedded database i min .net applikation.

Når jeg prøver at tage en backup med FbBackup() får jeg en I/O error fordi filen ikke kan tilgås - den er låst.

Hvordan får jeg låst databasen op så jeg kan få taget en backup - og lave en restore?

Min kode til backup ser således ud:

using System;
using FirebirdSql.Data.Firebird;
using FirebirdSql.Data.Firebird.Services;

    public static void Backup(string FromConnStr, string BackupFileName)
    {
      FbConnectionStringBuilder cs = new FbConnectionStringBuilder(FromConnStr);
      FbBackup backup = new FbBackup();
      backup.ConnectionString = cs.ToString();
      backup.BackupFiles.Add(new FbBackupFile(BackupFileName, 2048));
      backup.Verbose = false;
      backup.Options = FbBackupFlags.IgnoreLimbo;
      backup.Execute();
    }
Avatar billede Slettet bruger
07. februar 2006 - 17:37 #1
Lyder som om du bliver nød til at stoppe din IIS inden du tager backup.

Holder du firebird åben over requests i din ASP.NET applikation?
Avatar billede arne_v Ekspert
08. februar 2006 - 03:29 #2
enten skal du stoppe ASP.NET eller saa skal du koere uden connection pool

kryptos>

med connection pool behoeber man ikke gemme logiske connections i session for at
have long living fysiske connections
Avatar billede Slettet bruger
08. februar 2006 - 07:19 #3
arne> Kender ikke Firebird helt men med andre embedded løsninger som eksempelvis Berkley DB har man ikke connection-pools.
Avatar billede Slettet bruger
08. februar 2006 - 10:52 #4
FireBird bruger connection pools.
At stoppe asp.net processen lyder ikke som en mulig løsning for så stopper jeg jo min egen applikation :).
At stoppe IIS er heller ikke muligt på grund af sikkerhedsindstillingerne.

Men måske man kunne lukke forbindelsen til FireBird og tømme connection poolen? Men kan man overhovedet det?
Avatar billede Slettet bruger
08. februar 2006 - 10:58 #5
så har du ikke anden mulighed end at stoppe IIS for du kan ikke tømme connection pool så vidt jeg ved.

Giver det overhovedet mening for din applikation at køre uden at der er forbindelse til Firebird. Det jeg ville frem til er om det ikke kommer ud på et at lukke IIS og lukke alle database forbindelser, kan du overhovedet garanterer at din applikation ikke blot laver en ny forbindelse når nogen bruger dit site.

Måske det var en ide at forske lidt i om Firebird giver mulighed for live-backup? Men det ved du jo sikkert allerede ;)
Avatar billede Slettet bruger
08. februar 2006 - 11:02 #6
Det der undrer mig mest er at FbBackup ikke tager en live-backup. For det giver netop ingen mening ikke at kunne tage en backup med mindre ingen andre bruger databasen.

Jeg havde håbet at en anden bruger kunne slå ned på min kode og sige "Se! du har jo bare glemt at ..."

Men ak.
Avatar billede Slettet bruger
08. februar 2006 - 11:08 #7
Har du kigget på gbak tool eller sådan noget som

http://www.download2you.com/details_page.asp?titleID=11780

Bare en skud....
Avatar billede arne_v Ekspert
08. februar 2006 - 21:50 #8
proev at angive Pooling=false i din connection string

maaske slipper du af med fjeln

men maaske bliver performance ogsaa elendig
Avatar billede arne_v Ekspert
12. marts 2006 - 05:21 #9
Kommet videre ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester