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

 

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

VB.NET 2010 και SQL

Îåêßíçóå áðü ôï ìÝëïò AlKiS. Τελευταία δημοσίευση από το μέλος bull στις 28-05-2012, 22:56. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  27-05-2012, 17:25 70401

    VB.NET 2010 και SQL

    Καλησπέρα,

    Καθώς τελείωσα και τα 119 samples από τα LINQ Query Samples ήρθε η σειρά του "LINQ to SQL Samples".


    Το θέμα είναι ότι δεν ξέρω από SQL και θέλω να μου απαντήσετε μερικές ερωτήσεις..

    1) Αρχικά, τα δεδομένα που είναι μεσα σε έναν SQL Server αποθηκεύονται στη μορφή .MDF? Αν ναί, που είναι αυτό το αρχείο (για MySQL και για Microsoft SQL)

    Με μπερδεύει πολύ η SQL... το Access είναι απόλυτα κατανοητό.. υπάρχει ένα αρχείο .mdb ή accdb. ανάλογα με την έκδοση, και μέσα εκεί είναι τα πάντα. Αν το πάρεις και το πας σε άλλο υπολογιστή, μπορείς πανεύκολα να το ανοίξεις και να δεις τι έχει μέσα με το "open file" της Access.

    2) Υπάρχει αυτή η δυνατότητα στην SQL??

    εκεί μπερδεύονται account names, ports....

    3) Όσον αφορά στο τι θα γράφω μέσα στην Visual Basic για να παίρνει και να γράφει στοιχεία στο SQL Server, δεν υπάρχει καμία διαφορά μεταξύ MySQL και Microsoft SQL, σωστά? (Δεν εννοώ το Provider και πως θα πραγματοποιηθεί το connection στην αρχή. Εννοώ μετά που θα γράφω τι να παίρνει και τι να βάζει μέσα)

    4) Έχω μια βάση δεδομένων access που έχει μέσα κατηγορίες προϊόντων, προϊόντα και τις πληροφορίες αυτών (τιμή και τα λοιπά). Και έχω γράψει ένα πρόγραμμα με το οποίο μπορώ να συνδέομαι στην βάση δεδομένων access και προσθέτω νέα προϊόντα, να βλέπω τι προϊόντα υπάρχουν και τα λοιπά. Αν αλλάξω τη βάση δεδομένων σε SQL, θα μπορώ άμα πάρω το πρόγραμμα και το βάλω σε άλλο υπολογιστή να βλέπει τη βάση δεδομένων? (Με άλλα λόγια, μπορώ να κουβαλήσω μια βάση δεδομένων SQL, να τη βάλω σε ένα installer και να τη διαβάζει το πρόγραμμα? Αν ναι, τι κάνω? απλώς παίρνω το MDF αρχείο και στον PROVIDER του λέω κάπως να ανοίξει το αρχείο αυτό?)


  •  28-05-2012, 19:37 70411 σε απάντηση της 70401

    Απ: VB.NET 2010 και SQL

    Αν και όπως τίθεται θεωρώ ότι η ερώτηση αδικεί την όποια πιθανή ανάγκη για μάθηση, πέραν τούτου μπορώ να πω τα εξής:
    1) Μέσα από το SSMS (SQL Server Management Studio) και κάνοντας δεξι-κλικ πάνω στην βάση και επιλέγοντας "files" στο "path" θα βρεις που βρίσκονται τα απαραίτητα για την βάση αρχεία. Δεν είναι μόνο .mdf αλλά και .ldf για κάθε transaction log file της βάσης. Θα πρότεινα να ξεκινήσεις με κάτι βασικό όπως database architecture και μετά να πας να γράψεις εφαρμογή. πχ Files and Filegroups Architecture
    Σχετικά με το αν είναι portable όπως η Access κλπ νομίζω ότι δεν χρειάζεται να μπω σε λεπτομέρειες, παρά μόνο απλά λέγοντας "ΟΧΙ". Επίσης το pseudo-portability/manageability που φαίνεται να έχει η access οφείλεται στο γεγονός οτι το MS Office βρίσκεται σε όλα τα PC με αποτέλεσμα η διαχείριση να φαίνεται "out-of-the-box", πράγμα το οποίο είναι μύθος. Η διαφορά είναι ότι το μεν Jet Dabase Engine (MS Access) δεν είναι service και άρα δεν χρειάζεται ιδιαίτερο installation όπως το αντίστοιχο MSSQL service για να κάνει host μια βάση σε ένα μηχάνημα. "Χοντρά"... ότι είναι το πρόγραμμα msaccess.exe για το .mdb/.accdb είναι και το ssms.exe για τον SQL. *Πολύ χοντρά* όμως...

    2) βλ. 1) (note: τίποτα δεν μπερδεύται και όλα έχουν λόγω ύπαρξης και σχετίζονται με security, scalability κλπ)

    3) Αν και δεν έχω ασχοληθεί με MySQL, αν ο κώδικας σου είναι γραμμένος με τα πρώτυπα ANSI-SQL (SQL) ίσως έχει ελπίδα με την αλλαγή του connection string να παίξει. Επίσης υπάρχουν libraries που το κάνουν αυτό για 'σένα, δηλαδή κάνουν abstract το backend. Στο link αυτό θα βρεις πληροφορίες και για MySQL provider (...about Data Access)

    4) Αυτό που μπορώ να σου πω είναι ότι υπάρχουν installer που μαζί με το setup της εφαρμογής σου κάνουν deploy και την SQL βάση κάνοντας χρήση του Setup and Deployment project που σου δίνει το VS.NET environment. Μπορείς επίσης να δεις αυτό How to deploy SQL Server 2008 Express as a prerequisite with ClickOnce

    Γενικά θα σου πρότεινα να ξεκινήσεις από κάτι πιο βασικό απ'ότι το LINQ που αν και ωραίο "trendy" και "πιασιάρικο" δεν βοηθάει και πολύ αν δεν καταλάβεις βασικά πράγματα για το engine που θες να διαχειριστείς.
    VI
  •  28-05-2012, 20:28 70412 σε απάντηση της 70411

    Απ: VB.NET 2010 και SQL

    ευχαριστώ πολύ για την πλήρη απάντηση που μου έδωσες.

    Από τη στιγμή που δεν υπάρχει portability, ή είναι δυσκολότερο από της access (όπως λες για Deployment παρακάτω), δεν χρειάζεται να ασχοληθώ με SQL προς το παρόν.


    Δεν ξεκίνησα με SQL - με Access ξεκίνησα, και δεν μαθαίνω LINQ επειδή είναι trendy ή πιασάρικη... μαθαίνω γιατί είναι ένα απαραίτητο εργαλείο για να προγραμματίσω αυτά που χρειάζομαι.


    Όπως και νάχει, όταν έχω περίσσιο χρόνο θα δω και την LINQ οπότε το thread αυτό πάει στα Bookmarks.


    Και πάλι ευχαριστώ.


  •  28-05-2012, 20:51 70415 σε απάντηση της 70401

    Απ: VB.NET 2010 και SQL



    1) Βασικά είναι άλλο πράγμα η T-SQL και άλλο πράγμα ο SQL Server. Η T-SQL είναι αν θες η γλώσσα που καταλαβαίνει ο SQL Server. Με την T-SQL ρωτάς-μιλάς στον SQL Server και αυτός εκτελεί τις εντολές αυτές...

    Είναι νομίζω προφανές ότι τα δεδομένα των βάσεων δεδομένων πρέπει κάπου να αποθηκεύονται μόνιμα. Αυτό γίνεται μόνο αν αποθηκευτούν μόνιμα τα δεδομένα σε κάποιο φυσικό αρχείο στο δίσκο. Το αρχείο αυτό έχει την κατάληξη .mdf.

    Μια βάση δεδομένων στον SQL Server έχει/αποτελείται τουλάχιστον από δύο αρχεία/files

    • data file (.mdf)
    • log file (.ldf)
    κάθε data file αποτελείται από Pages και το μέγεθος κάθε σελίδας είναι 8 kbytes.8 pages μας κάνουν ένα extent.

    Σίγουρα πρέπει να κατανοήσεις καλύτερα αυτό που λέμε database architecture. Ένα καταπληκτικό video/παρουσίαση για database architecture έχει κάνει ο Αντώνης ο Χατζηπαυλής εδώ.

    Τα .mdf αρχείο είναι σε εκείνο στο σημείο στον δίσκο που του έχεις πει εσύ να δημιουργηθεί.

    Όσο αφορά MYSQL databases αυτές έχουν άλλου τύπου file extensions και όχι .mdf.Μην το μπερδεύεις.

    2) Μπορείς να μεταφέρεις μια βάση σε ένα άλλο υπολογιστή που τρέχει SQL Server μέσω backup/restore , attach/detach , Import/Export wizard


    Φυσικά μεταφέρεις logins & passwords....ο SQL Server σαν RDBMS πρέπει να δίνει μεγάλη έμφαση στο security.

    3) Θα χρησιμοποιήσεις VB.Net/Ado.net κώδικα για να το κάνεις αυτό? Γιατί αν κάνεις το ίδιο με LINQ to SQL εκεί ο κώδικας αλλάζει....


    Αν θέλεις να βρεις μερικά απλά,κατανοητά παραδείγματα για LINQ to SQL σε μικρές ΑSP.Net εφαρμογές δες στο blog μου.

    4) το καλύτερο αν η access έχει πολλά δεδομένα ή θα μεγαλώσει γρήγορα είναι να πας στον SQL Server. Υπάρχουν και free editions του SQL Server, SQL Server Express.

    Επίσης αν έχεις πολλούς χρήστες είναι καλό να πας στον SQL Server.Yπάρχουν tools που κάνουν migrate..δες εδώ


    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  28-05-2012, 21:29 70416 σε απάντηση της 70415

    Απ: VB.NET 2010 και SQL

    Ναι ρε γαμώτο, μιλάμε για πολύ μεγάλες βάσεις δεδομένων τώρα...

    Σκέψου ότι μιλάμε για προιόντα και σε μεγάλα μαγαζιά - βλέπω ότι φεύγουν μέσω όρο 2500 προιόντα την ημέρα.

    αυτό σημαίνει 75000 προιόντα το μήνα (άρα 75000 γραμμές), και αν σκεφτείς ότι θέλουμε και περίπου 20 στήλες μιλάμε για 75Κ*20=1.500.000 ενάμιση εκατομμύριο πεδία το μήνα.

    Αν κρατάει αρχείο για 3-4 μήνες μιλάμε για 300000 γραμμές, ή 6000000 πεδία.


    Το να ανεβάζω τα προιόντα στη βάση δεδομένων δεν πρέπει είναι πρόβλημα - αλλά κάτι μου λέει ότι το να τραβάω τα προιόντα που θέλω από κει και να κάνω πράγματα πάνω σε αυτά (να που κολλάει η LINQ που θέλω να μάθω) θα είναι πρόβλημα.


    Πιστεύω ότι αν αντί να τα ανεβάζω σε Access DB τα ανεβάζω σε SQL τότε το πρόγραμμα θα δουλεύει καλύτερα. Και το καλό είναι ότι δεν χρειάζεται να μάθω τέλεια SQL για να μπορώ απλώς να αποθηκεύω και να τραβάω σειρές από αυτή.

    Αλλά είχα φορτώσει παλιά κάποιες SQL (τη δωρεάν της Microsoft και τη MySQL), και είχα βάλει κωδικούς που ξέχασα.. και τώρα γίνεται χαμός.

    Έγραψα την MySQL και μου βγάζει προβλήματα.. (κρίμα και ήταν αρκετά εύκολο να κάνεις βάση δεδομένων εκεί. πήγαινες στο πρώτο splitcontainer, πατούσες new, και μετά έκανες tables και έβαζες τι θες μέσα. Και ένα μωρό θα μπορούσε να το κάνει. Αλλά δε μου δουλεύει πια)

    Κατέβασα και την Microsoft SQL 2012 Developer Edition (δωρεάν επειδή είμαι φοιτητής) αλλά γίνεται της τρελής εκεί μέσα! αντί να έχει ένα απλό New και να γράφεις όπως στο MySQL, Στο Menu File έχει Connect Object Explorer, Και στο New->Project μου έχει "SQL Server Scripts, Analysis Services Scripts, και Blank Solution" τα οποία δεν μου λένε τίποτα. 

    Άσε που τα πάτησα και τα 3 και δεν είδα τίποτα.

    Χαώδες μου φαίνεται... στο Object Exporer έχει "Databases, Security, Server Objects, Replication, Management, οπότε πατάω Databases ο άνθρωπος... και βλέπω μέσα System Databases, DBVAT, DBCATAST,DBCATSERVICE, DBCATUSER, όπου το καθένα έχει απο 50 άλλα μέσα..

    Άντε βρε πως δημιουργείς ένα tables να βάλεις μερικές στήλες :S


    In a nutshell, με βλέπω να μένω σε Access προς το παρόν.. αν και το πλήθος των δεδομένων που θέλω να βάλω μέσα είναι απαγορευτικό. Παρόλαυτα όμως, κατέβασα το video που μου είπες να το δω αύριο κίολλας, και θα μπω στο blog σου να κοιτάξω καμία ASP.net εφαρμογή.


    Thanks για τις εξηγήσεις και τη βοήθειά σου :)


  •  28-05-2012, 22:56 70418 σε απάντηση της 70416

    Απ: VB.NET 2010 και SQL

    Προσπαθω να καταλαβω την εφαρμογη που θες να φτιαξεις και αν αυτη θα ειναι για παραγωγικη βαση ή απλα για εργασια στο πανεπιστημιο (μιας και ανεφερες οτι εισαι φοιτητης).
    Οπως και να 'χει, τα πεδια δεν καταλαβαινω γιατι τα πολλαπλασιαζεις με το πληθος των εγγραφων στον πινακα των κινησεων. Υποθετω οτι θα εχεις ενα πινακα με τα ειδη και ενα πινακα με τις κινησεις. Τα λεω απλοϊκα φυσικα, καθως χρειαζεται αναλυση για τον σχεδιασμο των αντικειμενων στην βαση, οτι βαση κι αν ειναι αυτη. Οι πινακες μεγαλωνουν σε μεγεθος λογω των εγγραφων. Το μεγεθος της εγγραφης μπορεις να το υπολογισεις απο πριν αν θες να κανεις υπολογισμο του χωρου που μπορει να χρειαστει η βαση του SQL. Με βαση το record length μπορεις να πολλαπλασιασεις και να καταληξεις στα απαιτουμενα MB που χρειαζεσαι roughly.
    Επισης η καταχωρηση καθως και η αναζητηση εγγραφων σε εναν πινακα εξαρταται απο πολλους παραγοντες, ξεκινωντας απο τους δεικτες (index) που εχεις ενας πινακας. Σε περιπτωση που δεν εχεις κανεναν μπορει η καταχωρηση να ειναι γρηγορη αλλα σε αναζητηση χιλιαδων εγγραφων θα υπαρχει θεμα, και οσο περναει ο χρονος και καταχωρουνται νεες εγγραφες θα χειροτερευει.
    Το να μαθει κανεις "τελεια" κατι ειναι απιαστο απο μονο του. Κι εγω ξερω να οδηγαω αυτοκινητο αλλα αν μου δωσουν Ferrari το πιο πιθανο ειναι να την καρφωσω ή να πηγαινω λες κι εχω παπι...

    Θα σου προτεινα να μεινεις ατην Access αν την γνωριζεις καλα καθως το μεγεθος της νομιζω μπορει να φτασει μεχρι 4GB, και παραλληλα να μελετησεις SQL απο τα blog των πολυ καλων συναδελφων (Antonios Chatzipavlis blog, Nikolaos Kantzelis blog) που εχουν πληθωρα πληροφοριων και θα απαντησουν σε πολλα σου ερωτηματα. Μετα τα 4GB μπορεις να κανεις "upsize" to SQL και με την τοτε γνωση θα νιωθεις πιο σιγουρος.

    Πρεπει να σκεφτεις οτι μια βαση τυπου SQL οσο και να θελουν καποιοι να την παρουσιασουν ως 'set it and forget it' εχει αρκετο administration και σε περιπτωση ζημιας συστηματος ή βασης το recovery μπορει να ειναι απο trivial ως "ωχ παναγια μου που πηγα και 'μπλεξα" ;-)

    Παντως η επενδυση σου σε χρονο για την εκμαθηση του SQL Server ως database engine μονο ζημιογονα δεν θα ειναι.


    VI
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems