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.
- 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.
- Létre kell hozni egy Storage Account-ot az Azure Portálon a Create resource és a Stroage Account-ra kattintva
- 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.
- 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.
- 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.
- Miután ez elkészült meg kell nyitni a container-t.
- Itt az Upload gombra kattintva fel kell tölteni az adatbázis mentést.
- Miután kiválasztottam a file-t, meg kell nyomni az upload gombot.
- 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.
- Innen majd a SAS token-re lesz szükségem, az első '?' karakter kivételével.
- 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 :)
- 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'
- 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 :)