Zápis dat do SQL table   zodpovězená otázka

ASP.NET WebForms, Databáze

dobrý den,

měl bych následující dotaz. Mám v provozu webovou aplikaci ASP.NET do které se uživatel musí autentifikovat přihlášením. Potom může z aplikace vybrat data a stiskem tlačítka je z těchto dat následně vytvořen PDF document, který lze buď uložit na disk nebo přímo tisknout.

Chtěl bych nějakým způsobem monitorovat co který uživatel tisknul. To znamená na událost stisku tlačítka navázat proceduru, která do nějaké monitorovací tabulky na SQL serveru zapíše nový záznam s údaji jména uživatele plus nejake další doplňující informace týkající se uživatelem vybraných dat.

Aplikaci ovšem využívá cca 60 uživatelů a je pravidlem, že je v určitém okamžiku přihlášeno 5-6 uživatelů, kteří pracují současně. Není nějaké nebezpečí kolize zápisu nových záznamů do monitorovací tabulky na sql serveru když pracuje více uživatelů najednou ? Případně jak tuto situaci principiálně nejlépe řešit.

Děkuji za všechny postřehy a rady.

Honza

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Při vkládání záznamů se kolize nebojte. Situace které se obáváte by mohla nastat např. při zápisu do souboru, tam by ji bylo třeba ošetřit. SQL server je dostatečně robustní a je určen právě pro nasazení na místech, kde se předpokládá přístup mnoha uživatelů současně. Sice tam nějaké omezení budou (např. vyčerpání počtu povolených připojení v tzv. connection poolu) ale toho se u této aplikace nemusíte obávat, pokud poctivě ukončujete spojení s SQL serverem. Pokud by jste je nezavíral a nechával je viset kdesi ve vzduchoprázdnu i poté co už nejsou potřeba, mohlo by dojít k jejich vyčerpání a server by další spojení nepřijal, ale toho bych se obával spíše u aplikaci, kde je současně mnohem více uživatelů než tady.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky za odpověď. Ještě upřesnění. Je tedy tento princip monitorování principiálně možný a správný ? Používá se podobný postup monitorování činnosti uživatelů i v praxi ? Samozřejmě v nějaké kompexnější verzi. Nebo je to jen můj "výmysl" ? :-)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

SQL Server je na konkurenční přístup dělaný, takže pokud budete naráz provádět několi insertů různými uživateli, postará se o to.

Pro vaše účely je to zřejmě nejlogičtější a nejlepší řešení. Napsat to tak, aby se data zapisovala řekněme do textového souboru je s ohledem na používání více uživatelů najednou netriviální, pokud to má fungovat. U databáze to máte zadarmo.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ok děkuji za odpověď...

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