Access linked server i MS SQL

Pozdrav. Imam problemčić jedan.
Na koji način složiti da mi se određena polja u tablici MS SQL baze refreshaju nakon dodavanja ili izmjena podataka u tablici access baze.

Ja sam sad napravio jedan linked server koji pokazuje na mdb file određene access baze. Šta dalje?
Replikacija, triggeri ili nešto treće? Radi se o ASP.NET MVC 3 aplikaciji ako je to važno.

Nisam toliko koristio MS SQL, ja za slične stvari u mysql-u koristim triggere.

Dapače, ako sam te dobro shvatio, mislim da su triggeri stvoreni za to.

Nažalost Access nema triggere.

Postoji opcija da osvježim tablicu prilikom dohvaćanja podataka iz te tablice. E sad kako napraviti usporedbu da li su ti podaci “svježi”?

Sa jednim SELECT COUNT(*) na tablici u SQL Serveru i u Access bazi pa ako je count isti onda su svi podaci unutra, a ako je count access baze veći od onog sql tablice onda nisu. Ako nisu kako dodati samo najnovije?

Krivo sam te skužio prvi put očito. Dakle ti imaš 2 baze, od kojih je jedna lokalno, a druga na SQL Serveru?

Upravo tako. Recimo još da se i ta access baza nalazi na istom računalu gdje je instaliran SQL server, makar ne mislim da to mijenja puno na stvari. Dakle glavni problem mi je sinhorinizacija tablica između te dvije baze nakon što se neki od zapisa tablici access bazi promijenio, nije bitno da li je dodan novi redak ili je neki već postojeći redak promijenjen.

Ja sam istu stvar radio pred nekoliko godina, ali bila je u pitanju SQLite baza i MySql.

Da li ti sinkronizacija treba u određenim intervalima ili baš instantno kod svake promjene? Da li se promjene mogu desiti sa obje strane ili samo “lokalno”?

Ako ti je na istom računalu instaliran SQL server, zašto koristiš 2 baze koje su na istom računalu?

Ja sam bio primoran riješiti problem na krajnje primitivan način - dodavanjem flagova (2 bita) za svaki row.

Sinkronizacija mi treba kod svake promjene podataka u access bazi.

Promjene o kojima treba obavijestiti SQL bazu događaju se samo u access bazi.

Zato što radim jednu web aplikaciju koja se nadopunjuje s već postojećom desktop aplikacijom, i u čiji kod nemam pristup, a isto tako zabranjeno mi je bilo kakvo petljanje po access bazi, bilo u smislu zapisivanja podataka, bilo u smislu dodavanja podataka i u bilo kojem drugom smislu. Dozovljeno mi je jedino iščupati određene podatke iz određenih tablica van.

Otpada, ne smijem petljati po bazi.

Ok, onda ti jedino ostaje sinkronizacija ili replikacija access baze. Jesi proučio te opcije?

http://office.microsoft.com/en-us/access-help/CH006252684.aspx

Jesam ne pomaže mi ništa, jer mi ta access baza nema nikakav trigger za opaliti kada se stanje u njoj promijeni. Moram to onda pješke odraditi i svaki put kad budem radio neki upit koji treba podatke iz te baze provjeriti da li ima novih unosa, ako ima prvo prebaciti te unose u moju tablicu pa onda podatke pokazati na ekranu.
Sva sreća pa će samo 4-5 ljudi koristiti to. :slight_smile:

Gledaj,

  1. MS Access podržava triggere (
    http://office.microsoft.com/en-us/access-help/create-a-trigger-adp-HP003085415.aspx
    )
  2. MS Access podržava replikacije
  3. Postoji Upsizing wizard
  4. To je moguće izvesti programski (.NET)
  5. To je moguće izvoditi s druge strane - iz SQL servera (triggeri+storice)
  6. +još najmanje 4-5 načina

Doista ima puno načina za izvesti to što trebaš, to je regularan svakodnevni zahtjev u poslovnim aplikacijama. Što si probao? Zašto nije radilo? S kakvim se problemima susrećeš?