Aktualizace dat   otázka

VB.NET, Databáze

Potřeboval bych poradit jak řešit problematiku aktualizace dat v lokální aplikaci, která má zdroj dat na serveru SQL 2005 ?

Existuje nějaká jednoduchá možnost jak by server zjistil že došlo k aktualizaci určitých tabulek a odeslal informaci na všechny připojené aplikace u klientů ?

Méně elegantní možností by bylo při každé změně dat na serveru zároveń uložit informaci do jednoduché tabulky z časem poslední změny, případně v které tabulce nastala. V uživatelských aplikacích pak nastavit timer, který bude každých x sekund zjišťovat na serveru co je nového. Ale zde by nastal další problém, protože jsem nepochopil jak funguje Timestamp resp. jak z něho přečíst a následně porovnat čas uložení u klienta. Uložení času z klintského PC může být totiž nesmyslné, viz. můj poslední příspěvek.

Děkuji za jakékoliv nápady.

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

Pro to ukládání s časem bude nejlepší vytvořit uloženou proceduru, které předáte požadované parametry které chcete uložit a ona pomocí SQL funkce GetDate() zaznamená aktuální čas na serveru (který tím pádem nebude možné podvrhnout).

Co se týče zjišťování změn v databázi klientskou aplikací jsou mi známy dva způsoby jak to udělat: Jak už jste řekl pomocí periodického zjišťování změn (Timer) a nebo vytvořit Assembly která bude komunikovat s klientskou aplikací (např. pomocí UDP nebo .NET Remotingu) a která bude integrovaná přímo v databázi a bude se volat pomocí triggeru v požadované tabulce.

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

Děkuji za radu.

Našel jsem tohle a potřeboval bych to trochu osvětlit, protože s Transact-SQL začinám.

1.CREATE TRIGGER Updated

2.ON Persons

3.FOR UPDATE

4.AS

5.IF ( @@ROWCOUNT = 0 )

6.RETURN

7.UPDATE Persons

8.SET UPDATED = GetDate()

9.WHERE GUID in (Select GUID FROM Inserted)

1. je název

2. nad tabulkou

3. pro update (dá se nastavit zároveň pro insert ?)

5. když počet řádku = 0 ???

6. vrací co ?

7. udělá update v tabulce ?

8. získá čas z SQL serveru (systémový čas serveru ?)

9. ?

Kdyby jste mi malinko okomentnul ten příklad byl bych vám vděčný, protože potřebuji vyřešit, co se týče Transact-SQL, pouze tento problém.

nahlásit spamnahlásit spam 0 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