Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

Îåêßíçóå áðü ôï ìÝëïò dtakis. Τελευταία δημοσίευση από το μέλος Mitsaras στις 25-10-2006, 10:47. Υπάρχουν 12 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-10-2006, 13:50 19096

    Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Σε φόρμα που χρησιμοποιώ τον FCK Editor μετά από μία Αποθήκευση στη βάση πήρα πίσω το εξής exception:

    System.Data.SqlClient.SqlException:
    Cannot create a row of size 8871 which is greater than the allowable maximum of 8060.
    The statement has been terminated. at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at test

    Πως λύνουμε αυτό το πρόβλημα μεγέθους; Μήπως πρέπει να αλλάξω τους τύπους τον πεδίων που γράφεται το κείμενο από Varchar 8000 σε κάτι άλλο;

    Τι λέτε;

  •  24-10-2006, 14:10 19098 σε απάντηση της 19096

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Θα πρέπει να το αλλάξεις σε ntext ή text. Η διαφορά των δύο, είναι ότι το πρώτο είναι Unicode
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  24-10-2006, 14:18 19099 σε απάντηση της 19098

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Μάλλον σε text, (έκανα back up για να κάνω τη δοκιμή) αλλά λες να χαθεί κάτι από τα προηγούμενα δεδομένα;

    Εγώ πιστεύω όχι μιας και θα πάει από τύπο με λιγότερες θέσεις σε τύπο με περισσότερη χωρητικότητα...

    Θα δούμε μετά το πείραμα!

  •  24-10-2006, 14:18 19100 σε απάντηση της 19098

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Πρόσεχε γιατί το text kai ntext είναι ιδιότροπα, επειδή είναι ουσιαστικά refferences για binary data.

    Δες και εδώ

    http://msdn2.microsoft.com/en-us/library/ms175547.aspx


    Simple Photography
  •  24-10-2006, 14:24 19102 σε απάντηση της 19100

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Σαν να μην παίζει το link που έστειλες! Τι εννοείς; Μόλις έκανα την μετατροπή και αυτή τη φορά έπαιξε...

  •  24-10-2006, 14:31 19104 σε απάντηση της 19102

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Δεν είπες σε τι έκδοση SQL Server παίζεις. Στον SQL Server 2005 έχεις το varchar(max) και nvarchar(max).  Δες εδώ: http://www.dotnetzone.gr/cs/forums/17839/ShowPost.aspx
    Vir prudens non contra ventum mingit
  •  24-10-2006, 15:11 19110 σε απάντηση της 19104

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Σωστά ... έχω SQL 2000, έκανα τη μετατροπή σε text και δεν έχω πρόβλημα...

  •  24-10-2006, 15:41 19114 σε απάντηση της 19110

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Πρόσεξε όμως γιατί σε text/ntext πεδία δεν μπορείς να έχεις index (αν και index σε μεγάλα πεδία δεν είναι efficient έτσι κι αλλιώς). Επίσης, όταν κάνεις SELECT και συμπεριλαμβάνεις και το text πεδίο, έχεις performance hint, όπερ σημαίνει, όσες περισσότερες εγγραφές διαβάζεις τόσο πιο αργό θα είναι το query. Ένα τυπικό trick, είναι να προσθέσεις ένα summary πεδίο που θα έχει μια σύντομη περιγραφή του text/ntext κειμένου ή τους πρώτους 100/200/300 χαρακτήρες ώστε να μπορείς να το συμπεριλάβεις σε μαζικά SELECT και όταν δείχνεις τα details της εγγραφής να δείχνεις το text/ntext πεδίο.


    Vir prudens non contra ventum mingit
  •  24-10-2006, 17:00 19124 σε απάντηση της 19096

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Σωστά δεν μπορείς να έχεις index κανονικούς αλλά μπορείς να έχει full text index και να χρησιμοποιήσεις την freetext για να πάρεις δεδομένα
    Antonios Chatzipavlis

  •  25-10-2006, 00:04 19150 σε απάντηση της 19096

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Γιατί varchar και text? Θα έχεις πρόβλημα με τα collation και τα codepages. Με nvarchar και ntext, δεν πρόκειται να ασχοληθείς ποτέ με το τί locale ή τί codepage χρησιμοποιεί ο server και τί ο client.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  25-10-2006, 09:51 19158 σε απάντηση της 19096

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Όντως, το nvarchar & ntext θα έπρεπε να προτιμάται. Φυσικά, για να χρησιμοποιήσεις nvarchar & ntext, θα πρέπει να έχεις υπ' όψιν σου ορισμένα πράγματα:

    1) Αφ' ενός, τα δεδομένα σου απαιτούν μέχρι και διπλάσια χωρητικότητα στον server, καθ' ότι είναι 2-byte unicode πλέον

    2) Αφ' ετέρου, αν τυχόν επικοινωνείς με τη βάση χρησιμοποιώντας queries καθαρού κειμενου, και όχι stored procedures ή parameterized queries, θα πρέπει να χρησιμοποιείς ένα κεφαλαίο λατινικό N, πριν από τα εισαγωγικά κάθε αλφαριθμητικής τιμής που εισάγεις, πχ:

    INSERT INTO Table (field) VALUES (N'τιμή')

    3) Δε γνωρίζω τι γίνεται με την μετατροπή των ήδη υπάρχοντων πεδίων, και μπορεί οι αλλαγές που πρέπει να κάνεις στο DAL σου να είναι πολύ μεγάλες.
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  25-10-2006, 10:14 19159 σε απάντηση της 19158

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Τα θέματα που αναφέρεις νομίζω ότι έχουν απλά ακαδημαϊκό ενδιαφέρον. Όσον αφορά το χώρο, από αυτόν έχουμε σίγουρα μπόλικο. Εξάλλου και όλα τα αρχεία κειμένου στα συστήματα Windows σε Unicode αποθηκεύονται. Το N το βάζουμε πάντα, και μετατροπές στον κώδικα δεν χρειάζονται. Άσε που και τα δυναμικά queries μπορείς να τα κάνεις parameterized και να ξεφορτωθείς και αυτή την περίπτωση.

    Από την άλλη, θυμάμαι ένα γνωστό που μου έλεγε ότι ολόκληρη αλυσίδα σουπερ-μάρκετ, χρησιμοποιούσε για τη βάση της ένα σκληρό ....

    70

    70 MB.

    Τους φαινόταν ακριβό να αγοράσουν μεγαλύτερο. Εντάξει, αυτοί θα έχουν πρόβλημα, αλλά αμφιβάλλω αν ο χώρος που πιάνει η βάση είναι το σημαντικότερο τους πρόβλημα!
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  25-10-2006, 10:47 19162 σε απάντηση της 19096

    Απ: Μετατροπή Varchar 8000 σε κάτι μεγαλύτερο (τύπο πεδίου);

    Παναγιώτη, κι εγώ με nvarchar/ntext δουλεύω μόνο, και για επικοινωνία με τη βάση, μέσω parameterized queries & stored procedures.

    Τα παραπάνω, επειδή δεν ξέρω πως ακριβώς δουλεύει ο φίλος (μεγάλη/μικρή βάση, dynamic/parameterized/stored procedures?), τα αναφέρω για να προλάβω ίσως πιθανές ερωτήσεις που μπορεί να έχει.
    Μην αφήνετε τα media να σας "ταΐζουν"!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems