Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server 2016 — wprowadzenie do bazy danych Stretch

Nie, to nie jest ten odcinek, którego szukasz

Począwszy od SQL Server 2016 będziesz mieć możliwość przechowywania części bazy danych w chmurze. Ta nowa funkcja jest znana jako baza danych Stretch i będzie korzystna dla tych, którzy chcą przechowywać dane transakcyjne przez długi czas oraz dla tych, którzy chcą zaoszczędzić pieniądze na pamięci masowej. Możliwość bezproblemowej migracji danych do chmury Microsoft Azure daje możliwość archiwizowania danych bez konieczności zmiany sposobu, w jaki aplikacje wysyłają zapytania do danych.

W SQL Server 2016 Community Technology Preview 2 (CTP2), Stretch Database migruje całe tabele. Jeśli Twoja baza danych jest już skonfigurowana do przechowywania danych archiwalnych w oddzielnych tabelach od danych bieżących, będziesz mógł łatwo przenieść dane archiwalne na platformę Azure. Po włączeniu bazy danych rozciągania nastąpi dyskretna migracja danych do bazy danych Azure SQL. Stretch Database wykorzystuje moc obliczeniową platformy Azure do uruchamiania zapytań na zdalnych danych przez przepisanie zapytania. Zobaczysz to jako operator „zdalnego zapytania” w planie zapytania.

Prostym sposobem identyfikacji baz danych i tabel, które kwalifikują się do obsługi funkcji Stretch, jest pobranie i uruchomienie Doradcy uaktualnienia programu SQL Server 2016 i uruchomienie Doradcy bazy danych Stretch. Aaron Bertrand (@AaronBertrand) napisał o tym niedawno:

  • Zidentyfikuj tabele kandydatów dla rozciągniętych baz danych SQL Server 2016

Ograniczenia dla bazy danych Stretch

Nie wszystkie stoły będą kwalifikować się do włączenia funkcji rozciągania. Niektóre właściwości tabel, typy danych i kolumn, ograniczenia i indeksy nie są obsługiwane, na przykład:

  • Tabele zoptymalizowane pod kątem pamięci i replikowane
  • Tabele zawierające dane FILESTREAM, użyj śledzenia zmian lub zmiany danych
  • Typy danych, takie jak znacznik czasu, sql_variant, XML, geografia lub kolumny, które są zawsze szyfrowane
  • Sprawdź i domyślne ograniczenia lub ograniczenia klucza obcego, które odnoszą się do tabeli
  • XML, pełnotekstowy, przestrzenny, klastrowany magazyn kolumn i widoki indeksowane, które odwołują się do tabeli obsługującej rozciąganie
  • Nie można uruchomić instrukcji UPDATE lub DELETE ani wykonać operacji CREATE INDEX lub ALTER INDEX na tabeli obsługującej rozciąganie

Pełną listę ograniczeń można znaleźć na stronie:Wymagania i ograniczenia bazy danych Stretch.

Konfigurowanie bazy danych stretch

Rozpoczęcie pracy nie jest skomplikowanym zadaniem. Będziesz potrzebować konta platformy Azure, a następnie włączyć bazę danych rozciągania w wystąpieniu.

Aby włączyć rozciągniętą bazę danych w uruchomionej instancji:

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

W tym demo zamierzam użyć bazy danych AdventureWorks2014 na instancji SQL Server 2016 CPT2. Zacznę od utworzenia nowej tabeli:

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

A następnie wypełnię tabelę testową StretchTest pewnymi danymi:

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

Mam teraz tabelę, którą mogę rozciągnąć do chmury Microsoft Azure. Aby to zrobić, użyję GUI, klikając prawym przyciskiem myszy AdventureWorks2014, wybierając Zadania i wybierając Włącz bazę danych dla rozciągania.

Otworzy się kreator Włącz bazę danych dla rozciągania, jak poniżej:

Kliknę dalej:

I zaloguj się na moje konto Microsoft Azure:

Następnie pojawia się monit o zweryfikowanie konta, którego chcę użyć:

Następnie wybieram lokalizację platformy Azure, której chcę użyć, oraz określam login i hasło administratora. Gdy to zrobisz, zanotuj nazwę użytkownika i hasło administratora, ponieważ będzie to potrzebne w przyszłości, aby ponownie połączyć się z bazą danych SQL Azure w przypadku konieczności przywrócenia bazy danych.

Następnie klikam dalej:

Kliknij przycisk Zakończ, a baza danych rozpocznie aprowizację na serwerze Azure SQL Database Server.

Właśnie utworzyłem definicję bezpiecznego serwera połączonego na moim serwerze lokalnym, który ma zdalną bazę danych Azure SQL jako punkt końcowy. Mogę to wyświetlić w obiektach serwera, serwerach połączonych, a także na moim koncie Azure w obszarze Bazy danych SQL. Zauważ, że tylko procesy systemowe mogą korzystać z tego połączonego serwera; loginy użytkowników nie mogą wysyłać zapytań za pośrednictwem serwera połączonego do zdalnego punktu końcowego.

Teraz, gdy baza danych Stretch jest włączona dla instancji, a dla bazy danych AdventureWorks2014, mogę teraz rozciągnąć moją nową tabelę. Aby rozciągnąć tabelę na Azure, muszę zmienić tabelę i włączyć zdalne archiwum danych.

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

Oprócz nowych funkcji w SQL Server 2016 pojawiły się również nowe DMV. Aby monitorować migrację danych do platformy Azure, możesz wykonać zapytanie sys.dm_db_rda_migration_status. Kiedy zapytałem DMV po włączeniu zdalnego archiwum danych, mogłem zobaczyć, że 6 wierszy zostało zmigrowanych:

Tworzenie kopii zapasowej i przywracanie rozciągniętej bazy danych

Obecnie w programie SQL Server 2016 CTP2 podczas tworzenia kopii zapasowej bazy danych z obsługą rozciągania tworzona jest płytka kopia zapasowa, która nie zawiera danych, które zostały zmigrowane do bazy danych Azure SQL. Oczekuje się, że wraz z wydaniem RTM SQL Server 2016 tworzenie kopii zapasowej bazy danych obsługującej rozciąganie spowoduje utworzenie głębokiej kopii zapasowej, która będzie zawierać zarówno dane lokalne, jak i rozciągnięte.

Podczas przywracania bazy danych obsługującej rozciąganie należy ponownie połączyć lokalną bazę danych ze zdalną bazą danych SQL Azure. Można to zrobić, uruchamiając procedurę składowaną sys.sp_reauthorize_remote_data_archive jako db_owner.

Jeśli teraz utworzę kopię zapasową bazy danych AdventureWorks2014 z obsługą rozciągania i przywrócę ją, nie będę już mógł wysyłać zapytań do tabeli StretchTest, dopóki nie połączę się ponownie z usługą Azure SQL Database, uruchamiając:

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

Po ponownym połączeniu otrzymuję komunikat podobny do poniższego, a następnie mogę ponownie wysłać zapytanie do danych Rozciągniętych:

Kopiowanie zdalnej bazy danych „RDAAdventureWorks201467B6D9D4-E8E0-4C54-B3EF-7C2D3F1326C4” do zdalnej bazy danych „RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D”.

Oczekiwanie na zakończenie kopiowania zdalnej bazy danych. br /> Zdalna baza danych „RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D” zakończyła kopiowanie i jest teraz online.

Podczas przywracania bazy danych obsługującej rozciąganie do innej instancji, instancja ta musi mieć włączone zdalne archiwum danych. Po przywróceniu bazy danych i włączeniu „zdalnego archiwum danych” wystarczy ponownie połączyć się z bazą danych SQL Azure przez uruchomienie procedury składowanej sys.sp_reauthorize_remote_data_archive.

Kopie zapasowe baz danych Azure SQL dla warstw usług Podstawowa, Standardowa i Premium są wykonywane co godzinę. Okres przechowywania kopii zapasowych różni się w zależności od poziomu warstwy usług. W chwili pisania tego tekstu podstawowy wynosi 7 dni, standardowy 14 dni, a premium 35 dni. Bazy danych Azure SQL Database można przywrócić za pomocą portalu internetowego Microsoft Azure.

Cofnij migrację danych

Aby przeprowadzić migrację danych z powrotem do magazynu lokalnego z bazy danych SQL Azure, musisz utworzyć nową tabelę lokalną z tym samym schematem, co tabela obsługująca rozciąganie. Następnie należy skopiować dane z tabeli obsługującej rozciąganie do nowej tabeli lokalnej. Po skopiowaniu danych upuszczasz tabelę obsługującą rozciąganie i zmieniasz nazwę nowej tabeli lokalnej na nazwę tabeli obsługującej rozciąganie, która została właśnie usunięta.

Rozciąganie dla bazy danych można wyłączyć tylko wtedy, gdy wszystkie tabele obsługujące rozciąganie zostały usunięte. Jeśli usuniesz bazę danych z włączoną opcją Stretch, lokalna baza danych zostanie usunięta, ale dane zdalne nie; będziesz musiał usunąć zdalną bazę danych z portalu zarządzania platformy Azure.

Podsumowanie

Stretch Database to łatwy sposób na migrację danych archiwalnych do Microsoft Azure, jeśli Twoja baza danych to obsługuje. Obecnie w SQL Server 2016 CTP2 istnieje wiele ograniczeń dotyczących właściwości tabeli, danych i kolumn, typów danych i kolumn, ograniczeń i indeksów. Jeśli nie ograniczają Cię te ograniczenia, funkcja Stretch Database to prosty sposób na migrację danych historycznych do Azure SQL Database i zwolnienie cennego magazynu lokalnego. Zarządzanie kopiami zapasowymi stanie się nieco bardziej złożone, ponieważ Twoje dane zostaną podzielone między lokalnie i w chmurze.

Nie mogę się doczekać zniesienia tych ograniczeń w wydaniu RTM i jestem pewien, że wielu z Was będzie mogło skorzystać z tej fajnej funkcji.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj OBJECTPROPERTY(), aby dowiedzieć się, czy obiekt jest ograniczeniem CHECK w SQL Server

  2. DateDiff do wyjściowych godzin i minut

  3. Jak odwoływać się do kluczy JSON zawierających znaki specjalne podczas korzystania z OPENJSON, JSON_QUERY i JSON_VALUE (SQL Server)

  4. Zapytania hierarchiczne w SQL Server 2005

  5. Szybkie porady dotyczące naprawy i przywracania bazy danych SQL bez kopii zapasowej