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:
1CREATE CREDENTIAL [https://<storage name>.blob.core.windows.net/<container>]
2WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
3SECRET = 'sv=2017*******'
  1. Ezek után ki lehet adni a RESTORE DATABASE parancsot, az előzőekben megadott behelyettesítésekkel:
1RESTORE DATABASE [WideWorldImporters] FROM URL =
2'https://<storage name>.blob.core.windows.net/<container>/WideWorldImporters-Standard.bak'
  1. 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 :)