Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[C# i SQL Server CE] There is a file sharing violation

[es] :: .NET :: [C# i SQL Server CE] There is a file sharing violation

[ Pregleda: 1986 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

johnnyc

Član broj: 175590
Poruke: 202
*.dynamic.sbb.rs.



Profil

icon [C# i SQL Server CE] There is a file sharing violation13.12.2009. u 15:34 - pre 174 meseci
Pozdrav,

Pravim C# Windows aplikacije, koje rade sa SQL Server CE bazom.

U pitanju su dve aplikacije koje rade nad istim SDF fajlom.

Prva aplikacija koristi SDF na svakih 5-6 minuta. Sve sto radi je da otvori konekciju, ocita podatke, i zatvori je. Sve radi najjednostavnije moguce:

Code:

          SqlCeConnection con = new SqlCeConnection(connectReport);
            SqlCeCommand cmd = new SqlCeCommand(sql, con);
            SqlCeDataReader reader;

            try
            {
                con.Open();
                
            }
            catch (SqlCeException sqlexception)
            {
                //Console.WriteLine(sqlexception.Message);
            }
            catch (Exception ex)
            {
                //Console.WriteLine(ex.Message);
            }
            
            
            int mySpeed = 0;
            string tmpStrMy = "";

            MyClass.contentImageList.Clear();
            try
            {
                reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    MyClass.contentImageList.Add(reader[0]);
                    tmpStrMy = tmpStrMy + reader[0].ToString() + ",";
                    mySpeed = Convert.ToInt32(reader["My_Speed"]);
                }
                reader.Close();
            }
            catch (SqlCeException sqlexception)
            {
                //Console.WriteLine(sqlexception.Message);
            }
            catch (Exception ex)
            {
                //Console.WriteLine(ex.Message);
            }

            if (con.State == ConnectionState.Open)
            {
                try
                {
                    con.Close();
                }
                catch (Exception ex) {
                    MessageBox.Show("Ne mogu da zatvorim konekciju - \n" + ex.ToString()); // ovo nikad ne javi
                }

            }




Nad istim tim sdf fajlom, na vrlo slican nacin, radi jos jedna aplikacija. Pomocu
nje radim sa podacima koji se nalaze u SDF fajlu.


Problem koji mi se javlja je da se (skoro, ili u 90% slucajeva) svaki put kada
druga aplikacija pokusa da uradi najjednostavniji SELECT, vrati gresku:

Code:

There is a file sharing violation. A different process might be using the file.


Deluje kao da prva aplikacija (ona koja koristi SDF na svakih nekoliko minuta) ili
nije zatvorila konekciju (a jeste). Ili je nesto drugo u pitanju?


Da li mozete da mi pomognete i da mi kazete gde gresim, sta nisam uradio kako treba?


 
Odgovor na temu

marko_81
Marko Acović

Član broj: 97248
Poruke: 133
109.93.56.*



+1 Profil

icon Re: [C# i SQL Server CE] There is a file sharing violation13.12.2009. u 16:02 - pre 174 meseci
Verovatno ti jedna od aplikacija zakljucava bazu za citanje ovoj drugoj aplikaciji.
Probaj da u konstruktor SqlCeConnection prosledis odgovarajuci connection String.
Pogledaj ovo za detalje: http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection.connectionstring%28VS.80%29.aspx.
Nadam se da ce biti od pomoci.
 
Odgovor na temu

johnnyc

Član broj: 175590
Poruke: 202
*.dynamic.sbb.rs.



Profil

icon Re: [C# i SQL Server CE] There is a file sharing violation13.12.2009. u 16:29 - pre 174 meseci
Da, moguce je da si u pravu... ali iako sam pokusao sa razlicitim vrednostima za Mode, nisam uspeo da resim problem...


Za prvu, koja pristupa na svakih nekoliko minuta, i koja radi samo read-only, postavio sam sledeci connection string:

Code:

connectReport = string.Format("Data Source='DatabaseFile.sdf';File Mode='Shared Read';Persist Security Info=False;");


Po svemu sudeci, bas ta aplikacija zakljucava bazu.


Za drugu, koja pristupa bazi za citanje i izmenu, postavio sam

Code:

connectReport = string.Format("Data Source='DatabaseFile.sdf';File Mode='Read Write';Persist Security Info=False;");



Gde gresim?

Hvala unapred na pomoci!

[Ovu poruku je menjao johnnyc dana 13.12.2009. u 17:40 GMT+1]
 
Odgovor na temu

marko_81
Marko Acović

Član broj: 97248
Poruke: 133
109.93.56.*



+1 Profil

icon Re: [C# i SQL Server CE] There is a file sharing violation13.12.2009. u 16:50 - pre 174 meseci
Koliko sam nasao na netu File Mode=Shared Read dozvoljava citanje baze drugim procesima ali ne i modifikovanje (http://www.connectionstrings.com/sql-server-2005-ce).
Jesi probao da stavis za prvu: File Mode=Read Only a drugu da ostavis kakva jeste?
 
Odgovor na temu

johnnyc

Član broj: 175590
Poruke: 202
*.dynamic.sbb.rs.



Profil

icon Re: [C# i SQL Server CE] There is a file sharing violation13.12.2009. u 17:34 - pre 174 meseci
Marko pozdrav,

resili smo ga, postavio sam File Mode=Shared Read za drugu i sada radi ok... ili bar deluje da je ok
:-)


hvala ti!
 
Odgovor na temu

[es] :: .NET :: [C# i SQL Server CE] There is a file sharing violation

[ Pregleda: 1986 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.