<?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>Απ: SQL Server 2005 και IDENT_CURRENT</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10532.aspx</link><pubDate>Fri, 10 Mar 2006 05:19:57 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10532</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10532.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=10532</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;kkara wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;&lt;img src="/cs/emoticons/emotion-55.gif" alt="Idea [I]" /&gt;Εύρηκα, Εύρηκα, και δεν χάρηκα καθόλου...&lt;BR&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Εγώ να δεις! &lt;img src="/cs/emoticons/emotion-12.gif" alt="Angry [:@]" /&gt; Υποθέστε ότι ακολουθούν τα διόλου κολακευτικά μου σχόλια προς τους συγγραφείς του Books Online του SQL Server 2005. Η αλλαγή αυτή θα έπρεπε να αναφέρεται στο documentation. Είναι απόλυτα λογικό η IDENT_CURRENT να μην επιστρέφει τιμές για ένα πίνακα στον οποίο δεν έχεις permissions, αλλά αυτό ΠΡΕΠΕΙ ΝΑ ΑΝΑΦΕΡΕΤΑΙ στο documentation! &lt;/P&gt;
&lt;P&gt;Το λιγότερο που μπορούμε να κάνουμε είναι να πάμε στη σελίδα του IDENT_CURRENT στο Books Online, να τραβήξουμε ένα 1 στο feedback για την ποιότητα του documentation (το έκανα) και να στείλουμε και ένα feedback με τις διαμαρτυρίες μας προς την Microsoft (κι αυτό το έκανα). Τουλάχιστον περιλαμβάνεται το link για το feedback. &lt;/P&gt;
&lt;P&gt;Το documentation του SQL Server 2005 δεν με έχει ικανοποιήσει καθόλου. Σε αφήνει ξεκρέμαστο σε πάρα πολλά σημεία, ακριβώς το αντίθετο με το πολύ καλό documentation του 2000 και του 7. Δείχνει υπερβολικά βιαστική δουλειά ...&lt;/P&gt;</description></item><item><title>Απ: SQL Server 2005 και IDENT_CURRENT</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10517.aspx</link><pubDate>Fri, 10 Mar 2006 01:55:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10517</guid><dc:creator>kkara</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10517.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=10517</wfw:commentRss><description>&lt;img src="/cs/emoticons/emotion-55.gif" alt="Idea [I]" /&gt;Εύρηκα, Εύρηκα, και δεν χάρηκα καθόλου...&lt;br&gt;&lt;br&gt;Μετά και από τις προτροπές σας που δήλωναν ότι μάλλον κάτι έκανα στραβά, αποφάσισα να το ψάξω περισσότερο. Έπειτα λοιπόν από αρκετές δοκιμές με ότι μπορείτε να φανταστείτε (ούτε καν μπαίνω στον κόπο να τις αναφέρω), διαπίστωσα που βρισκόταν το πρόβλημα! Φαίνεται ότι στην περίπτωση του SQL Server 2005 δεν είχε ο χρήστης αρκετά permissions για να εκτελέσει την μέθοδο IDENT_CURRENT, ενώ με τα ίδια ακριβώς δικαιώματα στον SQL Server 2000 δεν υπήρχε κανένα πρόβλημα &lt;img src="/cs/emoticons/emotion-3.gif" alt="Surprise [:O]" /&gt;. Μάλιστα η εκτέλεση δεν έβγαζε κάποιο μηνυματάκι βρε αδερφέ, απλά επέστρεφε NULL. Να σημειώσω ότι για λόγους security είχα αφήσει μόνο δικαιώματα "Execute" για τον χρήστη που χρησιμοποιούσα για συγκεκριμένες stored procedure. Δεν χρειάζεται βέβαια να πω ότι το SCOPE_IDENTITY δεν τραβάει τέτοια κολλήματα και γι' αυτό και με παραπλάνησε...&lt;br&gt;&lt;br&gt;Επιβεβαίωσα λοιπόν την αρχική μου υπόνοια ότι όντως πέτυχα σε ένα σημείο στο οποίο συμπεριφέρεται διαφορετικά ο SQL Server 2005 από τον 2000. Μετά από λίγο Google-σμα (από το ρήμα Google-ίζω &lt;img src="/cs/emoticons/emotion-1.gif" alt="Smile [:)]" /&gt;) πέτυχα και αυτό το &lt;a href="http://209.34.241.68/wardpond/archive/2006/03/01/420992.aspx"&gt;blog&lt;/a&gt;. Τουλάχιστον δεν θα μείνω με την απορία. Πάντως δεν είναι και πολύ ευχάριστο το γεγονός της αλλαγής συμπεριφοράς (σε οτιδήποτε κι αν είναι αυτή)...&lt;br&gt;</description></item><item><title>Απ: SQL Server 2005 και IDENT_CURRENT</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10490.aspx</link><pubDate>Thu, 09 Mar 2006 08:04:58 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10490</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10490.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=10490</wfw:commentRss><description>Δοκίμασα τον κώδικα σου και δουλεύει κανονικά σε SQL Server 2005. Κάτι άλλο θα φταίει και όχι η IDENT_CURRENT. Η συμπεριφορά της IDENT_CURRENT δεν έχει αλλάξει στον 2005, ούτε φυσικά ο τρόπος με τον οποίο επιστρέφονται οι παράμετροι. &lt;br&gt;&lt;br&gt;Έχε υπόψη ότι η IDENT_CURRENT επιστρέφει NULL αν δώσεις ανύπαρκτο όνομα πίνακα. Μήπως συμβαίνει κάτι τέτοιο?&lt;br&gt;&lt;br&gt;Επίσης, μπορεί το script της βάσης να έχει πρόβλημα. Ένας εύκολος τρόπος να κάνεις migrate μια βάση από 2000 σε 2005 είναι να κάνεις backup από τον 2000 και restore στον 2005. Η νέα βάση που θα δημιουργηθεί θα τρέχει σε compatibility level 8 (2000). Δοκίμασε την έτσι και σε level 9 μήπως υπάρχει διαφορά. &lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: SQL Server 2005 και IDENT_CURRENT</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10473.aspx</link><pubDate>Wed, 08 Mar 2006 21:38:33 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10473</guid><dc:creator>kkara</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10473.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=10473</wfw:commentRss><description>Ο κώδικας που χρησιμοποιώ είναι νομίζω straightforward : &lt;br&gt;&lt;br&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;SqlCommand cmd &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; SqlCommand();&lt;br /&gt;cmd.CommandType &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; CommandType.StoredProcedure;&lt;br /&gt;cmd.CommandText=&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"[insertTestTable]"&lt;/span&gt;;&lt;br /&gt;cmd.Parameters.Add(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; System.Data.SqlClient.SqlParameter(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"@ID"&lt;/span&gt;, System.Data.SqlDbType.BigInt, 8, System.Data.ParameterDirection.Output, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;false&lt;/span&gt;, ((System.Byte)(0)), ((System.Byte)(0)), &lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;""&lt;/span&gt;, System.Data.DataRowVersion.Current, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;null&lt;/span&gt;));&lt;br /&gt;cmd.Parameters.Add(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; System.Data.SqlClient.SqlParameter(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"@Value1"&lt;/span&gt;, System.Data.SqlDbType.NVarChar, 100));&lt;br /&gt;cmd.Parameters.Add(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; System.Data.SqlClient.SqlParameter(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"@Value2"&lt;/span&gt;, System.Data.SqlDbType.NVarChar, 100));&lt;br /&gt;cmd.Parameters[&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"@Value1"&lt;/span&gt;].Value &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"testABCD"&lt;/span&gt;;&lt;br /&gt;cmd.Parameters[&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"@Value2"&lt;/span&gt;].Value &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"test"&lt;/span&gt;;&lt;br /&gt;SqlConnection sqlconn &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; SqlConnection(System.Configuration.ConfigurationSettings.AppSettings.Get(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"DataBase.ConnectionString"&lt;/span&gt;));&lt;br /&gt;sqlconn.Open();&lt;br /&gt;cmd.Connection &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; sqlconn;&lt;br /&gt;cmd.ExecuteNonQuery();&lt;br /&gt;sqlconn.Close();&lt;br /&gt;Console.Write(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"\tID : "&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt; cmd.Parameters[&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"@ID"&lt;/span&gt;].Value.ToString());&lt;/span&gt;&lt;br&gt;&lt;br&gt;Να σημειώσω ότι απλά αλλάζοντας την τιμή του Connection String από ένα instance με 2000 σε ένα instance με 2005 δεν βλέπω πλέον το επιθυμητό αποτέλεσμα. Όσον αφορά το SCOPE_IDENTITY, γνωρίζω ότι είναι πιο σωστή η χρήση του, αλλά δεν είναι αυτό που με απασχολεί εν προκειμένω, αλλά η διαφορά στην συμπεριφορά μεταξύ των SQL Server 2000 και SQL Server 2005...&lt;br&gt;</description></item><item><title>Απ: SQL Server 2005 και IDENT_CURRENT</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10472.aspx</link><pubDate>Wed, 08 Mar 2006 20:57:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10472</guid><dc:creator>raPhaeL</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10472.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=10472</wfw:commentRss><description>Δεν κάνεις καλύτερα Post το κομμάτι του κώδικα που εκτελείς την&amp;nbsp;
SP γιατί σε μένα λειτουργεί. Μήπως έχεις trigger στο table;&amp;nbsp;

&lt;p class="MsoNormal"&gt;Άσχετα με αυτό το σωστό είναι σίγουρα το &lt;span style=""&gt;SCOPE&lt;/span&gt;_&lt;span style=""&gt;IDENTITY&lt;/span&gt;. Δες και
αυτό το post για το Identity :&lt;br&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="/cs/forums/8889/ShowPost.aspx"&gt;http://www.dotnetzone.gr/cs/forums/8889/ShowPost.aspx&lt;/a&gt;&lt;/p&gt;</description></item><item><title>SQL Server 2005 και IDENT_CURRENT</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10457.aspx</link><pubDate>Wed, 08 Mar 2006 19:17:31 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10457</guid><dc:creator>kkara</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10457.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=10457</wfw:commentRss><description>Εδώ και κάποιους μήνες αναπτύσσω μια εφαρμογή σε ASP.NET (1.1) και SQL Server 2000. Όλα καλά και ωραία, όμως λόγω κάποιων διαδικαστικών θεμάτων αναγκάζομαι να κάνω switch σε SQL Server 2005. Σύμφωνα με ότι διάβασα, δεν θα έπρεπε να έχω κανένα πρόβλημα, απλά να μεταφέρω τη βάση και τσουυυπ... να παίξει. Όταν λέω μεταφορά βάσης, εννοώ παραγωγή του SQL script που δημιουργεί τη βάση στον SQL Server 2000 και μετά εκτέλεσή του στον SQL Server 2005. Αμ δε... Άρχισαν να χτυπάνε κάποια σφάλματα και άρχισα και εγώ να ψάχνω τι συμβαίνει.&lt;br&gt;&lt;br&gt;Να σημειώσω ότι όλη η επικοινωνία προς τη Βάση γίνεται μέσω stored procedures και ADO.NET, χρησιμοποιώντας το namespace &lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;System.Data.SqlClient&lt;/span&gt;. Μετά από αρκετό ψάξιμο λοιπόν, διαπίστωσα ότι το πρόβλημα υπήρχε σε εκείνες τις sp στις οποίες έκανα insert εγγραφής και επέστρεφα με OUTPUT παράμετρο την τιμή μιας IDENTITY στήλης. Δίνω ένα παράδειγμα μιας sp : &lt;br&gt;&lt;br&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;CREATE&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;PROCEDURE&lt;/span&gt; [insertTestTable]&lt;br /&gt;    (@ID     [&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;bigint&lt;/span&gt;] &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;OUTPUT&lt;/span&gt;,&lt;br /&gt;     @Value1     [&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;nvarchar&lt;/span&gt;](100),&lt;br /&gt;     @Value2     [&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;nvarchar&lt;/span&gt;](100))&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;INSERT&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;INTO&lt;/span&gt; [TestTable] ([Col1], [Col2]) &lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;VALUES&lt;/span&gt; (@Value1, @Value2)&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;SET&lt;/span&gt; @ID = &lt;span style="color: Fuchsia;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;IDENT_CURRENT&lt;/span&gt;(&lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;'TestTable'&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;br&gt;Προφανώς στο παραπάνω, η στήλη ID είναι IDENTITY και γι' αυτό επιστρέφω την τιμή αφού γίνει το insert. Εκτελώντας αυτή την sp με το χέρι (π.χ. Query Analyzer) έπαιρνα κανονικά πίσω την τιμή (και στα δύο DBMS). Εκτελώντας την όμως από κώδικα C# η SqlParameter που είχα ορίσει στο SqlCommand δεν λάμβανε με τίποτα τιμή όταν εκτελούσα την sp σε SQL Server 2005, ενώ σε SQL Server 2000 έπαιζε με τη μία. Εντυπωσιακό;;;&lt;br&gt;&lt;br&gt;Το workaround είναι ότι αντικατέστησα όλα τα IDENT_CURRENT με SCOPE_IDENTITY. Σε αυτή την περίπτωση έπαιξε και στα δύο DBMS. Παρότι γνωρίζω ότι είναι καλύτερο ως πρακτική να χρησιμοποιείται το SCOPE_IDENTITY, αυτό δεν με καθησυχάζει καθόλου. Κι αν υπάρχει και κάτι ακόμα που δεν λειτουργεί το ίδιο μεταξύ SQL Server 2000 και 2005; Πως μπορώ να το ξέρω;&lt;br&gt;&lt;br&gt;Ομολογώ ότι λόγω πίεσης δεν είχα όσο χρόνο θα ήθελα για να ασχοληθώ και
να ψάξω περαιτέρω τι συμβαίνει, αλλά είναι κάπως ανησυχητικό το συμβάν. Έχει πετύχει κάποιος κάτι αντίστοιχο; Έψαξα για κάποιο άρθρο που να εξηγεί αυτή τη συμπεριφορά αλλά δεν έπεσα πάνω σε κάτι.&lt;br&gt;</description></item></channel></rss>