sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server 2016:Introducción a la base de datos ampliada

No, ese no es el tramo que buscas

A partir de SQL Server 2016, podrá almacenar partes de una base de datos en la nube. Esta nueva capacidad se conoce como Stretch Database y la característica será beneficiosa para aquellos que necesitan mantener datos transaccionales durante largos períodos de tiempo y para aquellos que buscan ahorrar dinero en almacenamiento. Ser capaz de migrar datos sin problemas a la nube de Microsoft Azure le dará la posibilidad de archivar datos sin tener que cambiar la forma en que sus aplicaciones consultan los datos.

En SQL Server 2016 Community Technology Preview 2 (CTP2), Stretch Database migra tablas completas. Si su base de datos ya está configurada para almacenar datos de archivo en tablas separadas de los datos actuales, podrá migrar fácilmente los datos de archivo a Azure. Una vez que habilite Stretch Database, migrará silenciosamente sus datos a una base de datos Azure SQL. Stretch Database aprovecha la capacidad de procesamiento de Azure para ejecutar consultas en datos remotos reescribiendo la consulta. Verá esto como un operador de "consulta remota" en el plan de consulta.

Una manera fácil de identificar bases de datos y tablas que son elegibles para la habilitación de Stretch es descargar y ejecutar el Asesor de actualización de SQL Server 2016 y ejecutar el Asesor de base de datos Stretch. Aaron Bertrand (@AaronBertrand) escribió sobre esto recientemente:

  • Identificar tablas candidatas para bases de datos extendidas de SQL Server 2016

Limitaciones para la base de datos ampliada

No todas las mesas serán elegibles para habilitar Stretch. Ciertas propiedades de tabla, tipos de datos y columnas, restricciones e índices no son compatibles, como:

  • Tablas duplicadas y optimizadas para memoria
  • Tablas que contienen datos de FILESTREAM, use Change Tracking o Change Data
  • Tipos de datos como marca de tiempo, sql_variant, XML, geografía o columnas que están siempre cifradas
  • Restricciones de verificación y predeterminadas o restricciones de clave externa que hacen referencia a la tabla
  • XML, de texto completo, espacial, almacén de columnas agrupado y vistas indexadas que hacen referencia a la tabla habilitada para Stretch
  • No puede ejecutar instrucciones UPDATE o DELETE, o ejecutar operaciones CREATE INDEX o ALTER INDEX en una tabla habilitada para Stretch

Para obtener una lista completa de limitaciones, puede visitar:Requisitos y limitaciones para Stretch Database.

Configuración de base de datos ampliada

Comenzar no es una tarea complicada. Necesitará una cuenta de Azure y luego habilitar Stretch Database en la instancia.

Para habilitar Stretch Database en una ejecución de instancia:

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

Para esta demostración, usaré la base de datos AdventureWorks2014 en una instancia CPT2 de SQL Server 2016. Comenzaré creando una nueva tabla:

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

Y luego llenaré la tabla de prueba StretchTest con algunos datos:

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

Ahora tengo una tabla que puedo extender a Microsoft Azure Cloud. Para hacer esto, usaré la GUI haciendo clic con el botón derecho en AdventureWorks2014, eligiendo Tareas y seleccionando Habilitar base de datos para Stretch.

Se abrirá el asistente Habilitar base de datos para extensión, como se muestra a continuación:

Haré clic en siguiente:

E inicie sesión en mi cuenta de Microsoft Azure:

Luego se me pide que verifique qué cuenta quiero usar:

Luego, selecciono qué ubicación de Azure quiero usar y especifico un nombre de usuario y una contraseña de administrador. Cuando haga esto, asegúrese de tomar nota del nombre de usuario y la contraseña del administrador, ya que los necesitará en el futuro para volver a conectarse a Azure SQL Database si tiene que restaurar la base de datos.

Luego hago clic en siguiente:

Y haga clic en Finalizar y la base de datos comenzará a aprovisionarse en Azure SQL Database Server.

Acabo de crear una definición de servidor vinculado seguro en mi servidor local que tiene la base de datos Azure SQL remota como punto final. Puedo ver esto en Objetos de servidor, Servidores vinculados, así como en mi cuenta de Azure en Bases de datos SQL. Tenga en cuenta que solo los procesos del sistema pueden usar este servidor vinculado; los inicios de sesión de los usuarios no pueden emitir consultas a través del servidor vinculado al punto final remoto.

Ahora que Stretch Database está habilitado para la instancia y para la base de datos AdventureWorks2014, ahora puedo estirar mi nueva tabla. Para extender la tabla a Azure, necesito modificar la tabla y habilitar el archivo de datos remoto.

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

Además de las nuevas funciones con SQL Server 2016, también hay algunos DMV nuevos. Para monitorear la migración de datos a Azure, puede consultar sys.dm_db_rda_migration_status. Cuando consulté al DMV después de habilitar el archivo de datos remoto, pude ver que se migraron las 6 filas:

Copia de seguridad y restauración de una base de datos ampliada

Actualmente, en SQL Server 2016 CTP2, cuando se realiza una copia de seguridad de una base de datos habilitada para Stretch, se crea una copia de seguridad superficial que no incluye los datos que se han migrado a la base de datos de Azure SQL. Se espera que con la versión RTM de SQL Server 2016, la copia de seguridad de una base de datos habilitada para Stretch creará una copia de seguridad profunda que contendrá tanto datos locales como ampliados.

Al restaurar una base de datos que está habilitada para Stretch, deberá volver a conectar la base de datos local a la base de datos SQL de Azure remota. Para ello, ejecute el procedimiento almacenado sys.sp_reauthorize_remote_data_archive como db_owner.

Si ahora hago una copia de seguridad de la base de datos AdventureWorks2014 habilitada para Stretch y la restauro, ya no podré consultar la tabla StretchTest hasta que me vuelva a conectar a Azure SQL Database ejecutando:

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

Una vez que me vuelvo a conectar, recibo un mensaje similar al siguiente y luego puedo consultar los datos extendidos una vez más:

Copiando la base de datos remota 'RDAAdventureWorks201467B6D9D4-E8E0-4C54-B3EF-7C2D3F1326C4' a la base de datos remota 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D'.

Esperando que se complete la copia de la base de datos remota.

La base de datos remota 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D' completó la copia y ahora está en línea.

Al restaurar una base de datos habilitada para Stretch en otra instancia, esa instancia debe tener "habilitado el archivo de datos remoto". Una vez que haya restaurado la base de datos y habilitado el "archivo de datos remoto", todo lo que necesita es volver a conectarse a Azure SQL Database ejecutando el procedimiento almacenado sys.sp_reauthorize_remote_data_archive.

Las copias de seguridad de Azure SQL Database para los niveles de servicio Básico, Estándar y Premium se realizan cada hora. El período de retención de la copia de seguridad varía según el nivel de servicio. En el momento de escribir este artículo, el básico es de 7 días, el estándar de 14 días y el premium de 35 días. Puede restaurar bases de datos SQL de Azure mediante el portal web de Microsoft Azure.

Anular la migración de datos

Para volver a migrar datos al almacenamiento local desde Azure SQL Database, deberá crear una nueva tabla local con el mismo esquema que la tabla habilitada para Stretch. Luego, debe copiar los datos de la tabla habilitada para Stretch en la nueva tabla local. Una vez que se copian los datos, suelte la tabla habilitada para Stretch y cambie el nombre de la nueva tabla local por el nombre de la tabla habilitada para Stretch que acaba de quitar.

Solo puede deshabilitar Stretch para una base de datos una vez que se hayan descartado todas las tablas habilitadas para Stretch. Si elimina una base de datos habilitada para Stretch, la base de datos local se elimina pero los datos remotos no; tendrá que quitar la base de datos remota del portal de administración de Azure.

Resumen

Stretch Database es una manera fácil de migrar datos de archivo a Microsoft Azure, si su base de datos lo admite. Actualmente, en SQL Server 2016 CTP2 existen muchas limitaciones con las propiedades de tablas, datos y columnas, tipos de datos y columnas, restricciones e índices. Si no está restringido por esas limitaciones, Stretch Database es una forma sencilla de migrar datos históricos a Azure SQL Database y liberar almacenamiento local valioso. La gestión de las copias de seguridad se volverá un poco más compleja, ya que sus datos se dividirán entre las instalaciones y la nube.

Espero que se eliminen estas restricciones en el lanzamiento de RTM y estoy seguro de que muchos de ustedes podrán hacer uso de esta función genial.