sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2016 – Introduktion till Stretch Database

Nej, det är inte den sträcka du letar efter

Från och med SQL Server 2016 kommer du att ha möjlighet att lagra delar av en databas i molnet. Denna nya förmåga är känd som Stretch Database och funktionen kommer att vara fördelaktig för dem som behöver behålla transaktionsdata under långa perioder och de som vill spara pengar på lagring. Att sömlöst kunna migrera data till Microsoft Azure Cloud ger dig möjligheten att arkivera data utan att behöva ändra hur dina applikationer frågar efter data.

I SQL Server 2016 Community Technology Preview 2 (CTP2) migrerar Stretch Database hela tabeller. Om din databas redan är inställd för att lagra arkivdata i separata tabeller från nuvarande data, kommer du enkelt att kunna migrera arkivdata till Azure. När du har aktiverat Stretch Database migreras dina data tyst till en Azure SQL-databas. Stretch Database utnyttjar processorkraften i Azure för att köra frågor mot fjärrdata genom att skriva om frågan. Du kommer att se detta som en "remote query"-operatör i frågeplanen.

Ett enkelt sätt att identifiera databaser och tabeller som är kvalificerade för Stretch-aktiverade är att ladda ner och köra SQL Server 2016 Upgrade Advisor och köra Stretch Database Advisor. Aaron Bertrand (@AaronBertrand) skrev nyligen om detta:

  • Identifiera kandidattabeller för SQL Server 2016 Stretch-databaser

Begränsningar för Stretch Database

Alla bord kommer inte att vara kvalificerade för Stretch-aktiverade. Vissa tabellegenskaper, data och kolumntyper, begränsningar och index stöds inte, till exempel:

  • Minnesoptimerade och replikerade tabeller
  • Tabeller som innehåller FILESTREAM-data, använder Ändringsspårning eller Ändringsdata
  • Datatyper som tidsstämpel, sql_variant, XML, geografi eller kolumner som alltid är krypterade
  • Kontrollera och standardbegränsningar eller främmande nyckelbegränsningar som refererar till tabellen
  • XML, fulltext, rumslig, klustrad kolumnlagring och indexerade vyer som refererar till den Stretch-aktiverade tabellen
  • Du kan inte köra UPDATE- eller DELETE-satser, eller köra CREATE INDEX- eller ALTER INDEX-operationer på en Stretch-aktiverad tabell

För en fullständig lista över begränsningar kan du besöka:Krav och begränsningar för Stretch Database.

Konfigurera Stretch Database

Att komma igång är ingen komplicerad uppgift. Du behöver ett Azure-konto och aktivera sedan Stretch Database på instansen.

Så här aktiverar du Stretch Database på en instanskörning:

EXEC sys.sp_configure N'remote data archive', '1';
RECONFIGURE;
GO

För denna demo kommer jag att använda databasen AdventureWorks2014 på en SQL Server 2016 CPT2-instans. Jag börjar med att skapa en ny tabell:

USE [AdventureWorks2014];
GO
 
CREATE TABLE dbo.StretchTest
(
  FirstName VARCHAR(50),
  LastName  VARCHAR(50)
);
GO

Och sedan fyller jag i testtabellen StretchTest med lite data:

USE [AdventureWorks2014];
GO
 
INSERT INTO dbo.StretchTest(FirstName, LastName)
VALUES('Paul', 'Randal'),  ('Kimberly', 'Tripp'),('Jonathan', 'Kehayias'),
      ('Erin', 'Stellato'),('Glenn', 'Berry'),   ('Tim', 'Radney');
GO

Jag har nu en tabell som jag kan sträcka ut till Microsoft Azure Cloud. För att göra detta använder jag GUI genom att högerklicka på AdventureWorks2014, välja Tasks och välja Enable Database for Stretch.

Guiden Aktivera databas för Stretch öppnas enligt nedan:

Jag klickar på nästa:

Och logga in på mitt Microsoft Azure-konto:

Jag uppmanas sedan att verifiera vilket konto jag vill använda:

Sedan väljer jag vilken Azure-plats jag vill använda och anger en administratörsinloggning och lösenord. När du gör detta, se till att notera administratörens användarnamn och lösenord eftersom du kommer att behöva detta i framtiden för att återansluta till Azure SQL-databasen om du måste återställa databasen.

Jag klickar sedan på nästa:

Och klicka på Slutför och databasen börjar tillhandahålla till Azure SQL Database Server.

Jag har precis skapat en säker länkad serverdefinition på min lokala server som har den fjärranslutna Azure SQL-databasen som slutpunkt. Jag kan se detta i Serverobjekt, Länkade servrar samt i mitt Azure-konto under SQL-databaser. Observera att endast systemprocesser kan använda denna länkade server; användarinloggningar kan inte skicka frågor via den länkade servern till fjärrändpunkten.

Nu när Stretch Database är aktiverad för instansen och för AdventureWorks2014-databasen kan jag nu sträcka ut min nya tabell. För att sträcka ut tabellen till Azure måste jag ändra tabellen och aktivera fjärrdataarkiv.

USE [AdventureWorks2014];
GO
 
ALTER TABLE [StretchTest]
ENABLE REMOTE_DATA_ARCHIVE WITH ( MIGRATION_STATE = ON );
GO

Förutom nya funktioner med SQL Server 2016 finns det några nya DMV:er också. För att övervaka migreringen av data till Azure kan du fråga sys.dm_db_rda_migration_status. När jag frågade DMV efter att ha aktiverat fjärrdataarkiv kunde jag se att de 6 raderna migrerades:

Säkerhetskopiering och återställning av en Stretch-databas

För närvarande i SQL Server 2016 CTP2 när en databas som är Stretch-aktiverad säkerhetskopieras, skapas en ytlig säkerhetskopia som inte inkluderar data som har migrerats till Azure SQL-databasen. Det förväntas att med RTM-utgåvan av SQL Server 2016 kommer säkerhetskopiering av en Stretch-aktiverad databas att skapa en djup säkerhetskopia som kommer att innehålla både lokal och sträckt data.

När du återställer en databas som är Stretch-aktiverad måste du återansluta den lokala databasen till den fjärranslutna Azure SQL-databasen. Du gör detta genom att köra den lagrade proceduren sys.sp_reauthorize_remote_data_archive som en db_owner.

Om jag nu säkerhetskopierar den Stretch-aktiverade AdventureWorks2014-databasen och återställer den, kommer jag inte längre att kunna fråga StretchTest-tabellen förrän jag återansluter till Azure SQL Database genom att köra:

USE [AdventureWorks2014];
GO
 
EXEC sys.sp_reauthorize_remote_data_archive @azure_username, @azure_password;
GO

När jag har anslutit igen får jag ett meddelande som liknar det nedan och sedan kan jag fråga efter Stretched data igen:

Kopierar fjärrdatabasen 'RDAAdventureWorks201467B6D9D4-E8E0-4C54-B3EF-7C2D3F1326C4' till fjärrdatabasen 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04-26468D1'.kopiering av fjärrdatabas för att kopiera till fjärrdatabas för 26468D1. br />Fjärrdatabasen 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D' har slutfört kopieringen och är nu online.

När du återställer en Stretch-aktiverad databas till en annan instans måste den instansen ha "fjärrdataarkiv aktiverat". När du har återställt databasen och aktiverat "fjärrdataarkiv" är allt som krävs att återansluta till Azure SQL-databasen genom att köra den lagrade proceduren sys.sp_reauthorize_remote_data_archive.

Säkerhetskopiorna för Azure SQL-databaser för tjänstenivåerna Basic, Standard och Premium tas varje timme. Lagringsperioden för backup varierar beroende på tjänstenivån. I skrivande stund är det för basic 7 dagar, standard 14 dagar och premium är 35 dagar. Du kan återställa Azure SQL-databaser med hjälp av Microsoft Azure-webbportalen.

Avmigrera data

För att migrera data tillbaka till lokal lagring från en Azure SQL-databas måste du skapa en ny lokal tabell med samma schema som den Stretch-aktiverade tabellen. Du måste sedan kopiera data från den Stretch-aktiverade tabellen till den nya lokala tabellen. När data har kopierats släpper du den Stretch-aktiverade tabellen och byter namn på den nya lokala tabellen till namnet på den Stretch-aktiverade tabellen som just släpptes.

Du kan bara inaktivera Stretch för en databas när alla Stretch-aktiverade tabeller har tagits bort. Om du släpper en databas som är aktiverad för Stretch, tas den lokala databasen bort men fjärrdata inte; du måste släppa fjärrdatabasen från Azure Management Portal.

Sammanfattning

Stretch Database är ett enkelt sätt att migrera arkivdata till Microsoft Azure, om din databas stöder det. För närvarande i SQL Server 2016 CTP2 finns det många begränsningar med tabell-, data- och kolumnegenskaper, data och kolumntyper, begränsningar och index. Om du inte är begränsad av dessa begränsningar är Stretch Database ett enkelt sätt att migrera historisk data till Azure SQL Database och frigöra värdefull lokal lagring. Att hantera säkerhetskopior blir lite mer komplicerat eftersom dina data kommer att delas mellan lokalt och i molnet.

Jag ser fram emot att dessa begränsningar hävs i RTM-utgåvan, och jag är säker på att många av er kommer att kunna använda den här coola funktionen.


  1. Oracle sql handledning:Begränsning av datamängden

  2. FEL 1044 (42000):Åtkomst nekad för användare ''@'localhost' till databasen 'db'

  3. SqlServer:Inloggning misslyckades för användaren

  4. Disaster Recovery Planning för MySQL &MariaDB