Om du har funderat på att flytta din SQL Server-miljö till Azure har du bara haft ett par alternativ. Först kan du använda PaaS-lösningen i Azure SQL Database och flytta en enda databas eller använda en elastisk pool. Ditt andra alternativ har varit en IaaS-lösning med Azure Virtual-maskiner som kör Microsoft SQL Server. Vi kommer snart att ha ett tredje alternativ som kallas en SQL Database Managed Instance.
Hanterade instanser överbryggar klyftan mellan lokal SQL Server och Azure SQL-databas
Managed Instances introducerades först på Microsoft Build-konferensen våren 2017, och hittills har förhandsvisningen varit begränsad till ett litet antal kunder och konsulter. Hanterade instanser kan betraktas som en hybrid mellan en fullständig version av SQL Server och Azure SQL Database. Enstaka och elastiska databaser är byggda på en databas-omfattad programmeringsmodell och Managed Instances är byggda på en instans-scoped programmeringsmodell. Detta gör hanterade instanser mer kompatibla med lokal SQL Server.
Hanterade instanser ger mycket mer en känsla av en lokal SQL Server, men är ändå byggda på samma infrastruktur som Azure SQL Database. Det som skiljer den från Azure SQL Database är att den presenterar en hel SQL Server-instans för kunden. I Azure SQL Database konfigurerar du en server, som egentligen är en behållare, och sedan kan ha flera databaser i den servern, men de kan inte enkelt prata med varandra. Med Managed Instances finns alla databaser inom instansen på samma faktiska SQL Server, så du har fullt stöd för korsdatabasfrågor. Detta är en stor funktion för många applikationer som annars inte passade bra för Azure SQL Database, och jag tror att det kommer att tillåta många fler SQL Server-applikationer att flytta in i molnet.
Funktionalitet som är på instansnivå stöds nu. Detta inkluderar saker som globala temporära tabeller, SQL Server Agent, Service Broker, replikering, SQL Audit och Common Language Runtime (CLR). Hanterade instanser kan också stödja databaser upp till 35 TB i storlek. För närvarande är den största kapaciteten för en Azure SQL-databas 4 TB i toppskiktet. Jag misstänker att detta kan ändras snart och återigen kommer att öppna upp molnet för fler applikationer.
Managed Instances får också dra nytta av alla funktioner i PaaS-plattformen, för att inkludera automatiska säkerhetskopieringar, hotdetektering, sårbarhetsbedömningar, hög tillgänglighet, geo-replikering, databasrådgivare och mycket mer. Jag har sett en presentation som diskuterade hur den automatiska failover-processen fungerar och lärde mig att objekt på servernivå replikeras till failover-instansen. Det betyder att saker som inloggningar och jobb – smärtpunkter för många av våra miljöer idag – hanteras åt dig.
Under det senaste året har jag hjälpt många kunder att migrera till Azure SQL Database, och en av de främsta utmaningarna är att migrera data. Du kan inte bara utföra en SQL Server-säkerhetskopiering och återställa till Azure SQL Database. Jag blev mycket glad över att höra att vi med SQL Database Managed Instances kan använda inbyggda SQL Server-säkerhetskopior och återställa till Managed Instances, men du måste använda mekanismen för säkerhetskopiering till URL. Detta kommer att göra migrering till hanterade instanser mycket enklare, men eftersom hanterade instanser är byggda på Azure SQL Database är detta en enkelriktad biljett:du kan inte säkerhetskopiera dina hanterade instansdatabaser och återställa tillbaka till den lokala. Om du någon gång bestämt dig för att återföra din databas till lokalt eller ut ur hanterade instanser, måste du exportera dina data.
Databaser på hanterade instanser är mycket mer redo att migrera till Azure SQL Databas
Å andra sidan, eftersom de är byggda på Azure SQL Database-plattformen, kan de individuella databaserna du lägger in i en hanterad instans migreras till sina egna individuella Azure SQL-databaser. Detta gör en Managed Instance till en perfekt språngbräda, där du kan räkna ut de isoleringskomplikationer som hindrar dig från att migrera direkt till PaaS.
Jag är nyfiken på att replikering stöds. Jag har ännu inte kunnat ta reda på om en Managed Instance-databas kan vara en utgivare eller om den bara kan vara en prenumerant, som en Azure SQL-databas. Om det kan vara en utgivare kan det vara ett effektivt sätt att migrera tillbaka till lokaler. Jag hoppas verkligen att vi inom en snar framtid kommer att ha möjlighet att även återställa inbyggda SQL Server-säkerhetskopior till singleton Azure SQL-databaser. Det verkar som om tekniken finns där, den behöver bara utökas för den befintliga PaaS-miljön.
En annan intressant observation om Managed Instances är att eftersom tekniken är byggd på Azure SQL Database-modellen kommer SQL Server-versionen att följa den för Azure SQL Database. Detta kan komplicera saker med leverantörssupport. Många leverantörer kommer att ange att de certifierar sin produkt på SQL Server version X. Även om Managed Instances kommer att stödja nästan alla funktioner i SQL Server 2017, kommer den inte att använda samma version, så programversionskontroller kommer att vara komplicerade. Ditt bästa sätt att göra här är att trycka tillbaka på leverantören, eftersom Microsoft sannolikt inte kommer att vackla på denna hållning, och jag tvivlar inte på att några av dessa samtal kommer att bli utmanande.
Kommer leverantörer att gå igenom ansträngningen att certifiera sina produkter på Managed Instances, eller kommer detta att bli ett problem som vi upplevde med virtualisering? Under virtualiseringens tidiga dagar uppgav många leverantörer att de inte stödde deras produkter som kördes virtualiserat, men Microsoft stödde fullt ut Windows X och SQL Server X som virtualiserades. Förhoppningsvis kommer vi att se leverantörer komma ombord och certifiera sina produkter på Managed Instances. Jag ser verkligen några SQL Server-pionjärer där ute som kommer att flytta till hanterade instanser efter sina egna tester.
Varje gång en kund vill migrera till molnet är säkerheten ett stort problem. Managed Instances erbjuder VNET-stöd med privata IP-adresser och VPN till lokala nätverk. Detta kan tillåta en klient att skydda sin miljö från det offentliga internet och ha full isolering.
Jag är exalterad över hanterade instanser och kan verkligen inte vänta tills det är mer allmänt tillgängligt. För klienter som vill ha en hanterad miljö, men som behöver en mer funktionsrik lösning än en enkel eller elastisk Azure SQL-databas, tror jag att hanterade instanser skulle passa perfekt. Det har funnits ett gap mellan Azure SQL Database och SQL Server på en Azure VM, eftersom många kunder behöver mer än Azure SQL Database erbjuder, men SQL Server på en Azure VM är fortfarande mer underhåll och ansvar än de ville. Hanterade instanser överbryggar verkligen det gapet. De stöder mycket större databas, möjliggör enklare datamigreringar, tillåter korsdatabasförfrågningar och borde inte kräva några kodändringar eftersom plattformen är så mycket kompatibel med lokal SQL Server.
Sammanfattningsvis, om din organisation överväger att flytta till en värdmiljö inom Azure SQL Database-plattformen, kommer du att kunna välja mellan individuella Azure SQL-databaser, elastiska pooler eller hanterade instanser. Beroende på dina applikationsbehov bör en av dessa lösningar passa bra. Annars har du också möjlighet att köra en traditionell SQL Server-instans på en virtuell Azure-maskin, som erbjuder trevliga funktioner som hanterade säkerhetskopior, geo-replikering, Azure Site Recovery och så mycket mer. Microsoft fortsätter att investera i Azure-plattformen genom att leverera nya produkter och funktioner som deras kunder behöver, och den kommande utgåvan av Managed Instances är ett fortsatt bevis på detta fokus. Håll utkik eftersom vi har blivit lovade en offentlig förhandsvisning inom en mycket nära framtid.