Migrarea unei baze de date Access la SQL Server

Migrarea unei baze de date Access la SQL Server

Cu toții avem limite și o bază de date Access nu face excepție. De exemplu, o bază de date Access are o limită de dimensiune de 2 GB și nu acceptă mai mult de 255 de utilizatori simultani. Așadar, când este timpul ca baza de date Access să treacă la nivelul următor, puteți migra la SQL Server. SQL Server (dacă este local sau în cloud Azure) acceptă cantități mai mari de date, utilizatori mai concurenti și are o capacitate mai mare decât motorul de baze de date JET/ACE. Acest ghid vă oferă o pornire lină a călătoriei SQL Server, vă ajută să păstrați soluțiile front-end pe care le-ați creat și, sperăm, vă motivează să utilizați Access pentru soluții de bază de date viitoare. Expertul Migrare a fost eliminat din Access în Access 2013, Deci acum puteți utiliza Microsoft SQL Server Migration Assistant (SSMA). Pentru a migra cu succes, urmați aceste etape.

Etapele migrării bazei de date la SQL Server

Înainte de a începe

Următoarele secțiuni furnizează fundal și alte informații pentru a vă ajuta să începeți lucrul.

Despre bazele de date scindate

Toate obiectele bazei de date Access pot fi într-un singur fișier bază de date sau pot fi stocate în două fișiere bază de date: o bază de date front-end și o bază de date back-end. Aceasta se numește scindarea bazei de date și este proiectată pentru a facilita partajarea într-un mediu de rețea. Fișierul bază de date back-end trebuie să conțină doar tabele și relații. Fișierul front-end trebuie să conțină numai toate celelalte obiecte, inclusiv formulare, rapoarte, interogări, macrocomenzi, module VBA și tabele legate în baza de date back-end. Atunci când migrați o bază de date Access, este similară cu o bază de date scindată din acel SQL Server acționează ca un nou back-end pentru datele care se află acum pe un server.

Ca rezultat, puteți menține în continuare baza de date Access front-end cu tabele legate la tabelele SQL Server. În mod eficient, puteți obține beneficiile dezvoltării rapide a aplicațiilor pe care le oferă o bază de date Access, împreună cu scalabilitatea SQL Server.

Beneficii SQL Server

Mai aveți nevoie de câteva convingător pentru a migra la SQL Server? Iată câteva avantaje suplimentare la care să vă gândiți:

  • Mai mulți utilizatori simultani    SQL Server poate gestiona mai mulți utilizatori simultani decât Access și minimizează cerințele de memorie atunci când sunt adăugați mai mulți utilizatori.

  • Disponibilitate crescută    Cu SQL Server, puteți să faceți backup dinamic, fie incrementală, fie completă, baza de date în timp ce este în uz. În consecință, nu trebuie să impuneți utilizatorilor să închidă baza de date pentru a crea o copie backup a datelor.

  • Performanță și scalabilitate ridicate    Baza de date SQL Server funcționează de obicei mai bine decât o bază de date Access, mai ales cu o bază de date mare, de dimensiune TB. De asemenea, procesele SQL Server interoghează mult mai rapid și mai eficient prin procesarea interogărilor în paralel, utilizând mai multe fire native într-un singur proces, pentru a gestiona solicitările de utilizator.

  • Securitate îmbunătățită    Utilizând o conexiune de încredere, SQL Server se integrează cu securitatea sistemului Windows pentru a oferi un singur acces integrat la rețea și la baza de date, care utilizează cel mai bun sistem de securitate. Astfel, este mult mai ușor să gestionați scheme complexe de securitate. SQL Server este spațiul de stocare ideal pentru informații sensibile, cum ar fi numerele de securitate socială, datele cardului de credit și adresele confidențiale.

  • Recuperarea imediată    Dacă sistemul de operare se defectează sau se stinge curentul, SQL Server poate recupera automat baza de date într-o stare coerentă într-o chestiune de minute și fără intervenția administratorului bazei de date.

  • Utilizarea VPN    Accesul și rețelele virtuale private (VPN) nu se mai înțeleg. Dar, cu SQL Server, utilizatorii la distanță pot utiliza în continuare utilizarea bazei de date front-end Access pe un desktop și pe serverul de back-end SQL situat în spatele paravanului de protecție VPN.

  • Azure SQL Server    În plus față de beneficiile SQL Server, oferă scalabilitate dinamică fără întreruperi, optimizare inteligentă, scalabilitate globală și disponibilitate, eliminarea costurilor hardware și administrarea redusă.

Alegeți cea mai bună opțiune Azure SQL Server

Dacă migrați la Azure SQL Server, există trei opțiuni din care să alegeți, fiecare cu avantaje diferite:

  • Bază de date unică/bazine elastice    Această opțiune are propriul set de resurse gestionate printr-un server de bază de date SQL. O bază de date unică este ca o bază de date conținută în SQL Server. De asemenea, puteți să adăugați o piscină elastică, care este o colecție de baze de date cu un set partajat de resurse gestionate prin serverul de bază de date SQL. Caracteristicile SQL Server utilizate cel mai frecvent sunt disponibile cu backupuri, corecții și recuperare încorporate. Dar nu există nicio durată de întreținere exactă garantată și migrarea de la SQL Server poate fi dificilă.

  • Instanță gestionată    Această opțiune este o colecție de baze de date de sistem și de utilizator cu un set partajat de resurse. O instanță gestionată este ca o instanță a bazei de date SQL Server care este foarte compatibilă cu SQL Server local. O instanță gestionată are copii de rezervă predefinite, corecție, recuperare și este ușor să migrați din SQL Server. Cu toate acestea, există un număr mic de caracteristici SQL Server care nu sunt disponibile și nu există nicio durată de întreținere exactă garantată.

  • Mașină virtuală Azure    Această opțiune vă permite să ruleze SQL Server într-o mașină virtuală în cloud Azure. Aveți control total asupra motorului SQL Server și o cale de migrare simplă. Dar trebuie să vă gestionați backupurile, corecțiile și recuperarea.

Pentru mai multe informații, consultați alegerea căii de migrare a bazei de date la Azure și alegerea opțiunii SQL Server corecte în Azure.

Primii pași

Există câteva probleme pe care le puteți aborda în față, care vă pot ajuta să Simplificați procesul de migrare înainte să rulați SSMA:

  • Adăugarea indicilor de tabel și a cheilor primare    Asigurați-vă că fiecare tabel Access are un index și o cheie primară. SQL Server necesită ca toate tabelele să aibă cel puțin un index și necesită un tabel legat pentru a avea o cheie primară dacă tabelul poate fi actualizat.

  • Verificarea relațiilor cheie primare/străine    Asigurați-vă că aceste relații se bazează pe câmpuri cu tipuri și mărimi de date consistente. SQL Server nu acceptă coloane asociate cu tipuri de date și mărimi diferite în restricții pentru cheia străină.

  • Eliminarea coloanei atașare    SSMA nu migrează tabelele care conțin coloana atașare.

Înainte de a executa SSMA, efectuați pașii următori.

  1. Închideți baza de date Access.

  2. Asigurați-vă că utilizatorii curenti conectați la baza de date, de asemenea, închid baza de date.

  3. Dacă baza de date se află în formatul de fișier. mdb, Eliminați securitatea la nivel de utilizator.

  4. Faceți backup bazei de date. Pentru mai multe informații, consultați protejarea datelor cu ajutorul proceselor de backup și restaurare.

Sfat    Luați în considerare instalarea Microsoft SQL Server Express Edition pe desktop, care acceptă până la 10 GB și este o modalitate gratuită și mai ușoară de a parcurge și a verifica migrarea. Atunci când vă conectați, utilizați LocalDB ca instanță de bază de date.

Sfat    Dacă este posibil, utilizați o versiune independentă de Access. Dacă puteți utiliza Office 365, apoi utilizați motorul de baze de date Access 2010 pentru a migra baza de date Access atunci când utilizați SSMA. Pentru mai multe informații, consultați motorul de baze de date Microsoft Access 2010redistributed.

Rulează SSMA

Microsoft furnizează Microsoft SQL Server Migration Assistant (SSMA) pentru a simplifica migrarea. SSMA migrează în principal tabelele și selectează interogări fără parametri. Formularele, rapoartele, macrocomenzile și modulele VBA nu se convertesc. Explorer-ul SQL Server metadata afișează obiectele bazei de date Access și obiectele SQL Server care vă permit să revizuiți conținutul curent al ambelor baze de date. Aceste două conexiuni sunt salvate în fișierul de migrare dacă vă hotărâți să transferați obiecte suplimentare în viitor.

Notă    Procesul de migrare poate dura un timp, în funcție de dimensiunea obiectelor bazei de date și de volumul de date care trebuie transferate.

  1. Pentru a migra o bază de date utilizând SSMA, Descărcați mai întâi și instalați software-ul făcând dublu clic pe fișierul msi descărcat. Asigurați-vă că instalați versiunea 32 sau 64 de biți corespunzătoare pentru computer.

  2. După ce instalați SSMA, deschideți-l pe desktop, preferabil de pe computer cu fișierul bază de date Access.

    De asemenea, puteți să îl deschideți pe un computer care are acces la baza de date Access din rețea într-un folder partajat.

  3. Urmați instrucțiunile de la început din SSMA pentru a furniza informații de bază, cum ar fi locația SQL Server, baza de date Access și obiectele care migrează, informațiile de conexiune și dacă doriți să creați tabele legate.

  4. Dacă migrați la SQL Server 2016 sau o versiune mai recentă și doriți să actualizați un tabel legat, adăugați o coloană ROWVERSION selectând revizuire instrumente > Setări proiect > General.

    Câmpul ROWVERSION vă ajută să evitați conflictele de înregistrări. Access utilizează acest câmp ROWVERSION într-un tabel legat SQL Server pentru a determina când s-a actualizat ultima dată înregistrarea. De asemenea, dacă adăugați câmpul ROWVERSION la o interogare, Access îl utilizează pentru a selecta din nou rândul după o operațiune de actualizare. Acest lucru îmbunătățește eficiența, ajutând la evitarea scrierii erorilor de conflict și la înregistrarea scenariilor de ștergere care se pot întâmpla atunci când Access detectează rezultate diferite din prezentarea inițială, cum ar putea apărea cu tipurile de date număr punct plutitor și triggere care se modifică coloane. Totuși, evitați să utilizați câmpul ROWVERSION în formulare, rapoarte sau cod VBA. Pentru mai multe informații, consultați ROWVERSION.

    Notă    Evitați confuzia ROWVERSION cu marcaje temporale. Deși timestamp-ul de cuvinte cheie este un sinonim pentru ROWVERSION în SQL Server, nu puteți utiliza ROWVERSION ca o modalitate de a marca timestamp o intrare de date.

  5. Pentru a seta tipuri de date precise, selectați revizuire instrumente > Setări proiect > mapare tip. De exemplu, dacă stocați doar text în limba engleză, puteți să utilizați tipul de date varchar , mai degrabă decât nvarchar .

Conversia obiectelor

SSMA convertește obiectele Access la obiectele SQL Server, dar nu copiază obiectele imediat. SSMA furnizează o listă a următoarelor obiecte de migrat, astfel încât să puteți decide dacă doriți să le mutați în baza de date SQL Server:

  • Tabele și coloane

  • Selectați interogări fără parametri.

  • Chei primare și externe

  • Indexuri și valori implicite

  • Verificarea restricțiilor (permiteți proprietății coloană de lungime zero, regulă de validare a coloanelor, validare tabel)

Ca o practică optimă, utilizați raportul de evaluare SSMA, care afișează rezultatele conversiei, inclusiv erorile, avertizările, mesajele informative, estimările de timp pentru efectuarea migrării și pașii individuali de corecție a erorilor de efectuat înainte de a muta efectiv obiecte.

Conversia obiectelor bazei de date preia definițiile obiectului din metadatele Access, le convertește în sintaxa Transact-SQL (T-SQL)echivalentă, apoi încarcă aceste informații în proiect. Apoi, puteți vizualiza obiectele SQL Server sau SQL Azure și proprietățile lor utilizând SQL Server sau SQL Azure metadata Explorer.

Pentru a efectua conversia, încărcarea și migrarea obiectelor la SQL Server, urmați acest ghid.

Sfat    După ce ați migrat cu succes baza de date Access, Salvați fișierul de proiect pentru utilizare ulterioară, astfel încât să puteți migra datele din nou pentru testare sau pentru migrarea finală.

Legarea tabelelor

Luați în considerare instalarea celei mai recente versiuni de drivere SQL Server OLE DB și ODBC în loc să utilizați driverele SQL Server Native care sunt livrate cu Windows. Driverele mai noi sunt mai rapide, dar ele acceptă caracteristici noi în Azure SQL, pe care driverele anterioare nu le fac. Puteți instala driverele pe fiecare computer în care se utilizează baza de date transformată. Pentru mai multe informații, consultați Microsoft OLE DB driver 18 pentru SQL Server și Microsoft ODBC Driver 17 pentru SQL Server.

După ce migrați tabelele Access, puteți să creați o legătură la tabelele din SQL Server, care vă găzduiește acum datele. Conectarea direct din Access vă oferă, de asemenea, o modalitate mai simplă de a vizualiza datele în loc să utilizați instrumentele de gestionare SQL Server mai complexe.  Puteți să interogați și să editați date legate, în funcție de permisiunile configurate de administratorul bazei de date SQL Server.

Notă    Dacă creați un DSN ODBC atunci când vă legați la baza de date SQL Server în timpul procesului de legare, creați același DSN pe toate mașinile care utilizează noua aplicație sau utilizați programatic șirul de conexiune stocat în fișierul DSN.

Pentru mai multe informații, consultați legarea la sau importul datelor dintr-o bază de date AZURE SQL Server și importul sau legarea la datele dintr-o bază de date SQL Server.

Sfat   Nu uitați să utilizați Managerul de tabele legate în Access la tabele de reîmprospătare și legați convenabile. Pentru mai multe informații, consultați gestionarea tabelelor legate.

Testarea și revizuirea

Următoarele secțiuni descriu problemele comune pe care le puteți întâlni în timpul migrării și cum să le gestionați.

Interogări

Se convertesc doar interogările de selectare; alte interogări nu sunt, inclusiv interogările de selectare care preiau parametri. Unele interogări pot să nu se convertească complet și SSMA raportează erorile de interogare în timpul procesului de conversie. Puteți edita manual obiectele care nu se convertesc utilizând sintaxa T-SQL. Erorile de sintaxă pot necesita, de asemenea, conversia manuală a funcțiilor și tipurilor de date specifice Access la cele SQL Server. Pentru mai multe informații, consultați comparație între Access SQL și SQL Server TSQL.

Tipuri de date

Access și SQL Server au tipuri de date similare, dar rețineți următoarele probleme potențiale.

Număr mare    Tipul de date număr mare stochează o valoare non-monetară, numerică și este compatibilă cu tipul de date SQL bigint. Puteți utiliza acest tip de date pentru a calcula eficient numere mari, dar necesită utilizarea Access 16 (16.0.7812 sau o versiune mai recentă). accdb format de fișier bază de date și funcționează mai bine cu versiunea 64-bit de Access. Pentru mai multe informații, consultați utilizarea tipului de date număr mare și alegeți între versiunea 64 sau 32-bit de Office.

Da/Nu    În mod implicit, o coloană da/nu Access este transformată într-un câmp de biți SQL Server. Pentru a evita blocarea înregistrărilor, Asigurați-vă că este setat câmpul bit pentru a interzice valorile NULL. ÎN SSMA, puteți selecta coloana bit pentru a seta proprietatea permite nulls la nu. În TSQL, utilizați declarațiile Creare tabel sau Alter table .

Dată și oră    Există mai multe considerații de dată și oră:

  • Dacă nivelul de compatibilitate al bazei de date este 130 (SQL Server 2016) sau o versiune mai recentă, iar un tabel legat conține una sau mai multe coloane DateTime sau DateTime2, tabelul poate returna mesajul #deleted în rezultate. Pentru mai multe informații, consultați accesarea tabelului legat la baza de date SQL-Server returnează #deleted.

  • Utilizați tipul de dată DateTime2 care are un interval de date mai mare decât DateTime.

  • Atunci când interogați pentru date calendaristice în SQL Server, luați în considerare timpul, precum și data. De exemplu:

    • DateOrdered dintre 1/1/19 și 1/31/19 pot să nu includă toate comenzile.

    • DateOrdered între 1/1/19 00:00:00 AM și 1/31/19 11:59:59 PM include toate comenzile.

Atașare   Tipul de date atașare stochează un fișier în baza de date Access. În SQL Server, aveți mai multe opțiuni de luat în considerare. Puteți extrage fișierele din baza de date Access, apoi luați în considerare stocarea linkurilor la fișierele din baza de date SQL Server. Ca alternativă, puteți utiliza FILESTREAM, FileTables sau Remote BLOB Store (RBS) pentru a menține atașările stocate în baza de date SQL Server.

Hyperlink    Tabelele Access au coloane hyperlink pe care nu le acceptă SQL Server. În mod implicit, aceste coloane vor fi transformate în coloane nvarchar (Max) în SQL Server, dar puteți particulariza maparea pentru a alege un tip de date mai mic. În soluția Access, puteți utiliza în continuare comportamentul hyperlink în formulare și rapoarte dacă setați proprietatea hyperlink pentru ca controlul să fie True.

Câmp multi-valoare    Câmpul Access multivaloare este convertit în SQL Server ca un câmp ntext care conține setul de valori delimitat. Întrucât SQL Server nu acceptă un tip de date multi-valoare care modelează o relație mai mulți-la-mai-mulți, poate fi necesară muncă de proiectare și de conversie suplimentară.

Pentru mai multe informații despre cartografierea tipurilor de date Access și SQL Server, consultați compararea tipurilor de date.

Notă    Câmpurile multivaloare nu sunt convertite și au fost întrerupte în Access 2010.

Pentru mai multe informații, consultați Tipuri de dată și oră, tipuri de șir și binareși tipuri numerice.

Visual Basic

Deși VBA nu este acceptat de SQL Server, rețineți următoarele probleme posibile:

Funcțiile VBA în interogări    Interogările Access acceptă funcțiile VBA pentru date într-o coloană de interogare. Dar interogările Access care utilizează funcții VBA nu se pot executa în SQL Server, astfel încât toate datele solicitate să fie transferate către Microsoft Access pentru procesare. În majoritatea cazurilor, aceste interogări ar trebui să fie convertite în interogările prin directă.

Funcții definite de utilizator în interogări    Interogările Microsoft Access acceptă utilizarea funcțiilor definite în modulele VBA pentru a procesa datele transmise acestora. Interogările pot fi interogări independente, declarații SQL în sursele de înregistrări formular/raport, sursele de date din casetele combo și casetele listă din formulare, rapoarte și câmpuri de tabel și expresii implicite sau regulă de validare. SQL Server nu poate executa aceste funcții definite de utilizator. Poate fi necesar să reproiectați manual aceste funcții și să le transformați în proceduri stocate în SQL Server.

Optimizarea performanței

De departe, cea mai importantă modalitate de a optimiza performanța cu noul server SQL back-end este să decideți când să utilizați interogări locale sau la distanță. Atunci când migrați datele în SQL Server, treceți de asemenea de la un server de fișiere la un model de calcul al bazei de date client-server. Urmați aceste reguli generale:

  • Rulează interogări mici, doar în citire pentru clientul pentru un acces mai rapid.

  • Rulează interogări lungi, de citire/scriere pe server, pentru a profita de puterea de procesare mai mare.

  • Minimizați traficul în rețea cu filtre și agregare pentru a transfera numai datele de care aveți nevoie.

Optimizarea performanței în modelul de bază de date server client

Pentru mai multe informații, consultați crearea unei interogări prin parolă.

Următoarele sunt orientări suplimentare, recomandate.

Puneți logica pe server    Aplicația poate utiliza, de asemenea, vizualizări, funcții definite de utilizator, proceduri stocate, câmpuri calculate și triggere pentru a centraliza și a partaja logica aplicațiilor, regulile de afaceri și politicile, interogările complexe, validarea datelor și codul de integritate referențială în Server, mai degrabă decât pe client. Întrebați-vă, poate această interogare sau activitate să fie efectuată pe server mai bine și mai rapid? În cele din urmă, testați fiecare interogare pentru a asigura performanțe optime.

Utilizarea vizualizărilor în formulare și rapoarte    În Access, procedați astfel:

  • Pentru formulare, utilizați o vizualizare SQL pentru un formular doar în citire și o vizualizare indexată SQL pentru un formular de citire/scriere ca sursă de înregistrări.

  • Pentru rapoarte, utilizați o vizualizare SQL ca sursă de înregistrări. Cu toate acestea, creați o vizualizare separată pentru fiecare raport, astfel încât să puteți actualiza mai ușor un anumit raport, fără a afecta alte rapoarte.

Minimizarea încărcării datelor dintr-un formular sau raport    Nu se afișează datele până când utilizatorul nu îl solicită. De exemplu, păstrați proprietatea RecordSource necompletată, faceți utilizatorii să selecteze un filtru din formular, apoi popula proprietatea RecordSource cu filtrul. Sau utilizați clauza WHERE of obiectului DoCmd. DeschidereFormular și obiectului DoCmd. DeschidereRaport pentru a afișa înregistrările exacte necesare de utilizator. Luați în considerare dezactivarea navigării în înregistrări.

Aveți grijă cu interogările eterogene   Evitați să utilizați o interogare care combină un tabel de acces local și un tabel legat de SQL Server, denumită uneori interogare hibridă. Acest tip de interogare necesită încă acces pentru a descărca toate datele SQL Server la computerul local, apoi a rulat interogarea, nu rulează interogarea în SQL Server.

Când se utilizează tabele locale    Luați în considerare utilizarea tabelelor locale pentru date care se modifică rareori, cum ar fi lista de stări sau provincii dintr-o țară sau regiune. Tabelele statice sunt utilizate deseori pentru filtrare și pot funcționa mai bine în front-end Access.

Pentru mai multe informații, consultați consultant pentru optimizarea motorului de baze de date, Utilizați Analizatorul de performanță pentru a optimiza o bază de date Accessși a optimiza aplicațiile Microsoft Office Access legate la SQL Server.

Consultați și

Ghid de migrare a bazelor de date Azure

Blogul Microsoft Data migration

Microsoft Access la migrarea SQL Server, conversia și

Moduri de partajare a unei baze de date desktop Access

Notă:  Această pagină a fost tradusă automatizat și poate conține erori gramaticale sau inexactități. Scopul nostru este ca acest conținut să vă fie util. Ne puteți spune dacă informațiile au fost utile? Aici se află articolul în limba engleză, ca referință.

Extindeți-vă competențele Office
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă utilizatorilor Office Insider

Au fost utile aceste informații?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×