Είναι ένα σύστημα ελέγχου εκδόσεων για αλλαγές δομή της βάσης δεδομένων εκεί;




Μου συμβαίνει συχνά να αντιμετωπίσετε το ακόλουθο πρόβλημα.


Δουλεύω σε ορισμένες αλλαγές σε ένα έργο που απαιτεί νέες πίνακες ή στήλες της βάσης δεδομένων. Κάνω τις τροποποιήσεις της βάσης δεδομένων και να συνεχίσει το έργο μου. Συνήθως, θυμάμαι να γράψετε τις αλλαγές έτσι ώστε να μπορούν να αναπαραχθούν στο live σύστημα. Ωστόσο, δεν είναι πάντα θυμάμαι τι έχω αλλάξει και δεν θυμάστε πάντα να το γράψετε.


Έτσι, κάνω μια ώθηση στο live σύστημα και να πάρει μια μεγάλη, προφανές σφάλμα ότι δεν υπάρχει `NewColumnX`, ugh.


Ανεξάρτητα από το γεγονός ότι αυτό δεν μπορεί να είναι η καλύτερη πρακτική για την κατάσταση αυτή, είναι ένα σύστημα ελέγχου εκδόσεων για τις βάσεις δεδομένων εκεί; Δεν με νοιάζει για τη συγκεκριμένη τεχνολογία βάσης δεδομένων. Απλά θέλω να ξέρω αν υπάρχει. Αν συμβαίνει να συνεργαστεί με το MS SQL Server, τότε μεγάλη.
Στο Ruby on Rails, υπάρχει μια έννοια της [μετανάστευσης](http://wiki.rubyonrails.org/rails/pages/UnderstandingMigrations) - ένα γρήγορο σενάριο για να αλλάξει τη βάση δεδομένων.


Μπορείτε να δημιουργήσετε ένα αρχείο μετανάστευση, η οποία έχει τους κανόνες για να αυξηθεί η έκδοση db (όπως η προσθήκη μιας στήλης) και τους κανόνες για να υποβαθμίσει την έκδοση (όπως η αφαίρεση μιας στήλης). Κάθε μετανάστευση είναι αριθμημένο, και ένας πίνακας παρακολουθεί την τρέχουσα έκδοση db σας.


Για να *μεταναστεύσουν μέχρι* , μπορείτε να εκτελέσετε μια εντολή που ονομάζεται «db: μεταναστεύσουν», η οποία εξετάζει την έκδοση σας και εφαρμόζει τις απαραίτητες δέσμες ενεργειών. Μπορείτε να μεταναστεύουν προς τα κάτω με τον ίδιο τρόπο.


Οι ίδιοι σενάρια μετανάστευσης διατηρούνται σε ένα σύστημα ελέγχου εκδόσεων - κάθε φορά που αλλάζετε τη βάση δεδομένων που ελέγχει σε ένα νέο σενάριο, και κάθε προγραμματιστής μπορεί να εφαρμοστεί για να φέρει τις τοπικές db τους στην τελευταία έκδοση.
Συχνά αυτό επιτυγχάνεται με τη χρήση [«Driven δεδομένων Συνδρομές»](https://msdn.microsoft.com/en-us/library/ms169673.aspx) , αλλά αυτή η λειτουργία είναι διαθέσιμη μόνο σε ορισμένες εκδόσεις του SQL: Enterprise και Business Intelligence, αλλά όχι στο πρότυπο.


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


Οι λύσεις που έχω δει περιλαμβάνουν: Δημιουργία της εγγραφής και στη συνέχεια απενεργοποίηση ή επιτρέπουν την εργασία SQL που στέλνει τη συνδρομή (που προσδιορίζονται από GUID.)


Δημιουργήστε ένα .exe .NET περιτύλιγμα για να χειριστεί την αποστολή του email. Μπορεί να εκτελέσετε το ερώτημα πρώτα να δούμε πόσα επέστρεψε σειρές, και στη συνέχεια, αν χρειαστεί, να δημιουργήσει την έκθεση και να συμπεριληφθεί σε ένα email. Από τα περαιτέρω σχόλια που έγιναν από τον συγγραφέα, που ψάχνουν για ένα Node.js ORM που λειτουργεί με δύο οδηγούς MySQL και Oracle.


Εκεί δεν φαίνεται να είναι πολλά ΝΤΥΠΑ που ταιριάζει η περιγραφή και είναι επίσης υποστηρίζονται (προειδοποίηση - βασίζονται αποκλειστικά σε λίγες αναζητήσεις του Google).


Υπάρχει μία διαπίστωσα ότι ταιριάζει με την περιγραφή αν και ακόμα φαίνεται να υποστηρίζεται ενεργά και ότι είναι knex (βλ <https://knexjs.org> ). Αυτή είναι η γνώμη μου, αλλά? όπως ακριβώς και οι τάξεις περίπτωση δεν, θα ήθελα να εφαρμόσουν μια `copy`μέθοδο του είδους στην τάξη για να καταστεί δυνατή η τροποποίηση, διατηρώντας παράλληλα το αμετάβλητο, αλλά υπάρχει ορισμένες περιπτώσεις που δεν μπορώ να βοηθήσω να το μεταβλητό? Για παράδειγμα, όταν κάτι αναμένεται να γίνει η λειτουργία αντιγραφής είναι πολύ μεγάλη και αργή για την κατηγορία? όπως όταν η τάξη έχει τόσα πολλά συχνά τροποποιημένο μέλη. Και μην ανησυχείτε για χιλιάδες περιπτώσεις που επιπλέουν γύρω στη μνήμη, επειδή είναι αυτόματα GC'ed, οπότε το πιο πραγματικό πρόβλημα είναι ο χρόνος κόστος της αντιγραφής περιπτώσεις της κλάσης. Παρακαλώ πείτε μου εάν η γνώμη μου είναι κάπως λάθος :) Ενώ μόδας, η λέξη-κλειδί κόλπο αναθεώρηση ενημερώνει μόνο το αρχείο όταν έχει αλλάξει σε αυτή την αναθεώρηση - αν δεν αλλάξει το αρχείο, τότε θα συνεχίσει να αντικατοπτρίζει την παλιά αναθεώρηση.


Αν θέλετε το λογισμικό να αντανακλά πάντα το συνολικό αριθμό αναθεώρησης, τότε θα πρέπει να σκαλίζω το [σχετικό SVN καταχωρήσεις αρχείο](http://svnbook.red-bean.com/en/1.1/ch08s03.html) και αποσυμπιέστε το, το οποίο δεν είναι πάρα πολύ δύσκολο (αυτό είναι ένα αρχείο XML).


Wikipedia το κάνει αυτό στη [σελίδα τους εκδοχή](https://en.wikipedia.org/wiki/Special:Version) για να δείξει την αναθεώρηση του λογισμικού που τρέχει ζωντανά? [ο κώδικας είναι εδώ](https://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/includes/specials/SpecialVersion.php) - αναζητήστε το **getSvnRevision ()** μέθοδο. Έκανα τα εξής:


Αποθηκεύεται αυτόματα στη βάση δεδομένων κάθε φορά που κάτι νέο ήρθε.


Στη συνέχεια έτρεξε ένα php βρόχο που κάθε λίγα λεπτά ελέγχονται για να διαπιστωθεί αν υπάρχει κάτι νέο στη βάση δεδομένων που ταιριάζει με τις παραμέτρους του νέου αυτού συμβάντος (συμπεριλαμβανομένων ότι happenned εντός του χρονικού πλαισίου των τελευταίων λεπτών). Θα χρησιμοποιηθεί `flush();`και στη συνέχεια `sleep(120);`στο βρόχο για να πάρει το βρόχο για να συνεχίσει να τρέχει κάθε λίγα λεπτά, έως ότου η νέα info ήρθε στην οποία περίπτωση θα `break();`ή `die();`. από όσο γνωρίζω (με τα windows γενικά δεν το έχω) υποστήριξη για nfs υπάρχει μόνο στις επαγγελματικές εκδόσεις των windows 10. αλλά δεν νομίζω να υπάρχει κάποιο όφελος σε ταχύτητα η αξιοπιστία, ενώ το αντίθετο δεν θα με εξέπληττε.

[εικόνα]

[how to mount an nfs share using a windows 10 machi…](https://graspingtech.com/mount-nfs-share-windows-10/) καλό είναι να ξέρουμε και λιγάκι τι κάνουμε. το αρχείο /var/lib/pacman/db.lck υπάρχει ακριβώς για να κλειδώνει την βάση να μην γίνει γίνουν αλλαγές από δυο μεριές ταυτόχρονα. υπάρχει δηλαδή για ασφάλεια όταν ενημερώνουμε το σύστημα. μπορεί κάτι να στραβώσει και να ξεμείνει εκεί οπότε η λύση είναι πρ… Συνήθως δεχόμαστε είτε "have to" είτε "must". Στείλτε μας, παρακαλώ, ένα συγκεκριμένο παράδειγμα που μπορούμε να ελέγξουμε για λάθοι. Θα χρησιμοποιηθεί για να πάρει αυτό - νομίζω ότι είναι ένα bug με το παράθυρο εντοπισμού σφαλμάτων «Autos»:


[http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/eabc58b1-51b2-49ce-b710-15e2bf7e7516/](https://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/eabc58b1-51b2-49ce-b710-15e2bf7e7516/) Όχι, δεν κάνει καμία διαφορά.


Προσωπικά προτιμώ το στυλ που σας δείχνουν στο Q3, μερικοί από τους συναδέλφους μου προτιμούν το στυλ στο Q1. Δεν ξέρω κανέναν που θα εξετάσει ποτέ ούτε από αυτούς να είναι *λάθος* .


Η Optimiser ερώτημα μετατρέπει το ερώτημα μέσα προς τα έξω σε κάτι εντελώς διαφορετικό, οπότε το κατηγόρημα δεν υπάρχει καν σαν μια απλή σύγκριση πια, όταν έχει κάνει με αυτό. Συνήθως πρόκειται για μια αναζήτηση σε ένα ευρετήριο ή έναν πίνακα, και όπως αυτό μπορεί να γίνει μόνο προς μία κατεύθυνση, πως το κατηγόρημα γράφτηκε δεν κάνει καμία διαφορά.


Έλεγξα (SQL Server 2005) στο σχέδιο εκτέλεσης των δύο ερωτήματα με τα τελούμενα κατηγόρημα με διαφορετική σειρά, και όπως αναμένεται να είναι πανομοιότυπα.