Μεταφορά βάσης δεδομένων στο WordPress με και χωρίς πρόσθετα. Μεταφέρετε μια βάση δεδομένων σε μια παλαιότερη έκδοση του MS SQL Server

Ποιες μέθοδοι υπάρχουν;

1 - χρησιμοποιώντας τη διεπαφή phpMyAdmin.

2 - χρησιμοποιώντας τον πίνακα ελέγχου του παρόχου φιλοξενίας.

3 - χρησιμοποιώντας ένα πρόγραμμα τρίτου κατασκευαστή.

Ποιος τρόπος είναι καλύτερος;

Σας προτείνουμε το πρώτο γιατί... Το σχήμα του είναι απλό και χρησιμοποιείται από τους περισσότερους webmasters. Δεν συνιστούμε να χρησιμοποιήσετε την τρίτη μέθοδο! Μην εμπιστεύεστε ποτέ το περιεχόμενο του ιστότοπού σας προγράμματα τρίτων, επιπλέον, από άγνωστους προγραμματιστές. Μπορείτε επίσης να χρησιμοποιήσετε τη δεύτερη μέθοδο, αλλά ο αλγόριθμός της είναι πολύ διαφορετικός και εξαρτάται από τον πίνακα ελέγχου του hoster. Επομένως, θα εξετάσουμε λεπτομερώς την πρώτη επιλογή και θα σας πούμε πώς να μεταφέρετε σωστά τις βάσεις δεδομένων Δεδομένα MySQL, χωρίς απώλεια ή ζημιά δεδομένων.

Δημιουργία βάσης δεδομένων σε νέο hosting

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

1 - Αναζητούμε την ενότητα "MySQL", "Βάσεις δεδομένων" ή κάτι παρόμοιο.

2 - Κάντε κλικ στο «Δημιουργία» σε αυτό.

3 - Εισαγάγετε το όνομα της βάσης δεδομένων, επισυνάψτε έναν χρήστη σε αυτήν (συνήθως ο χρήστης της βάσης δεδομένων έχει ήδη δημιουργηθεί, εάν όχι, τότε δημιουργήστε τον και ορίστε τα υψηλότερα δικαιώματα) και εισαγάγετε τον κωδικό πρόσβασης για τη βάση δεδομένων.

4 - Η βάση δεδομένων έχει δημιουργηθεί, αλλά εξακολουθεί να είναι κενή.

Εξαγωγή της βάσης δεδομένων από την παλιά φιλοξενία

Τώρα θα χρησιμοποιήσουμε αυτό που ονομάζεται χωματερή βάσης δεδομένων. Εκείνοι. Ας αποθηκεύσουμε την τρέχουσα βάση δεδομένων από τον διακομιστή στον υπολογιστή σας. Για να γίνει αυτό, χρειαζόμαστε τη διεπαφή phpMyAdmin, την οποία πρέπει να βρείτε ΠΡΟΣΩΠΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣπάροχος φιλοξενίας που φιλοξενεί τον τρέχοντα ιστότοπό σας. Και πάλι, δεν υπάρχει ενιαίος αλγόριθμος, επομένως εδώ είναι ένα γενικό σχήμα:

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

4 - Μπορεί να σας ζητηθεί να επιλέξετε τη μέθοδο εξαγωγής "Κανονική" (πολλές ρυθμίσεις) ή "Γρήγορη" (λίγες ρυθμίσεις). Δεν έχει σημασία ποια θα επιλέξετε, το κύριο πράγμα είναι να αλλάξετε μόνο αυτές τις ρυθμίσεις που περιγράφουμε παρακάτω.

5 - Πρέπει να επιλέξετε όλους τους πίνακες κάνοντας κλικ στο κουμπί "Επιλογή όλων".

7 - Για κάθε περίπτωση, θυμηθείτε την κωδικοποίηση, αλλά μην την αγγίζετε.

8 - Κάντε κλικ στο "Ok" και αποθηκεύστε το αρχείο από τη βάση δεδομένων στον υπολογιστή σας. Συνήθως το αποθηκευμένο αρχείο έχει την επέκταση .sql.

Εισαγωγή βάσης δεδομένων στον διακομιστή ενός νέου hoster

1 - Με τον ίδιο τρόπο αναζητούμε το phpMyAdmin στη νέα φιλοξενία.

2 - Σε αυτό επιλέγουμε την απαιτούμενη βάση δεδομένωνδεδομένα (το δημιουργήσαμε στην αρχή του άρθρου και παρέμεινε κενό).

3 - Κάντε κλικ στην καρτέλα "Εισαγωγή".

4 - Κάντε κλικ στο "Browse" και επιλέξτε τη βάση δεδομένων που είναι αποθηκευμένη στον υπολογιστή σας.

5 - Ελέγξτε ότι η κωδικοποίηση ταιριάζει με αυτήν στην οποία αποθηκεύσατε τη βάση δεδομένων.

6 - Μην αλλάξετε τίποτα άλλο, κάντε κλικ στο "Ok" και η βάση δεδομένων σας θα εισαχθεί στη νέα φιλοξενία.

Ποια είναι τα προβλήματα;

1 - Κατά την εισαγωγή μιας βάσης δεδομένων, δεν πρέπει να περιέχει ερωτήματα όπως " CREATE DATABASE, /*!40101 SET @OLD" Για να ελέγξετε την παρουσία τους, ανοίξτε το αρχείο της βάσης δεδομένων στον υπολογιστή σας με οποιοδήποτε επεξεργαστής κειμένου(Το Notepad++ είναι το καλύτερο) και χρησιμοποιήστε Ctrl+A για να αναζητήσετε αυτά τα ερωτήματα. Εάν τα βρείτε, απλώς διαγράψτε τα και δοκιμάστε να εισαγάγετε ξανά τη βάση δεδομένων.

2 - Κατά την εισαγωγή, η βάση δεδομένων που βρίσκεται στο νέο hoster πρέπει να είναι κενή εάν υπάρχουν ήδη πίνακες, επιλέξτε και διαγράψτε τους.

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

Για να το κάνετε αυτό, μεταβείτε στο PhpMyAdmin. Για όσους έχουν ξεχάσει πού είναι, ρίξτε μια ματιά.

Βλέπουμε τη βάση δεδομένων μας (mebelip) και κάνουμε κλικ στο όνομα.

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

Απλώς κάνουμε κλικ στην καρτέλα "Εξαγωγή".


Να σας υπενθυμίσω ότι από προεπιλογή το OpenServer ανοίγει στο πρόγραμμα περιήγησης Chrome. Επομένως, στην κάτω αριστερή γωνία βλέπουμε το ληφθέν αρχείο. Θυμηθείτε πού το αποθηκεύσατε, θα το χρειαστούμε σύντομα.

Κάνουμε κλικ πάνω του.


Για πλάκα, μπορείτε να δείτε ποιες «μυστικές» πληροφορίες υπάρχουν σε αυτό. Ανοίγει με ένα απλό Σημειωματάριο.


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

Εδώ μας ενδιαφέρει η καρτέλα "MySQL".


Κάντε κλικ στο κουμπί "Προσθήκη χρήστη MySQL". Από προεπιλογή, έχει ήδη δημιουργηθεί. Αλλά προτείνω να δημιουργήσετε ένα νέο, ειδικά για αυτόν τον ιστότοπο.

Στο μέλλον, όταν έχετε περισσότερους από έναν ιστότοπους εδώ, αυτό θα σας βοηθήσει να αποφύγετε τη σύγχυση.


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

Για μεγαλύτερη ευκολία, αυτό θα είναι "meb". Με αυτόν τον τρόπο δεν θα μπερδευτώ και θα ξέρω σίγουρα ότι αυτό ισχύει για έναν ιστότοπο επίπλων.

Μπορείτε να ορίσετε τον δικό σας κωδικό πρόσβασης.


Βλέπουμε ότι εμφανίστηκε Νέος χρήστης, αλλά δεν υπάρχει βάση δεδομένων συνδεδεμένη σε αυτό.

Τώρα ας δημιουργήσουμε την ίδια τη βάση δεδομένων.

Κάντε κλικ στην καρτέλα "Βάση δεδομένων MySQL".


Κουμπί "Προσθήκη βάσης δεδομένων MySQL".

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


Εμφανίστηκε μια βάση δεδομένων, συνδεδεμένη με τον χρήστη που δημιουργήσαμε πριν.

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

Κάντε κλικ στο "phpMyAdmin".


Στα αριστερά, κάντε κλικ στην προεπιλεγμένη βάση δεδομένων.


Βρίσκουμε το νεοδημιουργημένο μας και το ανοίγουμε με τον ίδιο τρόπο.


Βρείτε την καρτέλα "Εισαγωγή" στο επάνω μέρος - κάντε κλικ.

16 Μαΐου

Πρόσφατα προέκυψε το ερώτημα της μεταφοράς μιας ιστοσελίδας από το ένα hosting στο άλλο. Με ιστότοπους που χρησιμοποιούν μόνο html και css χωρίς βάσεις δεδομένων, δεν θα πρέπει να υπάρχουν δυσκολίες. Ο χορός με ένα ντέφι ξεκινά όταν είστε περήφανος ιδιοκτήτης μιας ιστοσελίδας με βάση δεδομένων. Σήμερα, υπάρχει μια συντριπτική πλειοψηφία τέτοιων τοποθεσιών στο Διαδίκτυο.

Μπορούμε να μεταφέρουμε τα ίδια τα αρχεία του ιστότοπου χρησιμοποιώντας τακτική αντιγραφή από τη φιλοξενία στη φιλοξενία

Για να μεταφέρουμε μια βάση δεδομένων από έναν διακομιστή σε έναν άλλο χρειαζόμαστε:
1. Πραγματοποιήστε λήψη του αρχείου αποτύπωσης της βάσης δεδομένων στον υπολογιστή σας (Λειτουργία εξαγωγής).

2. Μεταφορτώστε τη βάση δεδομένων στον διακομιστή φιλοξενίας (Λειτουργία εισαγωγής).

Αυτό μπορεί να γίνει αρκετές φορές διαφορετικοί τρόποι. Ορισμένα CMS σάς επιτρέπουν ακόμη και να εκτελέσετε αυτές τις λειτουργίες με το δικό σας εσωτερικά μέσα. Μπορείτε επίσης να χρησιμοποιήσετε το dumper βάσης δεδομένων MySQL. Αλλά η πιο οικεία και κοινή μέθοδος για τη μετεγκατάσταση βάσεων δεδομένων είναι η μεταφορά με χρήση εργαλείων πίνακα ελέγχου βάσης δεδομένων, τα οποία θα ήθελα να εξετάσω σε αυτό το άρθρο.

1. Εξάγετε τη βάση δεδομένων από το διακομιστή στον υπολογιστή σας.

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

Πρέπει να πάτε στο " Εξαγωγή"και επιλέξτε ως" Μέθοδος εξαγωγής» — Κανονικό — εμφανίζει όλες τις πιθανές ρυθμίσεις.

Μετά από αυτό, πρέπει να δώσετε προσοχή στα πεδία:
1. Στην καρτέλα Πίνακες, πρέπει να επιλεγούν όλοι οι πίνακες που πρέπει να εισαχθούν. Ενδέχεται να υπάρξει μια κατάσταση όπου ορισμένοι πίνακες δεν θα χρειαστούν κατά την εισαγωγή για τη μεταφορά βάσεων δεδομένων. Σε αυτήν την περίπτωση, μπορείτε να αποεπιλέξετε τους πίνακες που δεν χρειάζονται επιλέγοντας απαιτούμενα ονόματατραπέζια με σφιγμένα Πλήκτρο Ctrlστο πληκτρολόγιο. (ΣΠΟΥΔΑΙΟΣ! Αν δεν είσαι έμπειρος χρήστηςβάσεις δεδομένων - είναι καλύτερο να επιλέξετε όλους τους πίνακες. )
2. Πρέπει να επιλέξετε την επιλογή "Αποθήκευση εξόδου σε αρχείο".
3. Θυμηθείτε την κωδικοποίηση που έχει οριστεί στο πεδίο - Κωδικοποίηση αρχείου.
4. Δεν χρειάζεται να αγγίξετε τα υπόλοιπα σημεία εάν δεν ξέρετε γιατί χρειάζονται.
5. Κάντε κλικ στο OK και, στη συνέχεια, αποθηκεύστε το αρχείο στον υπολογιστή σας.

2. Εισαγάγετε τη βάση δεδομένων από τον υπολογιστή σας στον διακομιστή.

1. Ελέγχουμε την επέκταση της αποθηκευμένης βάσης δεδομένων melon στον υπολογιστή μας. Θα πρέπει να είναι '.sql'. Εάν, κατά την αποθήκευση της βάσης δεδομένων, καθορίστηκε η επιλογή - αρχειοθέτηση (zip, gzip, bzip) - πρέπει πρώτα να εξαγάγετε τη βάση δεδομένων από το αρχείο.
2. Η ένδειξη της βάσης δεδομένων μας δεν πρέπει να περιέχει ερωτήματα όπως « CREATE DATABASE, /*!40101 SET @OLD» . Μπορείτε να επαληθεύσετε την απουσία ή την παρουσία ενός τέτοιου αιτήματος ανοίγοντας την ένδειξη της βάσης δεδομένων με το Σημειωματάριο ή άλλο πρόγραμμα επεξεργασίας κειμένου. Εάν υπάρχει ένα τέτοιο αίτημα, θα πρέπει να διαγράψετε αυτήν τη γραμμή και να αποθηκεύσετε ξανά το αρχείο. Κατά κανόνα, βρίσκεται στις πρώτες 15 γραμμές της ένδειξης δεδομένων βάσης δεδομένων.
3. Πρέπει να βεβαιωθείτε ότι δεν δημιουργούνται πίνακες στη μελλοντική βάση δεδομένων. Για να το κάνετε αυτό, μεταβείτε και επιλέξτε τη βάση δεδομένων σας στο μενού στα αριστερά στη λίστα των βάσεων δεδομένων. Στην αριστερή πλευρά του μενού μπορείτε να δείτε το μήνυμα "Δεν βρέθηκαν πίνακες στη βάση δεδομένων". Εάν υπάρχουν πίνακες, πρέπει να τους διαγράψετε.

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

Δεν χρειάζεται να κάνετε άλλες ρυθμίσεις. Κάντε κλικ Εντάξεικαι περιμένετε να ολοκληρωθεί η εισαγωγή της βάσης δεδομένων.

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

Έχετε βάση δεδομένων MS; SQL Server, το οποίο πρέπει να μεταφερθεί σε άλλο φυσικό υπολογιστή. Έχετε ήδη δημιουργήσει ένα αντίγραφο ασφαλείας και ξεκινάτε με χαρά την επαναφορά. Στη συνέχεια, όμως, αποδεικνύεται ότι μια παλαιότερη έκδοση του MS SQL Server είναι εγκατεστημένη στον υπολογιστή όπου πρέπει να μεταφερθεί η βάση δεδομένων. Το Stack Overflow σας διαβεβαιώνει ότι όλα είναι άσχημα. Είναι όμως όντως έτσι;

Φυσικά, μεταφορά της βάσης δεδομένων από περισσότερα νέα έκδοσηστο παλιό - αυτό δεν είναι ένα κλασικό και όχι το πιο σωστό σενάριο εργασίας. Συχνά όμως οι βάσεις δεδομένων δημιουργούνται με τέτοιο τρόπο ώστε να υποστηρίζουν όλες τις νεότερες εκδόσεις της SQL, ξεκινώντας με κάποιες, για παράδειγμα, το 2008 R2, επειδή Η άμεση συμβατότητα του MS SQL είναι κάτι παραπάνω από εξαιρετική. Και, για παράδειγμα, ο πελάτης σας έχει ήδη εγκαταστήσει το MS SQL 2016 και έχετε το MS SQL 2014 στον δοκιμαστικό διακομιστή σας για ανάπτυξη και θέλετε να αναπτύξετε τη βάση δεδομένων του πελάτη για να καταλάβετε πού συγχέεται με τα δεδομένα.

Η Microsoft αρνήθηκε το πρόβλημα - λένε ότι δεν το έχουν συμβατότητα προς τα πίσω, και αυτό είναι. Ένα αντίγραφο ασφαλείας που δημιουργήθηκε σε νεότερο διακομιστή δεν μπορεί να αποκατασταθεί σε παλαιότερο διακομιστή. Ναι, έχουν εργαλεία όπως DTS, αντιγραφή βάσεων δεδομένων, εξαγωγή-εισαγωγή κ.λπ. Αλλά είναι τόσο άβολα και δυσκίνητα που δεν είναι ιδιαίτερα βολικό να γίνει μια κανονική μεταφορά μιας μεγάλης βάσης δεδομένων με πολλούς πίνακες που τους χρησιμοποιούν. Σε κάθε περίπτωση, προσωπικά δεν μου βγήκε.

Ναι, μπορείτε να δημιουργήσετε δέσμες ενεργειών SQL για ολόκληρη τη βάση δεδομένων, συμπεριλαμβανομένων των δεδομένων. Αλλά φανταστείτε, έχετε μια δέσμη πεδίων blob με μεγάλα δεδομένα στη βάση δεδομένων σας και γενικά το μέγεθος ολόκληρης της βάσης δεδομένων είναι 500+ GB. Μπορείτε να φανταστείτε πόσο χρόνο θα πάρει ένα τέτοιο σενάριο, πόσο χρόνο θα χρειαστεί για να δημιουργηθεί και να εκτελεστεί.

Ο νούμερο ένα περιορισμός είναι ότι χρειάζεστε πρόσβαση μέσω του MS SQL Management Studio και στους δύο διακομιστές - τον παλιό και τον νέο. Εάν αυτό δεν είναι δυνατό, τότε θα πρέπει να είναι δυνατό στο μηχάνημα από το οποίο θέλετε να μεταφέρετε τη βάση δεδομένων να εγκαταστήσετε την έκδοση της SQL στην οποία θέλετε να μεταφέρετε τη βάση δεδομένων, προκειμένου να μεταφέρετε τη βάση δεδομένων πρώτα σε αυτήν την έκδοση τοπικά, και στη συνέχεια σύρετέ το μέσω ενός αντιγράφου ασφαλείας ή απευθείας μέσω των αρχείων βάσης δεδομένων *df (μέσω Detach/Attach) στο καινούριο αυτοκίνητο(Έκδοση SQL Server" σε αυτήν την περίπτωση θα ταιριάζει ήδη).

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

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

1) Στον νέο διακομιστή, δημιουργήστε μια κενή βάση δεδομένων με τα ίδια αρχεία και ομάδες αρχείων με τη μεταφερόμενη βάση δεδομένων.

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

3) Συνδέουμε τη βάση δεδομένων από την οποία θα μεταφέρουμε δεδομένα ως Συνδεδεμένος Διακομιστής για να μπορούμε να χρησιμοποιούμε κλήσεις προς την παλιά βάση δεδομένων σε αιτήματα προς τη νέα βάση δεδομένων.

EXEC sp_addlinkedserver @server=N"LinkedServerAlias", @srvproduct=N", @provider=N"SQLNCLI", @datasrc=N"LinkedServerHost\LinkedServerName"; EXEC sp_addlinkedsrvlogin "LinkedServerUser", "false", null, "RealUser", "RealUserPassword";
4) Επειδή οι δομές της βάσης δεδομένων είναι οι ίδιες, θα χρησιμοποιήσουμε την ενσωματωμένη αποθηκευμένη διαδικασία sp_msforeachtable, η οποία σας επιτρέπει να εκτελέσετε ένα ερώτημα σε κάθε πίνακα βάσης δεδομένων για να δημιουργήσετε ένα σενάριο για τη μεταφορά δεδομένων από παλιά βάσησε ένα νέο μέσω ενός αιτήματος όπως

ΕΙΣΑΓΩΓΗ ΣΤΟ ? ΕΠΙΛΟΓΗ * ΑΠΟ ;
Το sp_msforeachtable αντικαθιστά το ερωτηματικό με το όνομα κάθε πίνακα και εκτελεί το ερώτημα πολλές φορές (μία φορά ανά πίνακα).

Εδώ συνάντησα τα περισσότερα ένας μεγάλος αριθμός απότσουγκράνα.

Α) Το πρώτο πρόβλημα είναι ότι για πίνακες με πεδία IDENTITY πρέπει να καλέσετε:

SET IDENTITY_INSERT ON. --INSERT INTO ... (η ίδια η εισαγωγή). SET IDENTITY_INSERT OFF.
β) Το δεύτερο πρόβλημα είναι ότι αυτή η κλήση δεν μπορεί να πραγματοποιηθεί σε πίνακες που δεν έχουν πεδία IDENTITY, επομένως είναι απαραίτητο να προσδιοριστεί δυναμικά εάν ο πίνακας έχει στήλη IDENITY ή όχι.

Αυτό μπορεί να γίνει με αυτό το αίτημα:

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE (TABLE_NAME="SomeTable") ΚΑΙ (COLUMNPROPERTY(object_id("dbo.SomeTable"), COLUMN_NAME, "IsIdentity") = 1)
γ) Το πρόβλημα νούμερο τρία είναι ότι, όπως αποδείχθηκε, στη λειτουργία IDENITY_INSERT ON δεν μπορείτε να κάνετε

INSERT INTO ... ΕΠΙΛΟΓΗ * ΑΠΟ ...
, αλλά πρέπει να αναφέρετε συγκεκριμένα πεδία.

Μπορείτε να παραθέσετε πεδία πίνακα σε μια σειρά χρησιμοποιώντας το ακόλουθο ερώτημα:

SELECT SUBSTRING((SELECT ", " + QUOTENAME(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = "SomeTable" ORDER BY ORDINAL_POSITION FOR XML path("")), 3, 200000);
4) Δημιουργήστε ένα σενάριο εισαγωγής για όλους τους πίνακες:

Διαδικασία δημιουργίας σεναρίων

EXEC sp_msforeachtable N" DECLARE @command varchar(MAX); DECLARE @name varchar(200); SET @name=""?""; SET @name = SUBSTRING(@name, 8, LEN(@name)-8); SET @command = """" SELECT @command= SUBSTRING((SELECT "", "" + QUOTENAME(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = """" + @όνομα + """" ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ ΑΡΧΙΚΗ_ΘΕΣΗ Διαδρομή XML(""")), 3, 200000 SET @command = ""INSERT INTO ""+ @name +"" (""+ @command + "") SELECT "" + @command + ""); FROM "" + ""LinkedServerAlias.SourceDatabase." + """" SET @command= ""ΑΝ ΥΠΑΡΧΕΙ (επιλέξτε * από INFORMATION_SCHEMA.COLUMNS όπου (TABLE_NAME=""""" + @Name + "" "; """) ΚΑΙ (COLUMNPROPERTY(object_id(""""dbo.""+@Name+"""""), COLUMN_NAME, """"IsIdentity"""") = 1)) SET IDENTITY_INSERT "" + @ name + "" ON; "" +@command;" """") ΚΑΙ (COLUMNPROPERTY(object_id(""""dbo.""+@Name+"""""), COLUMN_NAME, """"IsIdentity"""") = 1)) SET IDENTITY_INSERT "" + @name + "" OFF;""; PRINT (@command); --EXEC(@command); // Εάν καταργήσετε το σχολιασμό, το σενάριο θα εκτελεστεί αμέσως και όχι απλώς θα εμφανιστεί στην οθόνη "


5) Εκτελέστε το σενάριο μεταφοράς δεδομένων που δημιουργήθηκε

6) Εκτελέστε το σενάριο για να δημιουργήσετε όλους τους περιορισμούς ξένων κλειδιών (τώρα είναι δυνατό).

7) Έγινε! Μεταφέρατε τη βάση δεδομένων από τη νέα Διακομιστής SQLστο παλιό κι ας θεωρούνταν αδύνατο. Επιπλέον, η μεταφορά πραγματοποιείται μόνο μιάμιση φορά πιο αργά από την ταχύτητα μεταφοράς δεδομένων μέσω του δικτύου, δηλ. αρκετά γρήγορα.

8) Καθαρισμός του εαυτού μας (απενεργοποίηση Συνδεδεμένου διακομιστή):

EXEC sp_droplinkedsrvlogin "LinkedServerUser", null; sp_dropserver "LinkedServerAlias";
Περιορισμοί της μεθόδου.

1) Αυτή η μέθοδος δεν θα μπορεί να μεταφέρει πίνακες που έχουν στήλες τύπου XML.
Μάλλον υπάρχουν πολλοί άλλοι περιορισμοί, γιατί... στη βάση δεδομένων που μετέφερα με παρόμοιο τρόπο, πολλές δυνατότητες του διακομιστή SQL δεν χρησιμοποιήθηκαν. Μπορείτε να γράψετε για τους περιορισμούς στα σχόλια και θα συμπληρώσω το άρθρο με αυτούς.

Σας ευχαριστώ για την προσοχή σας! Ελπίζω να βοηθήσει κάποιον.

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

1. Εάν υπάρχει ήδη μια βάση δεδομένων με το ίδιο όνομα

Εάν, κατά τη μετεγκατάσταση μιας βάσης δεδομένων, ανακαλυφθεί ότι υπάρχει ήδη μια βάση δεδομένων με το ίδιο όνομα ή κατά την ανάκτηση παρουσιαστεί σφάλμα ότι ένα αρχείο βάσης δεδομένων με το ίδιο όνομα υπάρχει ήδη, πρέπει να καθορίσετε με μη αυτόματο τρόπο ένα νέο όνομα βάσης δεδομένων και/ή φάκελο στο όπου θα βρίσκονται τα αρχεία. φυσικά αρχεία DB. Αυτό μπορεί να γίνει στο SQL Server Managment Studio καθορίζοντας ένα νέο όνομα βάσης δεδομένων στην καρτέλα Γενικά κατά την επαναφορά

και ο φάκελος στον οποίο θα βρίσκονται τα αρχεία της βάσης δεδομένων (καρτέλα Αρχεία)

2. Μεταφορά της βάσης δεδομένων Alta-GTD μαζί με πρόσθετες βάσεις δεδομένων ED

Εάν πρέπει να μεταφέρετε τη βάση δεδομένων Alta-GTD μαζί με πρόσθετες βάσεις δεδομένων ED, τότε πρέπει:

1. Δημιουργήστε ένα αντίγραφο ασφαλείας της βάσης δεδομένων μαζί με πρόσθετες βάσεις δεδομένων χρησιμοποιώντας το πρόγραμμα Alta-GTD. Για να το κάνετε αυτό, πρέπει να εκτελέσετε Service - SQL Administrator - Backup Βάση δεδομένων SQLδεδομένα και στη συνέχεια απαντήστε καταφατικά στην ερώτηση σχετικά με την ανάγκη Κρατήστε αντίγραφοπρόσθετες βάσεις ED. Μετά τη λειτουργία δημιουργίας αντίγραφα ασφαλείαςθα ολοκληρωθούν πρόσθετες βάσεις δεδομένων, το πρόγραμμα θα εμφανίσει ένα παράθυρο πληροφοριών με μια περιγραφή όλων των δημιουργηθέντων αρχείων αντιγράφων ασφαλείας. Αυτά τα αρχεία, καθώς και το αρχείο αντιγράφου ασφαλείας της βάσης δεδομένων εργασίας, πρέπει να μεταφερθούν σε άλλο διακομιστή SQL.

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

3. Εάν η λειτουργική βάση δεδομένων μετονομάστηκε κατά την ανάκτηση, τότε πρέπει να εκτελέσετε το σενάριο για όλες τις πρόσθετες βάσεις δεδομένων:

ΕΝΗΜΕΡΩΣΗ [Additional_Database_Name].. SET = "_gtd_ed@Main_Database_Name"

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

ΕΝΗΜΕΡΩΣΗ [Main_Database_Name].. SET = "New_Additional_Database_Name" WHERE = "Old_Additional_Database_Name"