βάση δεδομένων εκδόσεων του SQL Server

ψήφοι
288

Θέλω να πάρω βάσεις δεδομένων μου υπό έλεγχο έκδοσης. Υπάρχει κάποιος που έχει κάποια συμβουλή ή συνιστώνται άρθρα για να μου ξεκίνησε;

Θα θέλουν πάντα να έχουν τουλάχιστον κάποια στοιχεία εκεί (όπως alumb αναφέρει: πληκτρολογεί ο χρήστης και διαχειριστές). Θα συχνά θέλουν μια μεγάλη συλλογή των παραγόμενων δεδομένων των δοκιμών για τις μετρήσεις απόδοσης.

Δημοσιεύθηκε 01/08/2008 στις 19:33
πηγή χρήστη
Σε άλλες γλώσσες...                            


29 απαντήσεις

ψήφοι
169

Martin Fowler, έγραψε το αγαπημένο μου άρθρο σχετικά με το θέμα, http://martinfowler.com/articles/evodb.html . Επιλέγω να μην τεθεί σχήμα χωματερές στην υπό έλεγχο έκδοσης, όπως alumb και άλλοι προτείνουν γιατί θέλω έναν εύκολο τρόπο για την αναβάθμιση της βάσης δεδομένων παραγωγής μου.

Για μια διαδικτυακή εφαρμογή όπου θα έχω ένα μόνο παράδειγμα βάση δεδομένων παραγωγής, χρησιμοποιώ δύο τεχνικές:

Σενάρια Αναβάθμιση βάσης δεδομένων

Μια βάση δεδομένων ακολουθίας αναβάθμιση σενάρια τα οποία περιέχουν τις απαραίτητες DDL για να μετακινήσετε το σχήμα από την έκδοση N σε N + 1. (Αυτά πάνε στο σύστημα ελέγχου εκδόσεων σας.) Ένα τραπέζι _version_history_, κάτι σαν

create table VersionHistory (
    Version int primary key,
    UpgradeStart datetime not null,
    UpgradeEnd datetime
    );

παίρνει μια νέα καταχώρηση κάθε φορά που μια αναβάθμιση script τρέχει το οποίο αντιστοιχεί στη νέα έκδοση.

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

Developer Sandbox συγχρονισμού

  1. Ένα σενάριο δημιουργίας αντιγράφων ασφαλείας, απολυμαίνει, και να συρρικνωθεί μια βάση δεδομένων παραγωγής. Εκτελέστε αυτό μετά από κάθε αναβάθμιση στην παραγωγή DB.
  2. Ένα σενάριο για την αποκατάσταση (και το τσίμπημα, αν είναι απαραίτητο) το αντίγραφο ασφαλείας στο σταθμό εργασίας του δημιουργού του. Κάθε προγραμματιστής λειτουργεί αυτό το σενάριο μετά από κάθε αναβάθμιση στην παραγωγή DB.

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

Απαντήθηκε 02/08/2008 στις 18:33
πηγή χρήστη

ψήφοι
42

προϊόντος Red Gate του SQL Συγκρίνετε όχι μόνο σας επιτρέπει να κάνετε τις συγκρίσεις σε επίπεδο αντικειμένου, και να δημιουργήσει σενάρια αλλαγής από αυτό, αλλά σας επιτρέπει επίσης να εξάγετε τα αντικείμενα της βάσης δεδομένων σας σε μια ιεραρχία των φακέλων που διοργανώθηκε από τον τύπο αντικειμένου, με ένα [όνομα αντικειμένου] .sql δημιουργία script ανά αντικείμενο σε αυτούς τους καταλόγους. Η ιεραρχία των αντικειμένων-τύπου είναι σαν αυτό:

\ Λειτουργίες
\ Security
\ Security \ Roles
\ Security \ Σχήματα
\ Security \ Users
\ αποθηκευμένες διαδικασίες
\ Πίνακες

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

Απαντήθηκε 26/08/2008 στις 08:23
πηγή χρήστη

ψήφοι
38

Αυτό είναι ένα από τα «δύσκολα προβλήματα» γύρω από την ανάπτυξη. Απ 'όσο ξέρω δεν υπάρχουν τέλειες λύσεις.

Αν το μόνο που χρειάζεται για να αποθηκεύσετε τη δομή της βάσης δεδομένων και όχι τα δεδομένα που μπορεί να εξάγει τη βάση δεδομένων όπως SQL ερωτήματα. (Στο Enterprise Manager: Κάντε δεξί κλικ στη βάση δεδομένων -> Δημιουργία SQL script Θα ήθελα να συστήσω τη ρύθμιση του «δημιουργήσει ένα αρχείο ανά αντικείμενο» στην καρτέλα επιλογές.) Στη συνέχεια, μπορεί να διαπράξει αυτά τα αρχεία κειμένου σε svn και να κάνουν χρήση των διαφ και καταγραφή λειτουργίες svn του.

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

Αν χρειαστεί να κρατήσει όλα τα δεδομένα, καθώς, ήθελα να συστήσω κρατώντας ένα αντίγραφο ασφαλείας της βάσης δεδομένων και τη χρήση Redgate ( http://www.red-gate.com/ ) προϊόντα για να κάνουμε τις συγκρίσεις. Δεν έρχονται φτηνός, αλλά αξίζει κάθε δεκάρα.

Απαντήθηκε 01/08/2008 στις 20:28
πηγή χρήστη

ψήφοι
37

Κατ 'αρχάς, πρέπει να επιλέξετε το σύστημα ελέγχου έκδοση που είναι κατάλληλο για εσάς:

  • κεντρικό σύστημα Έλεγχος έκδοσης - ένα πρότυπο σύστημα όπου οι χρήστες check out / check-in πριν / μετά εργάζονται σε αρχεία και τα αρχεία που φυλάσσονται σε ένα ενιαίο κεντρικό server

  • Κατανεμημένο σύστημα Έλεγχος έκδοσης - ένα σύστημα όπου ο χώρος αποθήκευσης είναι να κλωνοποιηθεί, και κάθε κλώνος είναι στην πραγματικότητα το πλήρες αντίγραφο ασφαλείας του χώρου αποθήκευσης, οπότε αν τότε κάθε κλωνοποιημένο αποθετήριο μπορεί να χρησιμοποιηθεί οποιαδήποτε συντριβές διακομιστή, για να το επαναφέρετε Μετά την επιλογή του σωστού συστήματος για τις ανάγκες σας , θα πρέπει να εγκαταστήσετε το αποθετήριο που είναι ο πυρήνας του κάθε συστήματος ελέγχου έκδοσης Όλο αυτό εξηγείται στο ακόλουθο άρθρο: http://solutioncenter.apexsql.com/sql-server-source-control-part-i-understanding -source-ελέγχου-βασικά /

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

  • SQL Server Management Studio μέσω του παρόχου MSSCCI,

  • Visual Studio και SQL Server Εργαλεία δεδομένων

  • Ένα εργαλείο 3ο μέρος Ελέγχου ApexSQL Πηγή
Απαντήθηκε 24/06/2015 στις 10:36
πηγή χρήστη

ψήφοι
22

Εδώ στο Red Gate προσφέρουμε ένα εργαλείο, SQL Πηγή Ελέγχου , η οποία χρησιμοποιεί την τεχνολογία Συγκρίνετε SQL για τη σύνδεση της βάσης δεδομένων σας με ένα αποθετήριο TFS ή SVN. Το εργαλείο αυτό ενσωματώνει σε SSMS και σας επιτρέπει να λειτουργήσει όπως θα κάνατε κανονικά, εκτός του ότι επιτρέπει τώρα να δεσμευτούν τα αντικείμενα.

Για μια προσέγγιση μεταναστεύσεις με βάση το (πιο κατάλληλο για αυτοματοποιημένες αναπτύξεις), προσφέρουμε ReadyRoll , η οποία δημιουργεί και διαχειρίζεται ένα σύνολο στοιχειωδών σενάρια ως ένα έργο Visual Studio.

Σε Ελέγχου Πηγή SQL είναι δυνατό να καθορίσετε στατική πίνακες δεδομένων. Αυτά είναι αποθηκευμένα σε έλεγχο πηγή, όπως INSERT ΑΓΝΟΗΣΤΕ δηλώσεις.

Αν μιλάμε για τα δεδομένα δοκιμών, εμείς θα προτείνουμε είτε να παράγουν δεδομένα δοκιμών με ένα εργαλείο ή μέσω μιας δέσμης ενεργειών μετά την ανάπτυξη που θα ορίσετε, ή μπορείτε απλά να επαναφέρετε ένα αντίγραφο ασφαλείας της παραγωγής στο περιβάλλον dev.

Απαντήθηκε 01/07/2010 στις 10:10
πηγή χρήστη

ψήφοι
20

Μπορεί να θέλετε να εξετάσουμε Liquibase ( http://www.liquibase.org/ ). Ακόμα και αν δεν θέλετε να χρησιμοποιήσετε το ίδιο το εργαλείο που χειρίζεται τις έννοιες της διαχείρισης της αλλαγής βάσης δεδομένων ή refactoring αρκετά καλά.

Απαντήθηκε 16/09/2008 στις 19:16
πηγή χρήστη

ψήφοι
17

+1 για τον καθένα που συνιστάται τα εργαλεία Redgate, με μια πρόσθετη σύσταση και προειδοποίηση.

SqlCompare έχει επίσης μια αξιοπρεπώς τεκμηριωμένο API: ώστε να μπορείτε, για παράδειγμα, να γράψει μια εφαρμογή κονσόλας που συγχρονίζει πηγή ελεγχόμενη σενάρια σας φάκελο με μια βάση δεδομένων δοκιμές ολοκλήρωσης CI σε checkin, έτσι ώστε όταν κάποιος ελέγχει σε μια αλλαγή στο σχήμα από το φάκελο scripts τους είναι αυτόματα αναπτυχθεί μαζί με την αλλαγή που ταιριάζουν κώδικα της εφαρμογής. Αυτό βοηθά να κλείσει το χάσμα με τους προγραμματιστές που είναι επιλήσμων για το πολλαπλασιαστικό αλλαγές στην τοπική τους db έως ένα κοινό ανάπτυξης DB (περίπου οι μισοί από εμάς, νομίζω :)).

Ένας περιορισμός είναι ότι με μια δέσμης ενεργειών λύσης ή με άλλο τρόπο, τα εργαλεία Redgate είναι αρκετά ομαλή ώστε να είναι εύκολο να ξεχάσουμε την πραγματικότητα SQL βάση της αφαίρεσης. Εάν μετονομάσετε όλες τις στήλες σε έναν πίνακα, SqlCompare δεν έχει τρόπο να χαρτογραφήσει τις παλιές στήλες με τις νέες στήλες και θα ρίξει όλα τα δεδομένα στον πίνακα. Θα δημιουργήσει τις προειδοποιήσεις, αλλά έχω δει ανθρώπους πατήστε το παρελθόν αυτό. Υπάρχει ένα γενικό σημείο εδώ αξίζει να κάνει, νομίζω, ότι μπορείτε να αυτοματοποιήσετε μόνο DB εκδόσεων και την αναβάθμιση μέχρι στιγμής - οι αφαιρέσεις είναι πολύ διαρροές.

Απαντήθηκε 15/10/2008 στις 10:44
πηγή χρήστη

ψήφοι
14

Με VS 2010, χρησιμοποιήστε το έργο βάσης δεδομένων.

  1. Σενάριο από τη βάση δεδομένων σας
  2. Κάντε αλλαγές σενάρια ή απευθείας στον server db σας
  3. Συγχρονισμός με τη χρήση δεδομένων> Σύγκριση σχημάτων

Κάνει μια τέλεια λύση DB εκδόσεων, και κάνει συγχρονισμό DB είναι ένα αεράκι.

Απαντήθηκε 25/02/2011 στις 21:18
πηγή χρήστη

ψήφοι
14

Χρησιμοποιούμε DBGhost για τη διαχείριση της βάσης δεδομένων SQL μας. Στη συνέχεια, βάζετε τα σενάρια σας για να οικοδομήσουμε μια νέα βάση δεδομένων για τον έλεγχο έκδοσή σας, και θα κατασκευάσει μια νέα βάση δεδομένων, ή να αναβαθμίσετε οποιαδήποτε υπάρχουσα βάση δεδομένων με το σχήμα στον έλεγχο έκδοσης. Με αυτόν τον τρόπο δεν χρειάζεται να ανησυχείτε για τη δημιουργία σεναρίων αλλαγής (αν και μπορείτε ακόμα να το κάνετε αυτό, αν για παράδειγμα θέλετε να αλλάξετε τον τύπο δεδομένων μιας στήλης και πρέπει να μετατρέψετε τα δεδομένα).

Απαντήθηκε 07/08/2008 στις 22:12
πηγή χρήστη

ψήφοι
12

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

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

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

Απαντήθηκε 24/09/2008 στις 07:11
πηγή χρήστη

ψήφοι
11

Θα μπορούσατε επίσης να δούμε μια λύση μεταναστεύσεις. Αυτές σας επιτρέπουν να καθορίσετε σχήμα βάσης δεδομένων σας σε C # κώδικα, και κυλήστε έκδοση της βάσης δεδομένων σας επάνω και προς τα κάτω, χρησιμοποιώντας MSBuild.

Είμαι σήμερα χρησιμοποιούν DbUp , και είναι ήδη λειτουργεί καλά.

Απαντήθηκε 06/08/2008 στις 23:51
πηγή χρήστη

ψήφοι
10

Μπορείτε δεν ανέφερε λεπτομέρειες σχετικά με το περιβάλλον στόχο ή τους περιορισμούς σας, έτσι αυτό μπορεί να μην είναι εντελώς ισχύει ... αλλά αν ψάχνετε για έναν τρόπο για να παρακολουθείτε αποτελεσματικά ένα εξελισσόμενο σχήμα DB και δεν είναι αρνητικές στην ιδέα της χρησιμοποίησης Ruby, μεταναστεύσεις ActiveRecord είναι μέχρι το σοκάκι.

Μεταναστεύσεις καθορίζουν κάποιου προγράμματος μετασχηματισμούς δεδομένων με χρήση DSL Ruby? κάθε μετασχηματισμού μπορεί να εφαρμοστεί ή (συνήθως) επανέρχεται, επιτρέποντάς σας να μεταβείτε σε μια διαφορετική έκδοση της DB σχήμα σας σε κάθε δεδομένη χρονική στιγμή. Το αρχείο καθορισμό αυτών των μετασχηματισμών μπορούν να ελεγχθούν σε έλεγχο έκδοσης όπως και κάθε άλλο κομμάτι του πηγαίου κώδικα.

Επειδή οι μεταναστεύσεις είναι ένα μέρος της ActiveRecord , που συνήθως βρίσκουν χρήση σε πλήρη στοίβα Rails εφαρμογές? Ωστόσο, μπορείτε να χρησιμοποιήσετε ActiveRecord ανεξάρτητα από Rails με ελάχιστη προσπάθεια. Δείτε εδώ για μια πιο λεπτομερή επεξεργασία του χρησιμοποιώντας μεταναστεύσεις AR εκτός των Rails.

Απαντήθηκε 02/08/2008 στις 18:54
πηγή χρήστη

ψήφοι
9

Κάθε βάση δεδομένων θα πρέπει να είναι υπό τον έλεγχο του πηγαίου κώδικα. Αυτό που λείπει είναι ένα εργαλείο για την αυτόματη γραφή όλων των αντικειμένων βάσης δεδομένων - και «δεδομένα διαμόρφωσης» - στο αρχείο, το οποίο στη συνέχεια μπορεί να προστεθεί σε οποιοδήποτε σύστημα ελέγχου πηγή. Εάν χρησιμοποιείτε τον SQL Server, τότε η λύση μου είναι εδώ: http://dbsourcetools.codeplex.com/ . Καλα να περνατε. - Nathan.

Απαντήθηκε 07/07/2009 στις 13:58
πηγή χρήστη

ψήφοι
8

Είναι απλό.

  1. Όταν το έργο βάσης είναι έτοιμος τότε θα πρέπει να δημιουργήσετε πλήρες σενάριο βάσης δεδομένων. Αυτό το σενάριο είναι αποφασισμένη να SVN. Είναι πρώτη έκδοση.

  2. Μετά από αυτό όλοι οι προγραμματιστές δημιουργεί σενάρια αλλαγής (ALTER ..., νέοι πίνακες, sprocs, κλπ).

  3. Όταν χρειάζεστε τρέχουσα έκδοση τότε θα πρέπει να εκτελέσει όλα τα νέα σενάρια αλλαγής.

  4. Όταν η εφαρμογή έχει κυκλοφορήσει στην παραγωγή, στη συνέχεια, μπορείτε να πάτε πίσω στο 1 (αλλά τότε θα είναι διαδοχικές έκδοση του φυσικά).

Nant θα σας βοηθήσει να εκτελέσει τις σενάρια αλλαγής. :)

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

Απαντήθηκε 16/05/2009 στις 12:31
πηγή χρήστη

ψήφοι
7

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

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

IF ISNULL(OBJECT_ID('last_run_sysversions'), 0) <> 0 DROP TABLE last_run_sysversions
CREATE TABLE last_run_sysversions (
    name varchar(128), 
    id int, base_schema_ver int,
    schema_ver int,
    type char(2)
)

Κανονική κατάσταση λειτουργίας: Μπορείτε να πάρετε τα αποτελέσματα από αυτό το SQL, και τη δημιουργία SQL scripts για ακριβώς αυτά που σας ενδιαφέρουν, και τα βάζουμε σε ένα έλεγχο πηγή της επιλογής σας.

IF ISNULL(OBJECT_ID('tempdb.dbo.#tmp'), 0) <> 0 DROP TABLE #tmp
CREATE TABLE #tmp (
    name varchar(128), 
    id int, base_schema_ver int,
    schema_ver int,
    type char(2)
)

SET NOCOUNT ON

-- Insert the values from the end of the last run into #tmp
INSERT IGNORE  #tmp (name, id, base_schema_ver, schema_ver, type) 
SELECT name, id, base_schema_ver, schema_ver, type FROM last_run_sysversions

DELETE last_run_sysversions
INSERT IGNORE  last_run_sysversions (name, id, base_schema_ver, schema_ver, type)
SELECT name, id, base_schema_ver, schema_ver, type FROM sysobjects

-- This next bit lists all differences to scripts.
SET NOCOUNT OFF

--Renamed.
SELECT 'renamed' AS ChangeType, t.name, o.name AS extra_info, 1 AS Priority
FROM sysobjects o INNER JOIN #tmp t ON o.id = t.id
WHERE o.name <> t.name /*COLLATE*/
AND o.type IN ('TR', 'P' ,'U' ,'V')
UNION 

--Changed (using alter)
SELECT 'changed' AS ChangeType, o.name /*COLLATE*/, 
       'altered' AS extra_info, 2 AS Priority
FROM sysobjects o INNER JOIN #tmp t ON o.id = t.id 
WHERE (
   o.base_schema_ver <> t.base_schema_ver
OR o.schema_ver      <> t.schema_ver
)
AND  o.type IN ('TR', 'P' ,'U' ,'V')
AND  o.name NOT IN ( SELECT oi.name 
         FROM sysobjects oi INNER JOIN #tmp ti ON oi.id = ti.id
         WHERE oi.name <> ti.name /*COLLATE*/
         AND oi.type IN ('TR', 'P' ,'U' ,'V')) 
UNION

--Changed (actually dropped and recreated [but not renamed])
SELECT 'changed' AS ChangeType, t.name, 'dropped' AS extra_info, 2 AS Priority
FROM #tmp t
WHERE    t.name IN ( SELECT ti.name /*COLLATE*/ FROM #tmp ti
         WHERE NOT EXISTS (SELECT * FROM sysobjects oi
                           WHERE oi.id = ti.id))
AND  t.name IN ( SELECT oi.name /*COLLATE*/ FROM sysobjects oi
         WHERE NOT EXISTS (SELECT * FROM #tmp ti
                           WHERE oi.id = ti.id)
         AND   oi.type  IN ('TR', 'P' ,'U' ,'V'))
UNION

--Deleted
SELECT 'deleted' AS ChangeType, t.name, '' AS extra_info, 0 AS Priority
FROM #tmp t
WHERE NOT EXISTS (SELECT * FROM sysobjects o
                  WHERE o.id = t.id)
AND t.name NOT IN (  SELECT oi.name /*COLLATE*/ FROM sysobjects oi
         WHERE NOT EXISTS (SELECT * FROM #tmp ti
                           WHERE oi.id = ti.id)
         AND   oi.type  IN ('TR', 'P' ,'U' ,'V'))
UNION

--Added
SELECT 'added' AS ChangeType, o.name /*COLLATE*/, '' AS extra_info, 4 AS Priority
FROM sysobjects o
WHERE NOT EXISTS (SELECT * FROM #tmp t
                  WHERE o.id = t.id)
AND      o.type  IN ('TR', 'P' ,'U' ,'V')
AND  o.name NOT IN ( SELECT ti.name /*COLLATE*/ FROM #tmp ti
         WHERE NOT EXISTS (SELECT * FROM sysobjects oi
                           WHERE oi.id = ti.id))
ORDER BY Priority ASC

Σημείωση: Εάν χρησιμοποιείτε μια μη τυπική ταξινόμηση σε οποιαδήποτε από τις βάσεις δεδομένων σας, θα πρέπει να αντικαταστήσετε /* COLLATE */με συλλογή δεδομένων σας. δηλαδήCOLLATE Latin1_General_CI_AI

Απαντήθηκε 24/09/2008 στις 13:53
πηγή χρήστη

ψήφοι
7

Επειδή app μας πρέπει να εργαστεί σε πολλούς Σχεσιακά ΣΔΒΔ, αποθηκεύουμε τον ορισμό του σχήματος μας τον έλεγχο έκδοσης, χρησιμοποιώντας τη βάση δεδομένων ουδέτερο ροπής μορφή (XML). Έχουμε, επίσης, την έκδοση, τον έλεγχο των δεδομένων αναφοράς για την βάση δεδομένων μας σε μορφή XML ως εξής (όπου «Σχέση» είναι ένας από τους πίνακες αναφοράς):

  <Relationship RelationshipID="1" InternalName="Manager"/>
  <Relationship RelationshipID="2" InternalName="Delegate"/>
  etc.

Στη συνέχεια, χρησιμοποιήστε την εγχώρια εργαλεία για να δημιουργήσει την αναβάθμιση σχήμα και τα στοιχεία αναφοράς για την αναβάθμιση σενάρια που απαιτούνται για να πάει από την έκδοση X της βάσης δεδομένων για την έκδοση Χ + 1.

Απαντήθηκε 24/09/2008 στις 06:49
πηγή χρήστη

ψήφοι
7

Εάν έχετε μια μικρή βάση δεδομένων και θέλετε να έκδοση το όλο πράγμα, αυτό το σενάριο παρτίδα μπορεί να βοηθήσει. Είναι αποσπάται, συμπιέζει, και ελέγχει ένα αρχείο MDF βάση δεδομένων MSSQL στο Subversion.

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

Απαντήθηκε 07/08/2008 στις 22:21
πηγή χρήστη

ψήφοι
6

Έγραψα αυτό το app πριν από λίγο καιρό, http://sqlschemasourcectrl.codeplex.com/ που θα σαρώσει MSFT σας SQL db όσο συχνά θέλετε και αυτόματα χωματερή αντικείμενα σας (πίνακες, προβολές, procs, τις λειτουργίες, τις ρυθμίσεις SQL) στο SVN. Δουλεύει άψογα. Το χρησιμοποιώ με Unfuddle (η οποία μου επιτρέπει να λαμβάνετε ειδοποιήσεις για checkins)

Απαντήθηκε 23/09/2010 στις 03:35
πηγή χρήστη

ψήφοι
6

Είχαμε την ανάγκη έκδοση SQL βάση δεδομένων μας, αφού μετανάστευσε στην πλατφόρμα x64 και παλιά έκδοση μας έσπασε με τη μετανάστευση. Γράψαμε ένα C # εφαρμογή που χρησιμοποιείται SQLDMO να χαράξει όλα τα αντικείμενα SQL σε ένα φάκελο:

                Ρίζα
                    Ονομα διακομιστή
                       Ονομα βάσης δεδομένων
                          σχήμα Αντικείμενα
                             Βάση δεδομένων Πυροδοτεί *
                                .ddltrigger.sql
                             λειτουργίες
                                ..function.sql
                             Ασφάλεια
                                Ρόλοι
                                   Ρόλοι εφαρμογή
                                      .approle.sql
                                   Ρόλοι βάσης δεδομένων
                                      .role.sql
                                σχήματα *
                                   .schema.sql
                                χρήστες
                                   .user.sql
                             Αποθήκευση
                                Πλήρης Κατάλογοι Κείμενο *
                                   .fulltext.sql
                             Αποθηκευμένες διαδικασίες
                                ..proc.sql
                             Συνώνυμα *
                                .synonym.sql
                             πίνακες
                                ..table.sql
                                Περιορισμοί
                                   ... chkconst.sql
                                   ... defconst.sql
                                δείκτες
                                   ... index.sql
                                Κλειδιά
                                   ... fkey.sql
                                   ... pkey.sql
                                   ... ukey.sql
                                εναύσματα
                                   ... trigger.sql
                             τύποι
                                Ορίζονται από το χρήστη Τύποι Δεδομένων
                                   ..uddt.sql
                                XML Schema Συλλογές *
                                   ..xmlschema.sql
                             Προβολές
                                ..view.sql
                                δείκτες
                                   ... index.sql
                                εναύσματα
                                   ... trigger.sql

Η εφαρμογή θα στη συνέχεια συγκρίνει το νέο γραπτό κείμενο στην έκδοση αποθηκεύονται στο SVN και αν υπήρχαν διαφορές θα ενημερώσει SVN. Έχουμε διαπιστώσει ότι εκτελεί τη διαδικασία μία φορά το βράδυ ήταν επαρκής δεδομένου ότι δεν κάνουν ότι πολλές αλλαγές σε SQL. Μας επιτρέπει να παρακολουθείτε τις αλλαγές σε όλα τα αντικείμενα που μας νοιάζει πλέον μας επιτρέπει να αποκατασταθεί πλήρως το σχήμα μας σε περίπτωση σοβαρού προβλήματος.

Απαντήθηκε 09/10/2008 στις 15:54
πηγή χρήστη

ψήφοι
6

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

Απαντήθηκε 07/08/2008 στις 00:00
πηγή χρήστη

ψήφοι
5

Συμφωνώ με ESV απάντηση και γι 'αυτό ακριβώς το λόγο άρχισα ένα μικρό έργο λίγο πίσω για να βοηθήσει στη διατήρηση ενημερώσεις της βάσης δεδομένων σε ένα πολύ απλό αρχείο το οποίο θα μπορούσε στη συνέχεια να διατηρηθεί για μεγάλο χρονικό πλευρά από τον πηγαίο κώδικα. Επιτρέπει την εύκολη ενημέρωση για τους προγραμματιστές, καθώς και UAT και παραγωγή. Το εργαλείο λειτουργεί σε αλλά SQL Server και MySQL.

Μερικά χαρακτηριστικά του έργου:

  • Επιτρέπει αλλαγές σχήματος
  • Επιτρέπει πληθυσμού δέντρο αξίας
  • Επιτρέπει ξεχωριστά ένθετα δεδομένα δοκιμής για π.χ.. UAT
  • Επιτρέπει την επιλογή για επαναφορά (όχι αυτοματοποιημένη)
  • Διατηρεί την υποστήριξη για τον SQL Server και MySQL
  • Έχει τη δυνατότητα να εισάγουν υπάρχουσα βάση δεδομένων σας σε έλεγχο έκδοση με μια απλή εντολή (του SQL Server μόνο ... εξακολουθεί να εργάζεται για MySQL)

Ο κώδικας φιλοξενείται στον Κώδικα Google. Παρακαλώ ελέγξτε κώδικα της Google για κάποιο περισσότερες πληροφορίες

http://code.google.com/p/databaseversioncontrol/

Απαντήθηκε 24/02/2011 στις 19:28
πηγή χρήστη

ψήφοι
5

Έχουμε μόλις ξεκίνησε να χρησιμοποιεί Ίδρυμα Team Server. Εάν η βάση δεδομένων σας είναι μεσαίου μεγέθους, τότε το Visual Studio έχει μερικά ωραία εντάξεις έργων με ενσωματωμένο σύγκρισης, τα στοιχεία σύγκρισης, εργαλεία refactoring βάση δεδομένων, πλαίσιο ελέγχου βάσεων δεδομένων, και ακόμη και τα εργαλεία παραγωγής ψηφιακών δεδομένων.

Όμως, αυτό το μοντέλο δεν ταιριάζει πολύ μεγάλο ή τρίτο βάσεις δεδομένων κόμμα (ότι τα αντικείμενα κρυπτογράφηση) πολύ καλά. Έτσι, αυτό που έχουμε κάνει είναι να αποθηκεύσετε μόνο προσαρμοσμένη αντικειμένων μας. Διακομιστή Visual Studio ίδρυμα / ομάδα λειτουργεί πολύ καλά για αυτό.

TFS επικεφαλής βάση δεδομένων αψίδα. blog

MS TFS ιστοσελίδα

Απαντήθηκε 22/08/2008 στις 18:13
πηγή χρήστη

ψήφοι
5

Η τυπική λύση είναι να απορρίπτουν τη βάση δεδομένων ανάλογα με τις ανάγκες και backup τα αρχεία.

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

Σημείωση: Μπορεί να θέλετε να κάνετε backup τη χωματερή της βάσης δεδομένων, αντί να θέτει σε έλεγχο έκδοσης. Τα αρχεία μπορούν να πάρουν τεράστια γρήγορα τον έλεγχο έκδοσης, και να προκαλέσει ολόκληρο το σύστημα ελέγχου της πηγής σας για να γίνει αργή (είμαι υπενθυμίζοντας μια ιστορία τρόμου CVS αυτή τη στιγμή).

Απαντήθηκε 03/08/2008 στις 02:49
πηγή χρήστη

ψήφοι
4

Είμαι, επίσης, χρησιμοποιώντας μια έκδοση της βάσης δεδομένων που αποθηκεύονται μέσω της βάσης δεδομένων επεκτείνεται ιδιότητες της οικογένειας των διαδικασιών. Η εφαρμογή μου έχει σενάρια για κάθε βήμα έκδοση (δηλ. μετακινηθούν 1,1 έως 1,2). Όταν αναπτυχθεί, να εξετάζει την τρέχουσα έκδοση και στη συνέχεια να τρέχει τα σενάρια μία-μία μέχρι να φτάσει στην τελευταία έκδοση της εφαρμογής. Δεν υπάρχει σενάριο που έχει την ευθεία «τελική» έκδοση, ακόμα και την ανάπτυξη σε ένα καθαρό DB κάνει το αναπτύξετε, μέσω μιας σειράς βημάτων αναβάθμισης.

Τώρα αυτό που ήθελα να προσθέσω είναι ότι έχω δει δύο μέρες πριν την παρουσίαση στο campus MS για το νέο και τις επερχόμενες έκδοση VS DB. Η παρουσίαση επικεντρώθηκε ειδικά για το θέμα αυτό και ανατινάχθηκε έξω από το νερό. Θα πρέπει σίγουρα να το ελέγξουμε, οι νέες εγκαταστάσεις επικεντρώνεται στην διατήρηση ορισμού σχημάτων σε σενάρια T-SQL (δημιουργεί), μια μηχανή χρόνου εκτέλεσης δέλτα να συγκρίνουν την ανάπτυξη σχήματος με καθορισμένες σχήμα και να κάνει τις μεταβάλλει δέλτα και ενσωμάτωση με την ολοκλήρωση κώδικα, μέχρι και περιλαμβάνει MSBuild συνεχή ολοκλήρωση για την αυτοματοποιημένη σταγόνες κατασκευής. Η πτώση θα περιέχει ένα νέο τύπο αρχείου, τα αρχεία .dbschema, που μπορούν να ληφθούν για την τοποθεσία εγκατάστασης και ένα εργαλείο γραμμής εντολών μπορεί να κάνει το πραγματικό «δέλτα» και να εκτελέσετε την ανάπτυξη. Έχω ένα blog εισόδου για το θέμα αυτό με τις συνδέσεις με τις λήψεις VSDE, θα πρέπει να ελέγξετε έξω: http://rusanu.com/2009/05/15/version-control-and-your-database/

Απαντήθηκε 15/05/2009 στις 20:26
πηγή χρήστη

ψήφοι
4

Πριν από λίγο καιρό βρήκα μια ενότητα bas VB που χρησιμοποιούνται DMO και VSS αντικείμενα για να πάρετε μια ολόκληρη db σενάριο από και προς VSS. Μου μετατραπεί σε VB Script και δημοσιεύτηκε το εδώ . Θα μπορούσατε εύκολα να πάρουν τις κλήσεις VSS και χρησιμοποιήστε τα πράγματα DMO να παράγει όλα τα σενάρια, και στη συνέχεια να καλέσετε SVN από το ίδιο αρχείο δέσμης που καλεί το VBScript για να κάνουν check-in;

Ο dave J

Απαντήθηκε 16/09/2008 στις 18:55
πηγή χρήστη

ψήφοι
3

ένα πολύ παλιό ερώτημα, ωστόσο, πολλοί προσπαθούν να λύσουν αυτό ακόμα και τώρα. Το μόνο που έχετε να κάνετε είναι να την έρευνα σχετικά με τη Visual Έργα Βάση Δεδομένων Studio. Χωρίς αυτό, οποιαδήποτε ανάπτυξη βάσης δεδομένων φαίνεται πολύ αδύναμη. Από την οργάνωση κώδικα για την ανάπτυξη στην εκδόσεων, απλοποιεί τα πάντα.

Απαντήθηκε 23/06/2015 στις 11:26
πηγή χρήστη

ψήφοι
2

Αναχώρηση DBGhost http://www.innovartis.co.uk/ . Έχω χρησιμοποιήσει με αυτοματοποιημένο τρόπο για 2 χρόνια τώρα και λειτουργεί μεγάλο. Επιτρέπει DB μας δημιουργεί να συμβεί σαν ένα Java ή κατασκευής C συμβαίνει, εκτός από τη βάση δεδομένων. Ξέρεις τι εννοώ.

Απαντήθηκε 02/11/2009 στις 23:17
πηγή χρήστη

ψήφοι
2

Σύμφωνα με την εμπειρία μου, η λύση είναι διττός:

  1. Θα πρέπει να χειριστεί τις αλλαγές στη βάση δεδομένων ανάπτυξης που γίνονται από πολλούς προγραμματιστές κατά την ανάπτυξη.

  2. Θα πρέπει να χειριστείτε τις αναβαθμίσεις της βάσης δεδομένων σε ιστοσελίδες των πελατών.

Για να χειριστεί # 1 θα χρειαστείτε ένα ισχυρό εργαλείο βάσης δεδομένων διαφ / συγχώνευση. Το καλύτερο εργαλείο θα πρέπει να είναι σε θέση να εκτελέσει αυτόματη συγχώνευση όσο το δυνατόν περισσότερο, ενώ σας επιτρέπει να επιλύσει unhandled συγκρούσεων με μη αυτόματο τρόπο.

Το τέλειο εργαλείο θα πρέπει να χειριστεί τη συγχώνευση πράξεις, χρησιμοποιώντας ένα 3-way αλγόριθμο συγχώνευσης που φέρνει υπόψη τις αλλαγές που έγιναν στο δικές τους τιμές βάσης δεδομένων και τη βάση δεδομένων MINE, σε σχέση με τη βάση δεδομένων BASE.

Έγραψα ένα εμπορικό εργαλείο που παρέχει οδηγίες στήριξη της συγχώνευσης για SQLite βάσεις δεδομένων και είμαι σήμερα προσθέτοντας υποστήριξη για 3-way αλγόριθμο συγχώνευσης για SQLite. Έλεγχος αυτό έξω σε http://www.sqlitecompare.com

Για να χειριστεί # 2 θα χρειαστεί μια αναβάθμιση πλαίσιο στη θέση του.

Η βασική ιδέα είναι να αναπτύξει μια αυτόματη αναβάθμιση πλαίσιο που ξέρει πώς να αναβαθμίσετε από μια υπάρχουσα SQL σχήμα με το νεότερο SQL σχήμα και να οικοδομήσουμε μια διαδρομή αναβάθμισης για κάθε υφιστάμενη εγκατάσταση DB.

Ελέγξτε έξω το άρθρο μου σχετικά με το θέμα στο http://www.codeproject.com/KB/database/sqlite_upgrade.aspx για να πάρετε μια γενική ιδέα για το τι μιλάω.

Καλή τύχη

Liron Levi

Απαντήθηκε 06/08/2009 στις 11:28
πηγή χρήστη

ψήφοι
1

Θα ήθελα να προτείνω τη χρήση εργαλείων σύγκριση με αυτοσχεδιάζουν ένα σύστημα ελέγχου εκδόσεων για τη βάση δεδομένων σας. Μια καλή εναλλακτική λύση είναι xSQL Schema Συγκρίνετε και xSQL Δεδομένων Συγκρίνετε .

Τώρα, εάν ο στόχος σας είναι να έχετε μόνο το σχήμα της βάσης δεδομένων υπό τον έλεγχό έκδοση μπορείτε απλά να χρησιμοποιήσετε xSQL Schema Συγκρίνετε για τη δημιουργία xSQL Στιγμιότυπα του σχήματος και να προσθέσετε αυτά τα αρχεία στον έλεγχο έκδοσή σας. Από ό, τι, για να επανέλθει ή να ενημερώσετε σε μια συγκεκριμένη έκδοση μόνο συγκρίνει την τρέχουσα έκδοση της βάσης δεδομένων με το στιγμιότυπο για την έκδοση προορισμό.

Αλίμονο, αν θέλετε να έχετε τα δεδομένα υπό έλεγχο έκδοσης, καθώς, μπορείτε να χρησιμοποιήσετε xSQL Δεδομένων Συγκρίνετε να δημιουργήσει σενάρια αλλαγής για τη βάση δεδομένων σας και να προσθέσετε τα .sql αρχεία στον έλεγχο έκδοσή σας. Θα μπορούσε στη συνέχεια να εκτελέσει αυτά τα σενάρια να επανέλθει / ενημέρωση για οποιαδήποτε έκδοση που θέλετε. Λάβετε υπόψη ότι για τη λειτουργία «Επαναφορά» θα πρέπει να δημιουργήσει σενάρια αλλαγής του ότι όταν εκτελεστεί θα κάνει Έκδοση 3 η ίδια όπως Version 2 και για τη λειτουργία «ενημέρωση», θα πρέπει να δημιουργήσει αλλαγή σενάρια που κάνουν το αντίθετο.

Τέλος, με κάποιες βασικές γνώσεις προγραμματισμού παρτίδα μπορείτε να αυτοματοποιήσει την όλη διαδικασία, χρησιμοποιώντας τις εκδόσεις της γραμμής εντολών του xSQL Schema Συγκρίνετε και xSQL δεδομένων Σύγκριση

Αποποίηση: Είμαι συνδεδεμένες με xSQL.

Απαντήθηκε 10/01/2017 στις 16:16
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more