Transferarea unei baze de date pe WordPress cu și fără pluginuri. Migrați o bază de date la o versiune mai veche de MS SQL Server

Ce metode există?

1 - folosind interfața phpMyAdmin.

2 - folosind panoul de control al furnizorului de găzduire.

3 - folosind un program terță parte.

Care este mai bine?

Îl recomandăm pe primul, pentru că... schema sa este simplă și este folosită de majoritatea webmasterilor. Nu vă recomandăm să folosiți a treia metodă! Nu aveți încredere niciodată în conținutul site-ului dvs programe de la terți, în plus, de la dezvoltatori necunoscuți. Puteți folosi și a doua metodă, dar algoritmul său este foarte diferit și depinde de panoul de control al hosterului. Prin urmare, vom lua în considerare prima opțiune în detaliu și vă vom spune cum să transferați corect bazele de date Date MySQL, fără pierderea sau deteriorarea datelor.

Crearea unei baze de date pe o nouă găzduire

Dacă doriți să transferați o bază de date MySQL, atunci aveți deja o bază de date și știți cum să o creați. În orice caz, acest proces este diferit pentru fiecare furnizor de găzduire, dar se reduce la un algoritm general:

1 - Căutăm secțiunea „MySQL”, „Bază de date” sau ceva similar.

2 - Faceți clic pe „Creați” în el.

3 - Introduceți numele bazei de date, atașați-i un utilizator (de obicei, utilizatorul bazei de date a fost deja creat, dacă nu, atunci creați-l și setați cele mai mari drepturi) și introduceți parola pentru baza de date.

4 - Baza de date a fost creată, dar este încă goală.

Exportarea bazei de date de pe vechea găzduire

Acum vom folosi ceea ce se numește dump de bază de date. Acestea. Să salvăm baza de date curentă de pe server pe computer. Pentru a face acest lucru, avem nevoie de interfața phpMyAdmin, pe care trebuie să o găsiți cont personal furnizor de găzduire care găzduiește site-ul dvs. actual. Din nou, nu există un singur algoritm, așa că iată o schemă generală:

2 - În colțul din stânga, selectați baza de date (cea pe care urmează să o exportați pe computer și apoi să o transferați pe o altă găzduire).

4 - Vi se poate cere să selectați metoda de export „Normal” (multe setări) sau „Rapid” (puține setări). Nu contează pe care o alegeți, principalul lucru este să schimbați doar acele setări pe care le descriem mai jos.

5 - Trebuie să selectați toate tabelele făcând clic pe butonul „Selectați tot”.

7 - Pentru orice eventualitate, amintiți-vă codificarea, dar nu o atingeți.

8 - Faceți clic pe „Ok” și salvați fișierul din baza de date pe computer. De obicei, fișierul salvat are extensia .sql.

Importul unei baze de date pe serverul unui nou hoster

1 - În același mod căutăm phpMyAdmin pe noua găzduire.

2 - În ea selectăm baza necesară date (am creat-o la începutul articolului și a rămas goală).

3 - Faceți clic pe fila „Import”.

4 - Faceți clic pe „Răsfoiți” și selectați baza de date salvată pe computer.

5 - Verificați dacă codificarea se potrivește cu cea în care ați salvat baza de date.

6 - Nu schimbați nimic altceva, faceți clic pe „Ok” și baza de date va fi importată în noua găzduire.

Care sunt problemele?

1 - Când importați o bază de date, aceasta nu trebuie să conțină interogări precum „ CREAȚI BAZĂ DE DATE, /*!40101 SET @OLD" Pentru a verifica prezența lor, deschideți fișierul bazei de date de pe computer cu oricare editor de text(Notepad++ este cel mai bun) și utilizați Ctrl+A pentru a căuta aceste interogări. Dacă le găsiți, pur și simplu ștergeți-le și încercați să importați din nou baza de date.

2 - La import, baza de date situată la noul hoster trebuie să fie goală dacă există deja tabele în ea, selectați-le și ștergeți-le;

Fișierele site-ului nostru sunt încărcate în siguranță pe găzduire. Să nu pierdem timpul și să reprogramăm baza existenta date (DB) de la local la server.

Pentru a face acest lucru, accesați PhpMyAdmin. Pentru cei care au uitat unde este, aruncați o privire.

Vedem baza noastră de date (mebelip) și facem clic pe nume.

În fața noastră s-a deschis o fereastră cu o mulțime de date care nu înseamnă absolut nimic pentru un începător. Dar nu avem nevoie de asta acum.

Facem pur și simplu clic pe fila „Export”.


Permiteți-mi să vă reamintesc că în mod implicit OpenServer se deschide în browserul Chrome. Prin urmare, în colțul din stânga jos vedem fișierul descărcat. Amintiți-vă unde l-ați salvat, vom avea nevoie de el în curând.

Hai să facem clic pe el.


Doar pentru distracție, puteți vedea ce informații „secrete” sunt în el. Se deschide cu un simplu Notepad.


Asta e, cu server local terminat. Accesați panoul de administrare al contului dvs. de găzduire.

Aici ne interesează fila „MySQL”.


Faceți clic pe butonul „Adăugați utilizator MySQL”. În mod implicit, este deja creat. Dar recomand să creați unul nou, special pentru acest site.

În viitor, atunci când aveți mai multe site-uri aici, acest lucru va ajuta la evitarea confuziei.


Apare o fereastră pop-up, introduceți numele de utilizator în ea. Este format din două părți, prima este host1234567 (numerele vor fi ale tale), partea neschimbată, dar în a doua scriem informațiile noastre.

Pentru confort suplimentar, acesta va fi „meb”. În acest fel, nu voi fi confuz și voi ști sigur că acest lucru se aplică unui site de mobilă.

Vă puteți seta propria parolă.


Vedem că a apărut Utilizator nou, dar nu există o bază de date atașată.

Acum să creăm baza de date în sine.

Faceți clic pe fila „Bază de date MySQL”.


Butonul „Adăugați o bază de date MySQL”.

Introduceți numele în fereastra pop-up. Pentru comoditate, este mai bine să introduceți aceleași date ca și în numele de utilizator.


A apărut o bază de date, atașată utilizatorului pe care l-am creat anterior.

Scrieți aceste informații undeva, de ex. numele de utilizator și baza de date și parola, dacă le-ați schimbat. Toate acestea vor fi necesare în lecția următoare.

Faceți clic pe „phpMyAdmin”.


În stânga, faceți clic pe baza de date implicită.


Îl găsim pe cel nou creat și îl deschidem în același mod.


Găsiți fila „Importați” în partea de sus – faceți clic.

16 mai

Recent a apărut problema transferului unui site web de la o găzduire la alta. Cu site-urile care folosesc numai html și css fără baze de date, nu ar trebui să existe dificultăți. Dansul cu tamburina începe atunci când ești mândru proprietar al unui site web cu o bază de date. În zilele noastre există o majoritate covârșitoare a acestor site-uri pe Internet.

Putem transfera fișierele site-ului înșiși folosind copierea obișnuită de la găzduire la găzduire

Pentru a transfera o bază de date de la un server la altul avem nevoie de:
1. Descărcați descărcarea bazei de date pe computer (operație de export).

2. Încărcați dump-ul bazei de date pe serverul de găzduire (operație de import).

Acest lucru se poate face de mai multe ori căi diferite. Unele CMS vă permit chiar să efectuați aceste operațiuni cu propriile dvs mijloace interne. De asemenea, puteți utiliza dumperul bazei de date MySQL. Dar cea mai familiară și comună metodă de migrare a bazelor de date este transferul folosind instrumentele panoului de control al bazei de date, pe care aș dori să le iau în considerare în acest articol.

1. Exportați baza de date de pe server pe computer.

Trebuie să mergem la serverul pe care se află în prezent baza de date pe care trebuie să o transferăm, iar în partea stângă a meniului din lista de baze de date, o selectăm pe cea care trebuie transferată.

Trebuie să mergi la " Export" și selectați ca " Metoda de export» — Normal — afișează toate setările posibile.

După aceasta, trebuie să acordați atenție câmpurilor:
1. În fila Tabele, trebuie selectate toate tabelele care trebuie importate. Poate exista o situație în care unele tabele nu vor fi necesare în timpul importului pentru a transfera bazele de date. În acest caz, puteți deselecta acele tabele care nu sunt necesare selectând nume cerute mese cu prinse Tasta Ctrl pe tastatură. (IMPORTANT! Dacă nu ești utilizator experimentat baze de date - este mai bine să selectați toate tabelele. )
2. Trebuie să selectați opțiunea „Salvați rezultatul în fișier”.
3. Amintiți-vă codarea care este setată în câmpul - Codificare fișier.
4. Nu trebuie să atingeți punctele rămase dacă nu știți de ce sunt necesare.
5. Faceți clic pe OK, apoi salvați fișierul pe computer.

2. Importați baza de date de pe computer pe server.

1. Verificăm extensia bazei de date de pepene galben salvat pe computerul nostru. Ar trebui să fie „.sql”. Dacă la salvarea bazei de date a fost specificată opțiunea - arhivați-o (zip, gzip, bzip) - trebuie mai întâi să extrageți baza de date din arhivă.
2. Dump-ul bazei de date nu ar trebui să conțină interogări precum « CREAȚI BAZĂ DE DATE, /*!40101 SET @OLD» . Puteți verifica absența sau prezența unei astfel de solicitări deschizând dump-ul bazei de date cu Notepad sau alt editor de text. Dacă o astfel de solicitare este prezentă, ar trebui să ștergeți această linie și să salvați din nou fișierul. De regulă, se găsește în primele 15 rânduri ale dump-ului bazei de date.
3. Trebuie să vă asigurați că nu sunt create tabele în viitoarea bază de date. Pentru a face acest lucru, accesați și selectați baza de date în meniul din stânga în lista de baze de date. În partea stângă a meniului puteți vedea mesajul „Nu s-au găsit tabele în baza de date”. Dacă sunt prezente tabele, trebuie să le ștergeți.

După parcurgerea tuturor acestor pași, puteți merge în siguranță la fila „Import”, în care, făcând clic pe butonul „Răsfoiți”, selectați de pe computer imaginea salvată a bazei de date. În câmpul „Codificare fișier:”, selectați codarea în care a fost creată această bază de date.

Nu este nevoie să faceți alte setări. Clic Bineși așteptați ca importul bazei de date să se termine.

Baza de date a fost transferată cu succes și după aceea site-ul nostru va funcționa pe noua găzduire (cu condiția ca toate celelalte operațiuni de transfer al site-ului să fi fost deja făcute).

Ai o bază de date MS SQL Server, care trebuie transferat pe un alt computer fizic. Ați făcut deja o copie de rezervă și începeți cu bucurie să restaurați. Dar apoi se dovedește că o versiune mai veche a MS SQL Server este instalată pe computerul pe care trebuie transferată baza de date. Stack Overflow vă asigură că totul este rău. Dar este chiar așa?

Desigur, transferul bazei de date de la mai multe versiune noua la cel vechi - acesta nu este un scenariu de lucru clasic și nu cel mai corect. Dar adesea bazele de date sunt create în așa fel încât să accepte toate versiunile mai noi de SQL, începând cu unele, de exemplu, 2008 R2, deoarece Compatibilitatea directă a MS SQL este mai mult decât excelentă. Și, de exemplu, clientul dvs. a instalat deja MS SQL 2016 și aveți MS SQL 2014 pentru dezvoltare și doriți să implementați baza de date a clientului pentru a afla unde este confundat cu datele.

Microsoft a respins problema - ei spun că nu o au compatibilitate inversă, si asta e. O copie de rezervă creată pe un server mai nou nu poate fi restaurată pe un server mai vechi. Da, au instrumente precum DTS, copierea bazei de date, export-import etc. Dar sunt atât de incomode și greoaie încât nu este deosebit de convenabil să faci un transfer normal al unei baze de date mari cu multe tabele care le folosesc. În orice caz, nu mi-a ieșit personal.

Da, puteți genera scripturi SQL pentru întreaga bază de date, inclusiv pentru datele. Dar imaginați-vă că aveți o grămadă de câmpuri blob cu date mari în baza de date și, în general, dimensiunea întregii baze de date este de peste 500 GB. Vă puteți imagina cât timp va dura un astfel de script, cât va dura să fie generat și executat.

Limitarea numărul unu este că aveți nevoie de acces prin MS SQL Management Studio la ambele servere - cel vechi și cel nou. Dacă acest lucru nu este posibil, atunci ar trebui să fie posibil pe mașina de pe care doriți să transferați baza de date să instalați versiunea de SQL către care doriți să transferați baza de date, pentru a transfera mai întâi baza de date în această versiune local și apoi trageți-l printr-o copie de rezervă sau direct prin fișierele bazei de date *df (prin Detach/Atach). mașină nouă(Versiunea SQL Server" în acest caz se va potrivi deja).

O altă limitare este că veți avea nevoie de un script pentru schema bazei de date (toate obiectele, inclusiv tabelele, indecșii, constrângerile, procedurile stocate, declanșatoarele etc.) fără date, iar instrucțiunile pentru crearea constrângerilor de cheie străină trebuie să fie incluse în acest script la ora chiar la sfârșit, separat de scriptul pentru crearea tabelelor în sine.

Voi descrie pe scurt algoritmul de transfer de date în sine. Toate acțiunile sunt efectuate într-o sesiune Management Studio conectată la server, pe care trebuie să mutați baza de date.

1) Pe noul server, creați o bază de date goală cu aceleași fișiere și grupuri de fișiere ca și baza de date transferată.

2) Folosind scriptul de schemă a bazei de date, creăm toate obiectele bazei de date (tabele, indecși, vizualizări, declanșatoare, proceduri stocate și funcții), dar fără a crea constrângeri de cheie străină. Nu puteți crea un FK în această etapă, deoarece vor interfera cu inserarea datelor.

3) Conectam baza de date din care vom transfera date ca Linked Server astfel incat sa putem folosi apelurile catre vechea baza de date in cererile catre noua baza de date.

EXEC sp_addlinkedserver @server=N"LinkedServerAlias", @srvproduct=N"", @provider=N"SQLNCLI", @datasrc=N"LinkedServerHost\LinkedServerName"; EXEC sp_addlinkedsrvlogin „LinkedServerUser”, „false”, null, „RealUser”, „RealUserPassword”;
4) Pentru că Structurile bazei de date sunt aceleași, vom folosi procedura stocată încorporată sp_msforeachtable, care vă permite să rulați o interogare pe fiecare tabel al bazei de date pentru a genera un script pentru transferul datelor din baza veche la unul nou printr-o cerere like

INTRODU IN ?
ALEGE DIN ?

sp_msforeachtable înlocuiește semnul întrebării cu numele fiecărui tabel și rulează interogarea de mai multe ori (o dată pe tabel). Aici am întâlnit cel mai mult un numar mare de

grebla.

A) Problema numărul unu este că pentru tabelele cu câmpuri IDENTITATE trebuie să apelați:
SETĂ IDENTITY_INSERT ON; --INSERT INTO ... (inserția în sine); SET IDENTITY_INSERT OFF;

b) Problema numărul doi este că acest apel nu se poate face pe tabele care nu au câmpuri IDENTITATE, deci este necesar să se determine dinamic dacă tabelul are sau nu o coloană IDENTITATE.

Acest lucru se poate face cu această solicitare:
SELECTAȚI * FROM INFORMATION_SCHEMA.COLUMNS WHERE (TABLE_NAME="SomeTable") ȘI (COLUMNPROPERTY(object_id("dbo.SomeTable")), COLUMN_NAME, "IsIdentity") = 1)

c) Problema numărul trei este că, după cum sa dovedit, în modul IDENITY_INSERT ON nu poți face
INSERT INTO ... SELECT * FROM ...

, dar trebuie să enumerați anumite câmpuri.

Puteți enumera câmpurile de tabel într-un rând folosind următoarea interogare:
SELECT SUBSTRING((SELECT ", " + QUOTENAME(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = "SomeTable" ORDER BY ORDINAL_POSITION FOR XML path("")), 3, 200000);

4) Generați un script de inserare pentru toate tabelele:

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 = """" + @name + """" ORDER BY ORDINAL_POSITION FOR Cale XML(""")), 3, 200000 SET @command = ""INSERT INTO ""+ @name +"" (""+ @command + "") SELECT "" + @command + "" FROM "" + ""LinkedServerAlias.SourceDatabase."" + ""?"" SET @command= ""IF EXISTIS (selectați * din INFORMATION_SCHEMA.COLUMNS unde (TABLE_NAME=""""" + @Name + "" " """) AND (COLUMNPROPERTY(object_id(""""dbo.""+@Name+"""""), COLUMN_NAME, """"IsIdentity"""") = 1)) SET IDENTITY_INSERT "" + @ nume + "" ON; "" +@comandă SET @command=@command+"";"" + "IF EXISTĂ (selectați * din INFORMATION_SCHEMA.COLUMNS unde (TABLE_NAME=""""" + @Name + "" """") AND (COLUMNPROPERTY(object_id(""""dbo.""+@Name+"""""), COLUMN_NAME, """"IsIdentity"""") = 1)) SET IDENTITY_INSERT "" + @nume + "" OFF;""; PRINT (@comandă); --EXEC(@comandă); // Dacă nu comentați, scriptul va fi executat imediat și nu doar afișat pe ecran "


5) Executați scriptul de transfer de date generat

6) Executați scriptul pentru a crea toate constrângerile cheii externe (acum posibil).

7) Gata! Ai transferat baza de date din cea nouă SQL Server celui vechi, deși era considerat imposibil. Mai mult, transferul se efectuează doar de o ori și jumătate mai lent decât viteza de transfer de date prin rețea, adică. destul de repede.

8) Curățarea după noi înșine (dezactivarea serverului conectat):

EXEC sp_droplinkedsrvlogin „LinkedServerUser”, null; sp_dropserver „LinkedServerAlias”;
Limitele metodei.

1) Această metodă nu va putea transfera tabele care au coloane de tip XML.
Probabil că există multe alte restricții, pentru că... în baza de date pe care am transferat-o intr-un mod similar, multe caracteristici ale serverului SQL nu au fost utilizate. Puteți scrie despre limitări în comentarii și voi completa articolul cu ele.

Vă mulțumim pentru atenție! Sper să ajute pe cineva.

Uneori este nevoie de a transfera o bază de date SQL de la un server SQL la altul. De obicei, procesul de migrare a datelor implică crearea unei copii de siguranță a bazei de date și restaurarea acesteia pe un alt server SQL. Cu toate acestea, s-ar părea că într-o operație atât de simplă pot apărea diferite tipuri de dificultăți. În acest articol vom încerca să ne ocupăm de unele dintre ele.

1. Dacă există deja o bază de date cu același nume

Dacă, la migrarea unei baze de date, se descoperă că există deja o bază de date cu același nume sau în timpul recuperării apare o eroare că un fișier de bază de date cu același nume există deja, trebuie să specificați manual un nou nume de bază de date și/sau folder în pe care vor fi localizate fișierele. fișiere fizice DB. Acest lucru se poate face în SQL Server Managment Studio prin specificarea unui nou nume de bază de date în fila General la restaurare

și folderul în care vor fi localizate fișierele bazei de date (fila Fișiere)

2. Transferul bazei de date Alta-GTD împreună cu baze de date suplimentare ED

Dacă trebuie să transferați baza de date Alta-GTD împreună cu baze de date suplimentare ED, atunci trebuie să:

1. Creați o copie de rezervă a bazei de date împreună cu baze de date suplimentare utilizând programul Alta-GTD. Pentru a face acest lucru, trebuie să rulați Service - Administrator SQL - Backup baza de date SQL date, iar apoi răspunde afirmativ la întrebarea despre necesitate Rezervă copie baze suplimentare ED. După operaţia de creare copii de rezervă vor fi completate baze de date suplimentare, programul va afișa o fereastră de informații cu o descriere a tuturor fișierelor de rezervă create. Aceste fișiere, precum și fișierul de rezervă al bazei de date de lucru, trebuie să fie transferate pe un alt server SQL.

2. Restaurați bazele de date din copii de rezervă. Dacă serverul are deja o bază de date cu același nume, atunci aceasta trebuie restaurată cu un alt nume (vezi secțiunea 1).

3. Dacă baza de date de lucru a fost redenumită în timpul recuperării, atunci trebuie să rulați scriptul pentru toate bazele de date suplimentare:

UPDATE [Additional_Database_Name].. SET = "_gtd_ed@Main_Database_Name"

4. Dacă una sau mai multe baze de date suplimentare au fost redenumite în timpul recuperării, atunci trebuie executat un script pentru fiecare dintre ele

UPDATE [Main_Database_Name].. SET = "New_Additional_Database_Name" WHERE = "Old_Additional_Database_Name"