<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Πρώτα Βήματα - Βάσεις δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/73/ShowForum.aspx</link><description>Για όσους κάνουν τα πρώτα τους βήματα στην Microsoft Access ή τον SQL Server, ή γενικότερα στη θεωρία βάσεων δεδομένων.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Βοήθεια με έλεγχο security σε application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/35681.aspx</link><pubDate>Mon, 01 Oct 2007 05:47:53 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:35681</guid><dc:creator>Αλέξανδρος Δημητρίου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/35681.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=35681</wfw:commentRss><description>&lt;P&gt;Sorry παιδιά.Αναφέρομαι σε windows application και η γλώσσα που χρησιμοποιώ είναι VB&lt;/P&gt;
&lt;P&gt;Πάντως εάν η τελευταία απάντηση αναφέρεται σε εμένα λυπάμαι μα δεν θα μπορέσω να την υλοποιήσω.Λίγη βοήθεια παραπάνω θα ήταν επιθυμητή.Παρ'ολα αυτά ο χρόνος σας είναι σεβαστός και σας ευχαριστώ παρα πολύ.....&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Βοήθεια με έλεγχο security σε application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/35677.aspx</link><pubDate>Mon, 01 Oct 2007 04:26:16 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:35677</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/35677.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=35677</wfw:commentRss><description>&lt;P&gt;Από τη στιγμή που συζητάμε για το πως μπορούν να βρεθούν οι χρήστες που έχουν συνδεθεί στον SQL Server, είναι πάρα πολύ πιθανό η εφαρμογή να είναι desktop. Εξάλλου το είδος αυτό της ερώτησης είναι αρκετά συχνό. Οι άλλες πιθανόητες θα ήταν εφαρμογές windows services. Οι web εφαρμογές, εκ φύσεως, δεν κρατάνε ανοικτές συνδέσεις για πολύ ώρα, οπότε δεν μπορείς να βρεις τους συνδεδεμένους χρήστες από τη βάση.&lt;/P&gt;
&lt;P&gt;Το κύριο πρόβλημα με τη χρήση ενός πίνακα συνδεδεμένω χρηστών στη&amp;nbsp;βάση είναι ότι δεν αντιμετωπίζει εύκολα την περίπτωση της απότομης διακοπής της σύνδεσης. Σε αρκετές περιπτώσεις αρκεί περιοδικά να καθαρίζει κανείς τον πίνακα και να αφήσει τον administrator να αντιμετωπίσει τις περιπτώσεις που κάποιος χρήστης χάσει τη σύνδεση και δεν μπορεί να ξανασυνδεθεί μέχρι το επόμενο καθάρισμα του πίνακα. Σε κάποιες άλλες όμως αυτό δεν αρκεί. Το περιοδικό καθάρισμα του πίνακα δεν μπορεί να είναι πολύ συχνό (σε διάστημα δευτερολέπτων) λόγω κόστους της επικοινωνίας με τη βάση.&lt;/P&gt;
&lt;P&gt;Η λύση του ελέγχου sys.dm_exec_sessions έχει το καλό ότι θέλει ελάχιστο κώδικα, αλλά δεν θα τα πάει καλά αν θέλει κάποιος να χρησιμοποιήσει connection pooling ή άλλες προχωρημένες αρχιτεκτονικές στις οποίες δεν αντιστοιχεί μία σύνδεση ανά χρήστη. Μία τέτοια περίπτωση θα είναι π.χ. να χρησιμοποιήσει MSMQ ή Queued Services.&lt;/P&gt;
&lt;P&gt;Μία λύση η οποία χρησιμοποιείται από πολλές εφαρμογές για license management είναι η χρήση ενός server component το οποίο καλούν οι εφαρμογές όταν ξεκινάνε ή κλείνουν. Το component αυτό αναλαμβάνει να κρατήσει ποιοί χρήστες είναι συνδεδεμένοι κάθε στιγμή. Αν με κάποιο τρόπο διατηρείται ανοικτή η σύνδεση στο component για όλη τη ζωή της εφαρμογής, μπορεί κανείς να χειριστεί σχετικά αυτόματα και την απότομη απώλεια σύνδεσης. Πολύ απλά, όταν το component αντιληφθεί την απώλεια σύνδεσης διαγράφει την εγγραφή του αντίστοιχου χρήστη. &lt;BR&gt;Ένας τρόπος να υλοποιήσει κανείς ένα τέτοιο license manager είναι να δημιουργήσει ένα per-session component στο WCF και να κρατήσει το reference στο component σε ένα global variable. Το ίδιο μπορεί να γίνει και με Enterprise Services και με Remoting.&lt;/P&gt;
&lt;P&gt;Άλλη λύση είναι οι εφαρμογές να επικοινωνούν περιοδικά με τον license manager μέσω UDP packets και αυτός να τους απαντάει ότι μπορούν να συνεχίσουν να δουλεύουν. Αν ο license manager δεν λάβει απάντηση από ένα client για αρκετή ώρα, θεωρεί ότι δεν τρέχει πλέον. Ο manager θα πρέπει να απαντάει στους clients για να εμποδίσει κάποιος πονηρούς χρήστες να τον παρακάμψουν μπλοκάροντας τα απαραίτητα ports. Η επικοινωνία αυτή θα μπορεί να γίνει πολύ συχνά καθώς τα UDP πακέτα είναι πολύ μικρά και η επεξεργασία τους δεν θα κοστίζει ιδιαίτερα στο server - σε αντίθεση με τον έλεγχο των συνδέσεων στη βάση.&lt;/P&gt;</description></item><item><title>Απ: Βοήθεια με έλεγχο security σε application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/35675.aspx</link><pubDate>Mon, 01 Oct 2007 03:43:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:35675</guid><dc:creator>Thiseas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/35675.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=35675</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Panagiotis Kefalidis:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Υποθέτουμε ότι έχει WinForms..&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Ops!! ok!!&lt;br&gt;Νόμιζα οτι μίλαγε ο φίλος για WEB εφαρμογή... αν και δεν ξεκαθαρίζεται παρά μόνο από τη θέση του post.... &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt;&lt;br&gt;</description></item><item><title>Απ: Βοήθεια με έλεγχο security σε application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/35673.aspx</link><pubDate>Mon, 01 Oct 2007 03:32:56 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:35673</guid><dc:creator>Panagiotis Kefalidis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/35673.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=35673</wfw:commentRss><description>Υποθέτουμε ότι έχει WinForms.. Που και πάλι, WebForms να ήταν, δεν νομίζω ότι θα τον βόλευε γιαυτό το οποίο θέλει να κάνει!</description></item><item><title>Απ: Βοήθεια με έλεγχο security σε application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/35669.aspx</link><pubDate>Mon, 01 Oct 2007 03:21:58 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:35669</guid><dc:creator>Thiseas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/35669.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=35669</wfw:commentRss><description>Εχεις σκεφτεί μήπως σε βολεύουνε τα session cookies με ημερομηνία / ώρα λήξης?&lt;br&gt;Ρίξε μια ματιά εδώ:&lt;br&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms178194.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms178194.aspx&lt;/a&gt;&lt;br&gt;&lt;a href="http://erlend.oftedal.no/blog/?blogid=41"&gt;http://erlend.oftedal.no/blog/?blogid=41&lt;/a&gt;&lt;br&gt;</description></item><item><title>Απ: Βοήθεια με έλεγχο security σε application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/35664.aspx</link><pubDate>Mon, 01 Oct 2007 01:57:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:35664</guid><dc:creator>Panagiotis Kefalidis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/35664.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=35664</wfw:commentRss><description>&lt;P&gt;Υπάρχουν κι άλλοι τρόποι για να πετύχεις κάτι τέτοιο. Μια "βελτίωση" στον δικό σου τρόπο, θα ήταν να κρατάς τα δεδομένα των χρηστών που κρατάς ήδη, αλλά μ'ένα έξτρα πεδίο, στο οποίο θα κρατάς το datetime του Last check που έκανες εάν ο χρήστης ήταν μέσα ή οχι. Θα πρέπει να τροποποιήσεις την εφαρμογή σου, η οποία κάθε Χ λεπτά, θα επιβεβαιώνει ότι ο χρήστης είναι ακόμα μέσα. Έτσι, κατά την διάρκεια του Login που θα ελέγχεις θα στοιχεία του χρήστη, θα ελέγχεις και πότε ήταν η τελευταία φορά που ενημέρωσε ο χρήστης ότι ήταν "μέσα" στην εφαρμογή. Εάν αυτός ξεπερνάει τα λεπτά που έχεις ορίσει εσύ, τότε για κάποιο λόγο έχει μείνει στην "απέξω", οπότε αγνοείς το boolean και τον βάζεις κανονικά στην εφαρμογή. Για να μην μπορεί κάποιος να στα "πειράξει" αυτά τα στοιχεία και μπαίνουν χρήστες αβέρτα, μπορείς να κρυπτογραφήσεις το boolean και την ημερομηνία ώστε να μπορείς να τα διαβάσεις μόνο εσύ. &lt;/P&gt;
&lt;P&gt;Ο άλλος τρόπος θα ήταν να "γυρίσεις" όλη την φιλοσοφία σου σε SOA κατάσταση ώστε να ελέγχεις απο το service τι συμβαίνει στην εφαρμογή σου και ποιοι χρήστες είναι μέσα, σε ένα IsolatedStorage (χωρίς βάση δεδομένων δηλαδή) κι έτσι να μην έχεις "φόβο" απο τπτ, αλλά να είναι και πιο ευέλικτο σαν μοντέλο.&lt;/P&gt;</description></item><item><title>Απ: Βοήθεια με έλεγχο security σε application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/35663.aspx</link><pubDate>Mon, 01 Oct 2007 01:32:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:35663</guid><dc:creator>Αλέξανδρος Δημητρίου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/35663.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=35663</wfw:commentRss><description>&lt;P&gt;H αλήθεια είναι οτι δε γνωρίζω τίποτα από όσα ανέφερες.Πάντως σε ευχαριστώ πάρα πολύ για το χρόνο σου.Όσο για το λόγο που το θέλω είναι για να δημιουργήσω κάποιο κλείδωμα στην εφαρμογή μου ανάλογα με το πόσες άδειες χρήσης διαθέτει.Αυτό που εγώ κάνω αυτή τη στιγμή είναι να έχω έναν πίνακα που έχει σαν πεδία το όνομα χρήστη και ένα boolean πεδίο.κάθε φορά που κάποιος χρήστης ανοίγει την εφαρμογή το boolean πεδίο γίνεται ένα(1).όταν κλείνει γίνεται μηδέν (0). Κατα το login μετράω τα πεδία που είναι ένα(1).Εάν αυτά ξεπερνούν το μέγιστο αριθμό χτηστών απαγορεύει τη πρόσβαση.Όπως επίσης απαγορέυει την πρόσβαση όταν ο χρήστης είναι στο ένα(1).Δλδ να μην μπορούν να συνδεθούν δύο χρήστες με το ίδιο username.Όμως δεν μου αρέσει αυτό σαν υλοποίηση.Φοβάμαι πως άμα σε πετάξει έξω η εφαρμογή από κάποιο σφάλμα το πεδίο θα παραμείνει στο ένα (1) με αποτέλεσμα να μένει ο χρήστης κλειδωμένος.&lt;/P&gt;
&lt;P&gt;1)Ο τρόπος αυτός είναι λάθος?&lt;/P&gt;
&lt;P&gt;2)Υπάρχει κάποιος άλλος τρόπος ώστε νς υλοποιήσω σωστά κατι τέτοιο?&lt;/P&gt;
&lt;P&gt;3)Αν ναί τότε η βοήθεια σας θα είναι σημαντική.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ευχαριστώ για το χρόνο όλων....&lt;/P&gt;</description></item><item><title>Απ: Βοήθεια με έλεγχο security σε application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/35656.aspx</link><pubDate>Sun, 30 Sep 2007 21:35:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:35656</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/35656.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=35656</wfw:commentRss><description>&lt;P&gt;Κοίτα το &lt;STRONG&gt;sys.dm_exec_sessions &lt;/STRONG&gt;view. Θα πρέπει όμως να προσέξεις ότι κάποιες συνδέσεις θα οφείλονται στα ίδια τα εργαλεία του SQL Server, κάποια θα ανοίγουν λόγω του agent, και κάποια θα είναι σε dormant κατάσταση προκειμένου να χρησιμοποιηθούν από το μηχανισμό του connection pooling. &lt;/P&gt;
&lt;P&gt;Γιατί όμως θέλεις να βάλεις όριο συνδέσεων? Ανάλογα με το λόγο, υπάρχουν τρόποι να πετύχεις το ίδιο αποτέλεσμα χωρίς να ελέγχεις χειροκίνητα τον αριθμό των συνδέσεων. Αν για παράδειγμα χρησιμοποιήσεις Enterprise Services ή WCF μπορείς να εξυπηρετήσεις πολλές δεκάδες ταυτόχρονες κλήσεις με μερικές δεκάδες connections. Αυτό το πετυχαίνεις δημιουργώντας ένα αντικείμενο το οποίο θα δέχεται κλήσεις από τους clients και θα συνδέεται με τη βάση χρησιμοποιώντας connection pooling. Το αποτέλεσμα είναι ότι με λιγότερα connection θα καταφέρειες να εξυπηρετήσεις περισσότερους clients, και, εδώ είναι το ωραίο, με μεγαλύτερη ταχύτητα απ' ότι αν ο καθένας συνδεόταν απευθείας στη βάση.&lt;/P&gt;</description></item><item><title>Βοήθεια με έλεγχο security σε application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/35651.aspx</link><pubDate>Sun, 30 Sep 2007 20:33:56 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:35651</guid><dc:creator>Αλέξανδρος Δημητρίου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/35651.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=35651</wfw:commentRss><description>&lt;P&gt;Παιδιά Καλησπέρα!&lt;/P&gt;
&lt;P&gt;Βρίσκομαι στη φάση δημιουργίας ενός db application xρησιμοποιώντας sql server 2005 (Είναι η πρώτη μου σύνθετη εφαρμογή)&lt;/P&gt;
&lt;P&gt;Υπάρχει καποια function με την οποία μπορώ να δώ τον αριθμό χρηστών που είναι αυτή τη στιγμή συνδεδεμένοι στον sql Server ώστε να βάλω όριο πλήθους χρηστών στην εφαρμογή μου παραμετρικά?&lt;/P&gt;
&lt;P&gt;Τι πρέπει να κάνω στο application ουτώς ώστε κάθε φορά που κάνει κάποιος login&amp;nbsp;μετά&amp;nbsp;απο όνομα και κωδικό χρήστη που ζητά η εφαρμογή &amp;nbsp;να φαίνεται στον sql server ως συνδεδεμένος χρήστης?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Η βοηθεια σας είναι πολύ σημαντική και η αμεσότητα της σωτήρια..&lt;/P&gt;
&lt;P&gt;Σας ευχαριστώ πολύ εκ των προτέρων&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item></channel></rss>