<?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>SQL Server (και άλλες databases)</title><link>https://www.dotnetzone.gr:443/cs/forums/28/ShowForum.aspx</link><description>Θέματα που αφορούν τον SQL Server (7.0, 2000, 2005) αλλά και Oracle, Access, DB2, MySQL, κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Ερώτηση για Transactions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/9586.aspx</link><pubDate>Mon, 13 Feb 2006 05:02:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:9586</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/9586.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=9586</wfw:commentRss><description>&lt;P&gt;Με αφορμή αυτά που κουβεντιάσαμε, έγγραψα ένα σχετικό άρθρο: &lt;A HREF="/cs/blogs/mkelaiditis/articles/9585.aspx"&gt;http://www.dotnetzone.gr/cs/blogs/mkelaiditis/articles/9585.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Ερώτηση για Transactions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/9274.aspx</link><pubDate>Mon, 06 Feb 2006 07:23:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:9274</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/9274.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=9274</wfw:commentRss><description>&lt;P&gt;Τα transactions δεν είναι και τόσο καλή ιδέα... Αν αυτός που πάει στη κουζίνα μετά ξεχάσει να γυρίσει, τι θα γίνει; Θα μείνει η εγγραφή κλειδωμένη; Εξάλλου, τα μεγάλα transactions μειώνουν το scalability της εφαρμογής διότι αυξάνονται τα κλειδώματα.&lt;/P&gt;
&lt;P&gt;Ουσιαστικά αυτό που περιγράφεις είναι ένα από τα conflict resolution σενάρια (update μιας εγγραφής που κάποιος άλλος έχει ήδη κάνει update, delete μιας εγγραφής που κάποιος άλλος έχει κάνει update, update μιας εγγραφής που κάποιος άλλος έχει κάνει delete). Γενικά τα conflicts προκύπτουν όταν τα data που βλέπεις και δουλεύεις είναι παροχημένα. Πες μας, μιλάς για εφαρμογή που παίζει με ADO.NET; Χρησιμοποιείς Dataset για να φέρνεις τα data στους clients και κατόπιν καλείς την Update method του Dataset; &lt;/P&gt;
&lt;P&gt;Σε αυτήν την περίπτωση δεν χρειάζεται να καταφύγεις σε flags.&amp;nbsp;Το Dataset για κάθε DataRow κρατάει την εικόνα του πως ήταν όταν το διάβασε (Για την ακρίβεια, κρατάει πολλές διαφορετικές εικόνες και μία από αυτές είναι το πως ήταν το record όταν έγινε populate το DataTable). Όταν θα καλέσεις την Update method, θα επιχειρήσει να κάνει update την εγγραφή αλλά δεν θα υπάρχει και θα σου επιστρέψει λάθος. Μπορείς να πιάσεις λοιπόν το λάθος και να κάνεις κάποια ενέργεια ανάλογα με τη λογική της εφαρμογής. Π.χ. να μετατρέψεις το update σε insert με νέες τιμές. Ή να ενημερώσεις αυτόν που πήγε να κάνει το update ότι πλέον η εγγραφή δεν υπάρχει. &lt;/P&gt;
&lt;P&gt;[Edit] Για περισσότερες πληροφορίες ψάξε για conflict resolution και concurrency ή ξαναρώτα ό,τι χρειαστείς.&lt;/P&gt;
&lt;P&gt;Επίσης, ξέχασα, ένα από τα απαραίτητα URLs για το concurrency &lt;A href="http://support.microsoft.com/default.aspx?scid=%2Fservicedesks%2Fwebcasts%2Fen%2Ftranscripts%2Fwct050103.asp"&gt;http://support.microsoft.com/default.aspx?scid=%2Fservicedesks%2Fwebcasts%2Fen%2Ftranscripts%2Fwct050103.asp&lt;/A&gt;&lt;/P&gt;</description></item><item><title>Απ: Ερώτηση για Transactions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/9273.aspx</link><pubDate>Mon, 06 Feb 2006 06:50:57 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:9273</guid><dc:creator>rama</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/9273.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=9273</wfw:commentRss><description>Εγραψα χαζομάρες ... &lt;br&gt;Στο βήμα 1.α ξεκινάει transaction το οποίο τελιώνει μετά το 2.α με commit ή στο 2.β με rollback.&lt;br&gt;Και ρωτάω : &lt;br&gt;Αυτό δεν γίνεται με transactions χωρίς flag?&lt;br&gt;Αν παίζει flag ο δεύτερος χρήστης θα διαβάσει την τιμή του (flag) όπως ήταν πριν ή μετα το begin transaction?</description></item><item><title>Ερώτηση για Transactions</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/9270.aspx</link><pubDate>Mon, 06 Feb 2006 06:14:45 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:9270</guid><dc:creator>rama</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/9270.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=9270</wfw:commentRss><description>&amp;nbsp;&amp;nbsp;&amp;nbsp; Πάει γέρασα ... έχω ξεχάσει και αυτά που ήξερα. Λοιπόν η περίπτωση είναι απλή. Έχουμε μία απλοϊκή εφαρμογή που διαβάζει και γράφει εγγραφές σε ένα πίνακα. Έχουμε 2 χρήστες που την χειρίζονται σε 2 διαφορετικά pcs. Ο πρώτος κάνει select blabla ... βλέπει τα results και επιλέγει ένα για να το μεταβάλει. Έχει ανοίξει το παραθυράκι που θα δώσει τις νέες τιμές αλλά δεν πατάει ok. Φεύγει από το pc του και πάει ... στην κουζίνα. Ο δεύτερος χρήστης κάνει τα ίδια, αλλά επιλέγει την ίδια εγγραφή και την διαγράφει. Ο πρώτος επιστρέφει, πατάει ok και παίρνει error. &lt;br&gt;Η λύση που σκέφτηκα είναι :&lt;br&gt;Εισαγωγή locked_flag σε κάθε εγγραφή.&lt;br&gt;1. Ο χρήστης επιλέγει οτι θέλει να μεταβάλει μία εγγραφή. Η εφαρμογή ελέγχει το flag. &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; α. Αν είναι ok τότε κάνει update το flag σε locked .&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; β. Δίνει ένα ενημερωτικό μήνυμα και απλά δείχνει την εγγραφή στον χρήση σε read only mode.&lt;br&gt;2. Ο χρήστης επιλέγει τι θα κάνει με την εγγραφή&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; α. Κάνει τις μεταβολές που θέλει και πατάει ok. Η εφαρμογή κάνει update στο row και κάνει update το flag σε clear.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; β. Κάνει cancel. Η εφαρμογή κάνει update το flag σε clear.&lt;br&gt;Η λογική αυτή έχει πρόβλημα αν κάτι συμβεί πριν προλάβει η εφαρμογή να κάνει update το flag σε clear.&lt;br&gt;&lt;br&gt;Η ερώτηση είναι απλή : Με transactions (χωρίς το flag) μπορώ να κλειδώσω την εγγραφή αυτή?</description></item></channel></rss>