Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server 2016 – Introdução ao Stretch Database

Não, esse não é o trecho que você está procurando
A partir do SQL Server 2016, você poderá armazenar partes de um banco de dados na nuvem. Essa nova capacidade é conhecida como Stretch Database e o recurso será benéfico para aqueles que precisam manter dados transacionais por longos períodos de tempo e para aqueles que desejam economizar dinheiro em armazenamento. Ser capaz de migrar dados para a Nuvem do Microsoft Azure oferece a capacidade de arquivar dados sem precisar alterar a maneira como seus aplicativos consultam os dados.

No SQL Server 2016 Community Technology Preview 2 (CTP2), o Stretch Database migra tabelas inteiras. Se seu banco de dados já estiver configurado para armazenar dados de arquivo em tabelas separadas dos dados atuais, você poderá migrar facilmente os dados de arquivo para o Azure. Depois de habilitar o Stretch Database, ele migrará silenciosamente seus dados para um Banco de Dados SQL do Azure. O Stretch Database aproveita o poder de processamento no Azure para executar consultas em dados remotos reescrevendo a consulta. Você verá isso como um operador de "consulta remota" no plano de consulta.

Uma maneira fácil de identificar bancos de dados e tabelas qualificados para serem habilitados para Stretch é baixar e executar o SQL Server 2016 Upgrade Advisor e executar o Stretch Database Advisor. Aaron Bertrand (@AaronBertrand) escreveu sobre isso recentemente:
  • Identificar tabelas candidatas para bancos de dados Stretch do SQL Server 2016

Limitações do banco de dados Stretch


Nem todas as mesas serão elegíveis para serem habilitadas para Stretch. Certas propriedades de tabela, tipos de dados e colunas, restrições e índices não são suportados, como:
  • Tabelas replicadas e otimizadas para memória
  • Tabelas que contêm dados FILESTREAM usam o Controle de alterações ou Dados de alteração
  • Tipos de dados como carimbo de data/hora, sql_variant, XML, geografia ou colunas sempre criptografadas
  • Restrições de verificação e padrão ou restrições de chave estrangeira que fazem referência à tabela
  • XML, texto completo, espacial, armazenamento de colunas em cluster e visualizações indexadas que fazem referência à tabela habilitada para Stretch
  • Você não pode executar instruções UPDATE ou DELETE ou executar operações CREATE INDEX ou ALTER INDEX em uma tabela habilitada para Stretch

Para obter uma lista completa de limitações, você pode visitar:Requisitos e limitações do Stretch Database.

Configurando o banco de dados do Stretch


Começar não é uma tarefa complicada. Você precisará de uma conta do Azure e habilitar o Stretch Database na instância.

Para habilitar o Stretch Database em uma instância, execute:
EXEC sys.sp_configure N'remote data archive', '1';
RECONFIGURE;
GO

Para esta demonstração, usarei o banco de dados AdventureWorks2014 em uma instância CPT2 do SQL Server 2016. Vou começar criando uma nova tabela:
USE [AdventureWorks2014];
GO
 
CREATE TABLE dbo.StretchTest
(
  FirstName VARCHAR(50),
  LastName  VARCHAR(50)
);
GO

E então preencherei a tabela de teste StretchTest com alguns dados:
USE [AdventureWorks2014];
GO
 
INSERT INTO dbo.StretchTest(FirstName, LastName)
VALUES('Paul', 'Randal'),  ('Kimberly', 'Tripp'),('Jonathan', 'Kehayias'),
      ('Erin', 'Stellato'),('Glenn', 'Berry'),   ('Tim', 'Radney');
GO

Agora tenho uma tabela que posso estender para o Microsoft Azure Cloud. Para fazer isso, usarei a GUI clicando com o botão direito do mouse em AdventureWorks2014, escolhendo Tasks e selecionando Enable Database for Stretch.



O assistente Enable Database for Stretch será aberto, conforme abaixo:



Vou clicar em seguida:



E entre na minha conta do Microsoft Azure:



Em seguida, sou solicitado a verificar qual conta quero usar:



Em seguida, seleciono qual local do Azure quero usar e especifico um login e uma senha de administrador. Ao fazer isso, anote o nome de usuário e a senha do administrador, pois você precisará disso no futuro para se reconectar ao Banco de Dados SQL do Azure se precisar restaurar o banco de dados.

Clico em seguida:



E clique em Concluir e o banco de dados inicia o provisionamento para o Servidor de Banco de Dados SQL do Azure.



Acabei de criar uma definição de servidor vinculado seguro em meu servidor local que tem o banco de dados SQL remoto do Azure como ponto de extremidade. Posso ver isso em Objetos de Servidor, Servidores Vinculados, bem como em minha conta do Azure em Bancos de Dados SQL. Observe que apenas os processos do sistema podem usar esse servidor vinculado; logins de usuários não podem emitir consultas por meio do servidor vinculado ao ponto de extremidade remoto.

Agora que o Stretch Database está habilitado para a instância e para o banco de dados AdventureWorks2014, agora posso esticar minha nova tabela. Para esticar a tabela para o Azure, preciso alterar a tabela e habilitar o arquivamento de dados remoto.
USE [AdventureWorks2014];
GO
 
ALTER TABLE [StretchTest]
ENABLE REMOTE_DATA_ARCHIVE WITH ( MIGRATION_STATE = ON );
GO

Além dos novos recursos do SQL Server 2016, também há alguns novos DMVs. Para monitorar a migração de dados para o Azure, você pode consultar sys.dm_db_rda_migration_status. Quando consultei o DMV depois de habilitar o arquivo de dados remoto, pude ver que as 6 linhas foram migradas:


Backup e restauração de um banco de dados Stretch


Atualmente no SQL Server 2016 CTP2, quando é feito backup de um banco de dados habilitado para Stretch, é criado um backup superficial que não inclui os dados que foram migrados para o banco de dados SQL do Azure. Espera-se que, com a versão RTM do SQL Server 2016, o backup de um banco de dados habilitado para Stretch crie um backup profundo que conterá dados locais e estendidos.

Ao restaurar um banco de dados habilitado para Stretch, você precisará reconectar o banco de dados local ao Banco de Dados SQL do Azure remoto. Você faz isso executando o procedimento armazenado sys.sp_reauthorize_remote_data_archive como db_owner.

Se agora eu fizer backup do banco de dados AdventureWorks2014 habilitado para Stretch e restaurá-lo, não poderei mais consultar a tabela StretchTest até me reconectar ao Banco de Dados SQL do Azure executando:
USE [AdventureWorks2014];
GO
 
EXEC sys.sp_reauthorize_remote_data_archive @azure_username, @azure_password;
GO

Uma vez reconectado, recebo uma mensagem semelhante à abaixo e posso consultar os dados estendidos mais uma vez:
Copiando o banco de dados remoto 'RDAdventureWorks201467B6D9D4-E8E0-4C54-B3EF-7C2D3F1326C4' para o banco de dados remoto 'RDAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D'.

Aguardando a conclusão da cópia do banco de dados remoto.

O banco de dados remoto 'RDAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D' concluiu a cópia e agora está online.
Ao restaurar um banco de dados habilitado para Stretch para outra instância, essa instância deve ter "arquivamento de dados remoto habilitado". Depois de restaurar o banco de dados e habilitar o "arquivamento de dados remoto", tudo o que é necessário é reconectar-se ao Banco de Dados SQL do Azure executando o procedimento armazenado sys.sp_reauthorize_remote_data_archive.

Os backups dos Bancos de Dados SQL do Azure para as camadas de serviço Basic, Standard e Premium são feitos a cada hora. O período de retenção de backup varia dependendo do nível da camada de serviço. No momento da redação deste artigo, para o básico são 7 dias, o padrão 14 dias e o premium é 35 dias. Você pode restaurar os Bancos de Dados SQL do Azure usando o portal da Web do Microsoft Azure.

Cancelar migração de dados


Para migrar dados de volta para o armazenamento local de um Banco de Dados SQL do Azure, você precisará criar uma nova tabela local com o mesmo esquema da tabela habilitada para Stretch. Em seguida, você precisa copiar os dados da tabela habilitada para Stretch para a nova tabela local. Depois que os dados são copiados, você descarta a tabela habilitada para Stretch e renomeia a nova tabela local para o nome da tabela habilitada para Stretch que acabou de ser descartada.

Você só pode desabilitar o Stretch para um banco de dados depois que todas as tabelas habilitadas para Stretch forem eliminadas. Se você descartar um banco de dados habilitado para Stretch, o banco de dados local será removido, mas os dados remotos não; você terá que descartar o banco de dados remoto do portal de gerenciamento do Azure.

Resumo


O Stretch Database é uma maneira fácil de migrar dados de arquivo para o Microsoft Azure, se o seu banco de dados oferecer suporte. Atualmente, no SQL Server 2016 CTP2, há muitas limitações com propriedades de tabela, dados e colunas, tipos de dados e colunas, restrições e índices. Se você não estiver restrito por essas limitações, o Stretch Database é uma maneira simples de migrar dados históricos para o Banco de Dados SQL do Azure e liberar armazenamento local valioso. O gerenciamento de backups se tornará um pouco mais complexo, pois seus dados serão divididos entre no local e na nuvem.

Estou ansioso para que essas restrições sejam levantadas na versão RTM, e tenho certeza que muitos de vocês poderão fazer uso desse recurso legal.