<?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>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31306.aspx</link><pubDate>Thu, 03 May 2007 06:48:56 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31306</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31306.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31306</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Επίσης, μερικά άλλα θέματα &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;mso-ansi-language:EN-US;"&gt;under consideration&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt; για την επιλογή job ή service, όπως:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Να υπάρχει περίπτωση να αλλάζει το timeout για το πότε θεωρείται ληγμένη μια εγγραφή. Ένα service μπορεί να έχει configuration form το οποίο θα χρησιμοποιεί οποιοσδήποτε έχει δικαιώματα για να αλλάζει το 15 σε κάτι άλλο. Η αντίστοιχη δουλειά, αν γίνει σε job στον SQL Server απαιτεί λίγες περισσότερες γνώσεις από αυτόν που θα "πειράξει" το job. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Το load του RDBMS vs το load των Windows. H κάθε λύση επιβαρύνει διαφορετικά το σύστημα οπότε ανάλογα τη συνολική αρχιτεκτονική, ενδέχεται κάποια από τις δύο λύσεις να σε συμφέρει περισσότερο.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;LI&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Αν δεν έχεις dedicated host για την εφαρμογή σου, δύσκολα θα σε αφήσουν να εγκαταστήσεις δικό σου service, οπότε πας για τη λύση του job ή ρίχνεις μια ματιά εδώ: &lt;A href="http://www.codeproject.com/aspnet/ASPNETService.asp"&gt;&lt;FONT color=#800080&gt;http://www.codeproject.com/aspnet/ASPNETService.asp&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;Δεν το έχω δοκιμάσει και σίγουρα χρειάζεται καλό έλεγχο.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Θα σου πρότεινα, αν έχεις την ευχέρεια, να δοκιμάσεις και τις δύο λύσεις ώστε αφενός να δεις τι σε συμφέρει καλύτερα και αφετέρου να μπορεί η λύση σου μελλοντικά να προσαρμοστεί σε οποιοδήποτε περιβάλλον.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31301.aspx</link><pubDate>Thu, 03 May 2007 06:16:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31301</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31301.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31301</wfw:commentRss><description>&lt;P&gt;Αν το μόνο που χρειάζεσαι είναι να εκτελέσεις κάποιο stored procedure, το να φτιάξεις ένα service δεν διαφέρει από το να φτιάξεις ένα job στον SQL Server το οποίο θα εκτελείται κάθε 15 λεπτά. Η λειτουργικότητα θα είναι η ίδια, ενώ το service θα βγει αρκετά πιο περίπλοκο. Από εκεί και πέρα μπορείς να συνδυάσεις δύο πράγματα. Το job μπορεί να μαρκάρει τις ληγμένες εγγραφές, ενώ το query το οποίο φορτώνει τις εγγραφές για τον κάθε χρήστη θα πρέπει να έχει και ένα Where το οποίο θα αποκλείει τις εγγραφές που έχουν λήξει. Θα πρέπει πάντως να έχεις ένα index στην στήλη των ημερομηνιών για να έχεις καλύτερη απόδοση και να αποφύγεις το κλείδωμα περισσότερων εγγραφών απ' όσες χρειάζεται.&lt;/P&gt;</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31281.aspx</link><pubDate>Thu, 03 May 2007 02:56:39 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31281</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31281.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31281</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;dt008:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;
&lt;p&gt;μια ιδέα που έχω είναι η εξής (μιλώντας για application layer πάντα)&lt;/p&gt;
&lt;p&gt;υποθέτω ότι μαζί με το status έχεις και ένα smalldatetime πεδίο που καταγράφει πότε έγινε insert το εκάστοτε record&lt;br&gt;επίσης υποθέτω ότι έχεις μια .aspx που επισκέπτονται οι authenticated users προκειμένου να κάνουνε reject ή accept ένα record&lt;br&gt;στο page_load σου, λοιπόν,&amp;nbsp;κάνεις ένα update του τύπου UPDATE table SET Status = 0 WHERE DATEDIFF(minute,datetimeColumn,GETDATE()) &amp;gt; 15&lt;br&gt;και μετά κάνεις select όλα τα rows με datediff μικρότερο του 15 και status 0, προκειμένου να επιλέξει ο authorized user αν θα κάνει accept ή reject κάποιο.&lt;/p&gt;
&lt;p&gt;έχει κάποιο performance hit (προφανώς) αλλά όχι και τόσο τραγικό.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Μαντεύεις σωστά. Δυστυχώς όμως δεν μπορώ να βάλω τέτοιον κώδικα στη σελίδα γιατί η καθυστέρηση θα είναι όντως τραγική. Το πλάνο είναι να υπάρχουν εκατοντάδες χρήστες οι οποίοι θα βλέπουν (ο καθένας τα δικά του requests οπότε δεν έχουμε τέτοια μπερδέματα) και η σελίδα θα γίνεται autorefresh κάθε 1-2 λεπτά. Όταν ο πίνακας αποκτήσει πολλές χιλιάδες εγγραφές τα πράγματα θα ζορίσουν. Ο server πρέπει όχι μόνο να εξυπηρετεί και την υπόλοιπη κίνηση της εφαρμογής αλλά τρέχει και πολλές ακόμη βάσεις. (Βέβαια αν αποκτήσει ο πίνακας μεγάλο μέγεθος, ο πελάτης θα τα κονομήσει οπότε θα τον βάλω να πάρει δικό του εξοπλισμό αλλά καλό είναι να κρατάω μικρό καλάθι).&lt;/p&gt;&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;dt008:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;άλλη ιδέα είναι να έχεις ένα windows service με timer που να κάνει αυτή τη δουλειά (αν μπορείς να σηκώσεις κάτι τέτοιο στο server)&lt;/p&gt;
&lt;p&gt;αλλά, όπως ανέφερε και ο Kelman, τα πάντα εξαρτώνται από το Business Logic σου &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;Αυτό με τον timer είναι ωραία ιδέα, θα στείλω ένα post στο hosting να δω αν το υποστηρίζουν. &lt;br&gt;Το business logic μου; Να στο πω δεν έχω πρόβλημα αν το βρει ο πελάτης στο google δεν θα ξεπλέξω εύκολα (και ξέρεις ότι το ριμαδο-google το ψάχνει το dnz πολύ και έχει και πολύ καλό pagerank οπότε θα του βγάλει και μέσα στην πρώτη σελίδα)&lt;br&gt;</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31278.aspx</link><pubDate>Thu, 03 May 2007 02:40:33 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31278</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31278.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31278</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;Pak:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Χωρίς να είμαι ειδήμονας πιστεύω θα έχεις αρκετά προβλήματα, γιατί απ ότι ξέρω καθώς θα εκτελείς την sp ο server θα σου κλειδώσει τον πίνακα. Οπόταν δέν θα μπορεί άλλο transaction να διαβάσει. Αυτό φυσσικά μπορείς να το ρυθμίσεις αλλά θα έχεις προβήματα concurrency. &lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;Αυτά φοβόμουν και έκανα την ερώτηση&lt;br&gt;&lt;br&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Pak:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Συμφωνώ με τον dt008 να υλοποιηθει σε application level. &lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;Να σου πω την αλήθεια ό,τι αφορά μόνο τα data προτιμώ να το βάζω στον sql.&lt;br&gt;&lt;br&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Pak:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; Αν είναι βάλε και κανένα κομματάκι κώδικα...&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;Τι κώδικα να σου βάλω; Ένα stored procedure που κάνει insert παίρνωντας 10 παραμέτρους και ένα typed dataset που καλεί την sp?&lt;br&gt;Περισσότερο θεωρητικό είναι το πρόβλημα. Να τρέχω κώδικα μετά από ένα insert ξέρω (με triggers). Τώρα ψάχνω και διαβάζω πώς θα τρέξω κώδικα 15 λεπτά μετά το Insert.&lt;br&gt;&lt;br&gt;Ευχαριστώ πάντως για το ενδιαφέρον.&lt;br&gt;</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31277.aspx</link><pubDate>Thu, 03 May 2007 02:37:31 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31277</guid><dc:creator>Δημήτρης Γκανάτσιος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31277.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31277</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;agmarios:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;στο web? &lt;BR&gt;θα δουλέψει; &lt;BR&gt;λες; &lt;BR&gt;το έχεις δοκιμάσει;&lt;BR&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;μια ιδέα που έχω είναι η εξής (μιλώντας για application layer πάντα)&lt;/P&gt;
&lt;P&gt;υποθέτω ότι μαζί με το status έχεις και ένα smalldatetime πεδίο που καταγράφει πότε έγινε insert το εκάστοτε record&lt;BR&gt;επίσης υποθέτω ότι έχεις μια .aspx που επισκέπτονται οι authenticated users προκειμένου να κάνουνε reject ή accept ένα record&lt;BR&gt;στο page_load σου, λοιπόν,&amp;nbsp;κάνεις ένα update του τύπου UPDATE table SET Status = 0 WHERE DATEDIFF(minute,datetimeColumn,GETDATE()) &amp;gt; 15&lt;BR&gt;και μετά κάνεις select όλα τα rows με datediff μικρότερο του 15 και status 0, προκειμένου να επιλέξει ο authorized user αν θα κάνει accept ή reject κάποιο.&lt;/P&gt;
&lt;P&gt;έχει κάποιο performance hit (προφανώς) αλλά όχι και τόσο τραγικό. &lt;/P&gt;
&lt;P&gt;άλλη ιδέα είναι να έχεις ένα windows service με timer που να κάνει αυτή τη δουλειά (αν μπορείς να σηκώσεις κάτι τέτοιο στο server)&lt;/P&gt;
&lt;P&gt;αλλά, όπως ανέφερε και ο Kelman, τα πάντα εξαρτώνται από το Business Logic σου &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/P&gt;</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31275.aspx</link><pubDate>Thu, 03 May 2007 02:29:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31275</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31275.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31275</wfw:commentRss><description>κάποιους εδω μέσα πρέπει να τους βάλω στα credits των εφαρμογών που φτιάχνω&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-22.gif" alt="Beer" /&gt;&lt;br&gt;</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31274.aspx</link><pubDate>Thu, 03 May 2007 02:25:37 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31274</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31274.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31274</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;agmarios:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; &lt;BR&gt;Ότι μπλοκάρει τα Transactions το διάβασα στο BOL αλλά ότι το trigger (το insert μας ενδιαφέρει μόνο e;inai transaction δεν το ήξερα)&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Δεν "είναι" transaction, απλά συμπεριλαμβάνεται μέσα στο transaction.&lt;/P&gt;
&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;agmarios:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Εναλλακτικά, μπορείς να βάλεις και ένα job στον server να "καθαρίζει" τα requests που δεν έχει αποδεχθεί κανένας. Όλα αυτά μπορείς να τα συνδυάσεις με κάποιο πεδίο status που θα εκμεταλλευτείς δεόντως. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;&lt;/SPAN&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;για δίνε κανένα link, αυτό ψάχνω.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Για ποιό πράγμα ακριβώς; To να φτιάξεις το job δεν είναι δύσκολο, δες εδώ: &lt;A href="http://msdn2.microsoft.com/en-us/library/ms190268.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms190268.aspx&lt;/A&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Το τι θα κάνει το job είναι το θέμα. Υποθέτω κάποιο update statement του τύπου "update πίνακα request, set status = 0 where submittime &amp;gt;= ..." &lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;agmarios:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt; Επιπρόσθετα,&amp;nbsp;στον 2005 μπορείς να χρησιμοποιήσεις notification services αλλά δεν ξέρω πώς παίζουν σε web application λογική. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;&lt;/SPAN&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Δεν υπάρχει πρόβλημα που είναι σε web. Αυτά ασχολούνται μόνο με τη βάση. &lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Ρίξε μια ματιά στα &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=e719ecf7-9f46-4312-af89-6ad8702e4e6e&amp;amp;displaylang=en"&gt;samples του SQL Server&lt;/A&gt;, έχει ένα που λέγεται ShoppingCart (στην κατηγορία Service Broker) που μπορεί να σου κάνει.&lt;BR&gt;&lt;/P&gt;&lt;/SPAN&gt;</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31267.aspx</link><pubDate>Thu, 03 May 2007 01:57:48 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31267</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31267.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31267</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;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;"μην τολμήσεις να ακολουθήσεις"&lt;/span&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;μη ντρέπεσαι, εκφράσου ελεύθερα. &lt;br&gt;Ότι μπλοκάρει τα Transactions το διάβασα στο BOL αλλά ότι το trigger (το insert μας ενδιαφέρει μόνο e;inai transaction δεν το ήξερα)&lt;br&gt;
&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;Κάνεις την εγγραφή κανονικά μαζί με την χρονική στιγμή που μπήκε το request. &lt;/span&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;Αυτό γίνεται&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt; O client κάνει poll ανά 15 λεπτά και βλέπει ποιά νέα requests έχουν μπει και ποιά έχουν λήξει. &lt;/span&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;αυτό σημαίνει ότι δεν θα απορρίπτονται τα request στα 15 λεπτά αλλά "κάπου εκεί γύρω"&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;Εναλλακτικά, μπορείς να βάλεις και ένα job στον server να "καθαρίζει" τα requests που δεν έχει αποδεχθεί κανένας. Όλα αυτά μπορείς να τα συνδυάσεις με κάποιο πεδίο status που θα εκμεταλλευτείς δεόντως. &lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;για δίνε κανένα link, αυτό ψάχνω&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt; Επιπρόσθετα,&amp;nbsp;στον 2005 μπορείς να χρησιμοποιήσεις notification services αλλά δεν ξέρω πώς παίζουν σε web application λογική. &lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;Δεν υπάρχει πρόβλημα που είναι σε web. Αυτά ασχολούνται μόνο με τη βάση. &lt;br&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:black;font-family:Tahoma;"&gt;Το τι ακριβώς θα κάνεις εξαρτάται από το business logic της εφαρμογής σου.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt;"&gt;Προφανώς. Ευχαριστώ για τις ιδέες.&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31264.aspx</link><pubDate>Thu, 03 May 2007 01:49:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31264</guid><dc:creator>Pak</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31264.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31264</wfw:commentRss><description>Οπας, ο ειδικός που λέγαμε!!!</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31263.aspx</link><pubDate>Thu, 03 May 2007 01:48:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31263</guid><dc:creator>Pak</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31263.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31263</wfw:commentRss><description>Χωρίς να είμαι ειδήμονας πιστεύω θα έχεις αρκετά προβλήματα, γιατί απ ότι ξέρω καθώς θα εκτελείς την sp ο server θα σου κλειδώσει τον πίνακα. Οπόταν δέν θα μπορεί άλλο transaction να διαβάσει. Αυτό φυσσικά μπορείς να το ρυθμίσεις αλλά θα έχεις προβήματα concurrency. Συμφωνώ με τον dt008 να υλοποιηθει σε application level. Φυσικά επιφυλάσσομαι να απαντήσουν και οι ειδικοί στον sql server! Αν είναι βάλε και κανένα κομματάκι κώδικα...</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31261.aspx</link><pubDate>Thu, 03 May 2007 01:44:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31261</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31261.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31261</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Ειδικά, αν θα&amp;nbsp;βάλεις WAITFOR σε trigger θα έχεις πρόβλημα. Κάθε INSERT/UPDATE/DELETE συνεπάγεται και ένα transaction, είτε το έχεις ξεκινήσει εσύ, είτε όχι. Σε περίπτωση που δεν το έχεις ξεκινήσει (δηλαδή πρόκειται για implicit transaction), είναι πολύ βραχύβιο και χονδρικά θεωρούμε ότι ζει από την στιγμή που θα γίνει execute η εντολή μέχρι να ολοκληρωθεί το IO operation. Χρησιμεύει δε για λόγους database consistency. Αν θα βάλεις WAITFOR στον INSERT trigger, σημαίνει ότι θα έχεις 15λεπτα transcations! Δηλαδή, 15λεπτα locks, δηλαδή το concurency πάει περίπατο! Άσε που έτσι κι αλλιώς μέχρι να ολοκληρωθεί ο trigger οι χρήστες δεν θα βλέπουν τη νέα εγγραφή που μπήκε για να μπορούν να την κάνουν update (είπαμε, locking). Θα σου πρότεινα να αποφύγεις (το λέω ευγενικά - θα έπρεπε να πω "μην τολμήσεις να ακολουθήσεις") αυτή ή παραπλήσια λογική και να δουλέψεις ως εξής:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:Tahoma;"&gt;Κάνεις την εγγραφή κανονικά μαζί με την χρονική στιγμή που μπήκε το request. O client κάνει poll ανά 15 λεπτά και βλέπει ποιά νέα requests έχουν μπει και ποιά έχουν λήξει. Εναλλακτικά, μπορείς να βάλεις και ένα job στον server να "καθαρίζει" τα requests που δεν έχει αποδεχθεί κανένας. Όλα αυτά μπορείς να τα συνδυάσεις με κάποιο πεδίο status που θα εκμεταλλευτείς δεόντως.&amp;nbsp;Επιπρόσθετα,&amp;nbsp;στον 2005 μπορείς να χρησιμοποιήσεις notification services αλλά δεν ξέρω πώς παίζουν σε web application λογική. Αυτές είναι μερικές ιδέες που μου έρχονται πρόχειρα. Το τι ακριβώς θα κάνεις εξαρτάται από το business logic της εφαρμογής σου.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31258.aspx</link><pubDate>Thu, 03 May 2007 01:30:31 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31258</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31258.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31258</wfw:commentRss><description>στο web? &lt;br&gt;θα δουλέψει; &lt;br&gt;λες; &lt;br&gt;το έχεις δοκιμάσει;&lt;br&gt;</description></item><item><title>Απ: Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31256.aspx</link><pubDate>Thu, 03 May 2007 01:26:15 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31256</guid><dc:creator>Δημήτρης Γκανάτσιος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31256.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31256</wfw:commentRss><description>Γιατί δεν το κάνεις στο application layer και το κάνεις στο database layer;</description></item><item><title>Χρήση WAITFOR</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31242.aspx</link><pubDate>Thu, 03 May 2007 00:15:22 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31242</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31242.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=31242</wfw:commentRss><description>Σχεδιάζω μια εφαρμογή όπου θα αποθηκεύονται requests. Οι εξουσιοδοτημένοι χρήστες θα μπορούν να αποδεχτούν ή να απορρίψουν ένα request. Αν ένα request δεν το αποδεχτεί κανείς (αλλάξει δηλαδή ένα bit πεδίο από 0 σε 1) τότε θα πρέπει να απορριφθεί αυτόματα μετά από ένα συγκεκριμένο χροονικό όριο (ας πουμε 15 λεπτά). &lt;br&gt;Ψάχνοντας το BOL βρήκα την waitfor και σκέφτηκα το εξής σενάριο:&lt;br&gt;Φτιάχνω ένα sp το οποίο υλοποιεί την απόρριψη&lt;br&gt;Φτιάχνω έναν trigger on insert το οποίο χρησιμοποιεί την waitfor. Όταν περάσουν τα 15 λεπτά ελέγχει αν το request (έχω το id του από τον inserted) έγινε αποδεκτό και αν δεν έγινε καλεί την sp απόρριψης.&lt;br&gt;&lt;br&gt;Πώς σας φαίνεται σαν λύση; &lt;br&gt;Έχετε κάνει κάποια παρόμοια υλοποίηση;&lt;br&gt;Καμιά άλλη ιδέα;&lt;br&gt;&lt;br&gt;Στο BOL λέει ότι η waitfor φτιάχνει ένα thread. Υπάρχει λοιπόν περίπτωση να μπουκώσω το server; Πολύ φοβάμαι πως ναι. Πρόκειται να web εφαρμογή και ο sql server είναι 2005 enterprice edition και φυσικά τρέχει και άλλες βάσεις. Περίπου 100 με 200.&lt;br&gt;&lt;br&gt;Αν φτιάξω CLR trigger και χρησιμοποιήσω την sleep ή τέλοσπάντων περιμένω εκεί θα είναι καλύτερα;&lt;br&gt;&lt;br&gt;Οποιαδήποτε εμπειρία, βίωμα, διαίσθηση, ενόραση κλπ καλοδεχούμενη&lt;br&gt;Μάριοσ&lt;br&gt;</description></item></channel></rss>