sql >> Database >  >> RDS >> Sqlserver

SQL Server 2016 - Introduction to Stretch Database

Nee, dat is niet de rek die u zoekt

Te beginnen met SQL Server 2016 hebt u de mogelijkheid om delen van een database op te slaan in de cloud te hebben. Deze nieuwe mogelijkheid is bekend als Stretch Database en de functie zal gunstig zijn voor hen die dit nodig om transactionele gegevens voor langere tijd en die op zoek om geld te besparen op de opslag te houden. In staat zijn om naadloos te migreren gegevens naar de Microsoft Azure Cloud geeft je de mogelijkheid om te archiveren data te geven zonder dat de manier waarop uw applicaties query de gegevens te wijzigen.

In SQL Server 2016 Community Technology Preview 2 (CTP2), Stretch Database migreert hele tafels. Als uw database al is ingesteld voor het archiveren van gegevens in aparte tabellen van de huidige gegevens op te slaan, zul je in staat zijn om gemakkelijk het archief data te migreren naar Azure. Zodra u Stretch Database in te schakelen, zal het in stilte te migreren van uw gegevens naar een Azure SQL-database. Stretch Database maakt gebruik van de verwerkingscapaciteit van Azure query remote data die door herschrijven van de query. Je zult dit zien als een "remote vraag" operator in de query plan.

Een gemakkelijke manier om databases en tabellen die in aanmerking komen voor het zijn Stretch-enabled te identificeren is te downloaden en uitvoeren van de SQL Server 2016 Upgrade Advisor en voer de Stretch Database Advisor. Aaron Bertrand (@AaronBertrand) schreef hierover onlangs:

  • Identificeer Candidate Tabellen voor SQL Server 2016 Stretch Databases

Beperkingen voor Stretch Database

Niet alle tafels komen in aanmerking om te worden Stretch-enabled. Bepaalde tabeleigenschappen, data en kolomtypes, beperkingen en indexen worden niet ondersteund, bijvoorbeeld:

  • Geheugen-geoptimaliseerd en gerepliceerd tafels
  • Tafels dat FILESTREAM gegevens, het gebruik bijhouden van wijzigingen of Change gegevens bevatten
  • Data types zoals timestamp, sql_variant, XML, aardrijkskunde of kolommen die altijd gecodeerd
  • Controleer en standaard beperkingen of foreign key beperkingen die de tabel verwijzen
  • XML, full-text, ruimtelijk, geclusterd columnstore en geïndexeerde uitzicht dat de Stretch-enabled tafel verwijzen
  • U kan niet worden uitgevoerd UPDATE of DELETE statements, of lopen CREATE INDEX of ALTER INDEX operaties op een Stretch-enabled table

Voor een volledig overzicht van de beperkingen, kunt u een bezoek:Eisen en beperkingen voor Stretch Database.

Het opzetten van Stretch Database

Aan de slag is niet een ingewikkelde taak. Je hebt een Azure-account nodig en schakel Stretch Database op de instantie.

Om Stretch Database op een instantie run in te schakelen:

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

Voor deze demo Ik ga de AdventureWorks2014 database op een SQL Server 2016 CPT2 instantie. Ik zal beginnen met het maken van een nieuwe tabel:

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

En dan zal ik de test tafel StretchTest vullen met een aantal gegevens:

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

Ik heb nu een tafel die ik kan rekken tot de Microsoft Azure Cloud. Om dit te doen zal ik de GUI gebruiken door rechts te klikken op AdventureWorks2014, het kiezen van taken en het selecteren inschakelen Database voor Stretch.

Het inschakelen Database voor Stretch Wizard zal openen, zoals hieronder:

Ik klik op de volgende:

En aanmelden bij mijn Windows Azure-account:

Ik ben toen gevraagd om na te gaan welke account ik wil gebruiken:

Dan moet ik kiezen welke Azure locatie ik wil gebruiken en geef een admin login en wachtwoord. Wanneer u dit doet, zorg ervoor dat kennis te nemen van de admin gebruikersnaam en wachtwoord te maken, omdat je dit in de toekomst nodig hebben om verbinding met de Azure SQL-database als je moet de database te herstellen.

Ik klik op Volgende:

En klik op Voltooien en de database begint provisioning naar Azure SQL Database Server.

Ik heb zojuist een veilige verbonden server definitie op mijn lokale server die de afstand Azure SQL-database als eindpunt heeft. Ik kan dit in Server Objects, Linked Servers evenals in mijn Azure verantwoord onder SQL-databases. Merk op dat alleen systeemprocessen deze geschakelde server kan gebruiken; gebruikerslogins kan niet vragen via de gekoppelde server naar het eindpunt op afstand te geven.

Nu dat Stretch Database is ingeschakeld voor de aanleg en het AdventureWorks2014 databank kan ik nu mijn nieuwe tafel te rekken. Om de tabel te rekken tot Azure ik behoefte om de tafel te veranderen en in staat op afstand gegevens te archiveren.

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

Naast de nieuwe functies met SQL Server 2016, zijn er enkele nieuwe DMVs ook. Om de migratie van gegevens naar Azure u sys.dm_db_rda_migration_status zoekopdrachten kan bewaken. Als ik DMV na het inschakelen opgevraagd remote archiveren ik kon zien dat de 6 rijen werden gemigreerd:

Backup maken en terugzetten van een Stretch Database

Momenteel in SQL Server 2016 CTP2 wanneer een database die is Stretch-enabled is een back-up, wordt een ondiepe backup gemaakt waarin de gegevens die zijn gemigreerd naar de Azure SQL-database niet bevat. De verwachting is dat met de RTM-versie van SQL Server 2016 back-up van een Stretch-toegelaten gegevensbestand een diepe back-up die zowel lokale en strekte gegevens zal bevatten zal leiden.

Bij het herstellen van een database die is Stretch-enabled, dan moet je de lokale database opnieuw verbinding maken met de remote Azure SQL-database. U doet dit door het uitvoeren van de opgeslagen procedure sys.sp_reauthorize_remote_data_archive als db_owner.

Als ik nu een back-up van de Stretch-enabled AdventureWorks2014 database en herstellen, zal ik niet meer in staat zijn om de StretchTest tafel te vragen totdat ik naar Azure SQL-database opnieuw door het uitvoeren van:

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

Eenmaal aangesloten krijg ik een bericht van de ene hieronder en dan ben ik in staat om de gespannen gegevens nogmaals te vragen:

Het kopiëren van externe database 'RDAAdventureWorks201467B6D9D4-E8E0-4C54-B3EF-7C2D3F1326C4' to externe database 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D'.

Het wachten op externe database kopie te voltooien.

Externe database 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D' is het kopiëren voltooid en is nu online.

Bij het herstellen van een stretch-enabled database ander geval moet deze bijvoorbeeld zijn "remote data archief ingeschakeld". Nadat u de database hebt hersteld en geactiveerd "remote data archiveren", alles wat nodig is wordt het opnieuw aansluiten aan de Azure SQL-database door het uitvoeren van de sys.sp_reauthorize_remote_data_archive opgeslagen procedure.

De back-ups voor Azure SQL-databases voor Basic, Standard en Premium Service niveaus worden ieder uur genomen. De back-up bewaartermijn varieert afhankelijk van de service tier-niveau. Op het moment van schrijven, voor basis is 7 dagen, standaard 14 dagen, en de premie is 35 dagen. U kunt herstellen Azure SQL-databases met behulp van de Windows Azure web portal.

Un-gegevens migreren

Om te migreren gegevens terug naar lokale opslag van een Azure SQL-database moet u een nieuw lokaal tabel te maken met hetzelfde schema als de Stretch-enabled tafel. Je moet dan de gegevens van de Stretch-enabled tafel in de nieuwe lokale tabel te kopiëren. Zodra de gegevens zijn gekopieerd u de Stretch-enabled tafel te laten vallen en de naam van de nieuwe lokale tabel om de naam van de Stretch-enabled tafel die net was gedaald.

U kunt alleen uitschakelen Stretch voor een database zodra alle Stretch-enabled tabellen zijn gedaald. Als je er bij neervalt een database ingeschakeld voor Stretch, de lokale database wordt verwijderd, maar de gegevens op afstand is niet; moet je de database op afstand dalen van de Azure Management Portal.

Samenvatting

Stretch Database is een gemakkelijke manier voor het archiveren van data te migreren naar Windows Azure, als uw database ondersteunt. Momenteel in SQL Server 2016 CTP2 zijn er veel beperkingen met tafel, gegevens en kolom eigenschappen, data en types kolom, beperkingen en indexen. Als u niet beperkt door die beperkingen, dan Stretch Database is een eenvoudige manier om historische data te migreren naar Azure SQL-database en vrij te maken waardevolle lokale opslag. Het beheren van back-ups een beetje complexer geworden omdat uw gegevens splitsing tussen on-premise als in de cloud zal zijn.

Ik kijk ernaar uit om deze beperkingen in de RTM-versie wordt opgetild, en ik weet zeker dat velen van u in staat om gebruik te maken van deze leuke functie maakt zal zijn.


  1. SQLite onUpgrade() frustratie

  2. Aanbevolen Intel-processors voor SQL Server 2014-workloads

  3. Hoe importeer ik bestaande *.sql-bestanden in PostgreSQL 8.4?

  4. SQLite-installatie