Azure SQL Managed Instance: adatbázis helyreállítás

Az Azure SQL Managed Instance sorozat ezen részében az adatbázis helyreállítás mutatom be. Ez lenne az egyik módja, hogy a "földi" SQL adatbázisunkat "fellőjük" a felhőbe. Alapvetően van az Azure SQL Database szolgáltatás is, ahol mentésből nem tudjuk helyreállítani az adatbázist, erre más módszerek vannak. Itt megy a "hagyományos" RESTORE. Ismét meg kell jegyeznem, hogy ez egy preview állapotú szolgáltatás, így vannak korlátozások, amikbe én is beleütköztem:

  • Amennyiben van in-memory filegroup, abban nem lehet semmi, azaz nem lehet aktív in-memory objetum egyáltalán, ebben az esetben hibát kapok a helyreállítás során.
Msg 41915, Level 16, State 1, Line 11
Memory-optimized filegroup must be empty in order to be restored on General Purpose tier of SQL Database Managed Instance.
RESTORE DATABASE is terminating abnormally.
  • Nem tudom megadni az adatbázisok file elérési útjait, azt a szolgáltatás dönti el.

Egyelőre ennyi problémám volt, amit megosztanék, a többiről később, most nézzük, hogyan tudom helyreállítani az egyik minta adatbázist, a WideWorldImporters-t.

  1. Le kell tölteni a WideWorldImporters-Standard.bak file-t erről az oldalról: https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Standard.bak. A Full nem fog menni, mert vannak aktív in-memory objektumok, ebben nincs, szóval csak ennek a helyreállítása fog menni.
  2. Létre kell hozni egy Storage Account-ot az Azure Portálon a Create resource és a Stroage Account-ra kattintva

  3. A Create storage account oldalon meg kell adni az alábbiakat:
    • Name: ez lesz a neve,
    • Account kind: Blob storage
    • Location: ez a használati hely lesz, ezt ugyan abba az adatközpontba tettem ahol az SQL szolgáltatásom is van.
    • Replication: ez legyen LRS, de mindenki a saját igényeinek megfelelőt válasszon.
    • Resource group: itt ismét azt választottam, ahol az SQL szolgáltatás van.
    • Végül meg kell nyomni a create gombot a létrehozáshoz.

  4. Miután létrejött a storage account, megnyitás után létre kell hozni egy új Container-t a Containers beállításoknál az +Container gomb megnyomásával.

  5. Ezek után meg kell adni a nevét és a típusát, itt most az alábbi beállításokat adtam meg, majd OK.

  6. Miután ez elkészült meg kell nyitni a container-t. 

  7. Itt az Upload gombra kattintva fel kell tölteni az adatbázis mentést.

  8. Miután kiválasztottam a file-t, meg kell nyomni az upload gombot.

  9. A feltöltés befejezése után generálnom kell egy SAS tokent, amit a Storage account Shared Access signature beállításoknál tudok megtenni a Generate SAS and connection string gombra kattintva. 
  10. Innen majd a SAS token-re lesz szükségem, az első '?' karakter kivételével.

  11. Innentől átváltunk SSMS-re :) Létre kell hozni egy Credential-t, aminek a segítségével csatlakozunk a BLob container-hez: 
    CREATE CREDENTIAL [https://<storage name>.blob.core.windows.net/<container>] 
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = 'sv=2017*******'
    A <stroage name> és a <container> helyére be kell helyettesíteni a fentiekben létrehozott storage account és container neveket, majd a SECRET-hez jön az SAS token. Érthető okokból én nem írtam ide ami nekem kellett :)
  12. Ezek után ki lehet adni a RESTORE DATABASE parancsot, az előzőekben megadott behelyettesítésekkel:
    RESTORE DATABASE [WideWorldImporters] FROM URL =
    'https://<storage name>.blob.core.windows.net/<container>/WideWorldImporters-Standard.bak'
  13. Ha minden rendben ment, akkor az adatbázis máris megjelenik az SSMS-ben.

 

Pár érdekességet észrevettem még a helyreállítás során, illetve a storage oldalon,a mit az SQL managed instance-hez kapunk, ezt majd a következő bejegyzésekben fogom megosztani, pár, még nem dokumentált DMV-vel együtt :)

Add comment