SQL Server 2016 Stretch Databases
El SQL Server Stretch Database permite que los datos históricos o de bitácoras puedan ser movidos hacia Azure, específicamente permite mover datos de bitácoras, históricas, o de eventos desde un almacenamiento más caros hacia un almacenamiento distinto en Azure.
En el siguiente script vemos cómo configurar Stretch Databases.
-- Borrar Recursos Azure
-------------------------------------------------
-- COMO CONFIGURAR STRETCH DATABASE POR SCRIPT
-------------------------------------------------
USE [master]
GO
IF DB_ID('StretchDB') IS NOT NULL BEGIN
ALTER DATABASE StretchDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE StretchDB
END
GO
CREATE DATABASE StretchDB /* COLLATE Cyrillic_General_CI_AS */
GO
USE StretchDB
GO
DROP TABLE IF EXISTS dbo.ErrorLog
CREATE TABLE dbo.ErrorLog (
LogID INT PRIMARY KEY
, PostTime DATETIME NOT NULL
, UserName NVARCHAR(100) NOT NULL
, ErrorMessage NVARCHAR(MAX) NOT NULL
)
GO
INSERT INTO dbo.ErrorLog (LogID ,PostTime, UserName, ErrorMessage)
VALUES (1, GETDATE(), N'edocastro', N'Fila en Azure')
-- Empezar a configurar Stretch Database
USE StretchDB
GO
EXEC sp_configure 'remote data archive';
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'CostaRicaPa$$w0rd'
GO
-- DROP DATABASE SCOPED CREDENTIAL CredencialAzure
CREATE DATABASE SCOPED CREDENTIAL CredencialAzure
WITH IDENTITY = N'edocastro', SECRET = N'CostaRicaPa$$w0rd'
GO
-- Verificar la consola de Azure Portal
-- Verificar el Firewall
ALTER DATABASE StretchDB
SET REMOTE_DATA_ARCHIVE = ON (
SERVER = 'democostarica.database.windows.net',
CREDENTIAL = CredencialAzure
)
GO
ALTER TABLE dbo.ErrorLog
SET (REMOTE_DATA_ARCHIVE = ON (MIGRATION_STATE = OUTBOUND))
-- Deshabilitar Stretch Databases con el Wizard
-- CASO EN QUE DESEAMOS FILTRAR LOS DATOS QUE SEA HACEN STRETCH
-- USO DE FUNCIONES PERSONALIZADAS
CREATE FUNCTION dbo.fn_stretchpredicate (@EnviarStretch BIT)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN
SELECT 1 AS is_eligible
WHERE @EnviarStretch= 1
GO
ALTER TABLE dbo.ErrorLog ADD EnviarStretch BIT
GO
-- Ahora vamos a crear otra vez el Stretch Database
-- con el filtro especificado por funcion personalizada
ALTER TABLE dbo.ErrorLog SET (
REMOTE_DATA_ARCHIVE = ON (
FILTER_PREDICATE = dbo.fn_stretchpredicate(EnviarStretch),
MIGRATION_STATE = OUTBOUND
)
)
En el siguiente script vemos cómo configurar Stretch Databases.
-- Borrar Recursos Azure
-------------------------------------------------
-- COMO CONFIGURAR STRETCH DATABASE POR SCRIPT
-------------------------------------------------
USE [master]
GO
IF DB_ID('StretchDB') IS NOT NULL BEGIN
ALTER DATABASE StretchDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE StretchDB
END
GO
CREATE DATABASE StretchDB /* COLLATE Cyrillic_General_CI_AS */
GO
USE StretchDB
GO
DROP TABLE IF EXISTS dbo.ErrorLog
CREATE TABLE dbo.ErrorLog (
LogID INT PRIMARY KEY
, PostTime DATETIME NOT NULL
, UserName NVARCHAR(100) NOT NULL
, ErrorMessage NVARCHAR(MAX) NOT NULL
)
GO
INSERT INTO dbo.ErrorLog (LogID ,PostTime, UserName, ErrorMessage)
VALUES (1, GETDATE(), N'edocastro', N'Fila en Azure')
-- Empezar a configurar Stretch Database
USE StretchDB
GO
EXEC sp_configure 'remote data archive';
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'CostaRicaPa$$w0rd'
GO
-- DROP DATABASE SCOPED CREDENTIAL CredencialAzure
CREATE DATABASE SCOPED CREDENTIAL CredencialAzure
WITH IDENTITY = N'edocastro', SECRET = N'CostaRicaPa$$w0rd'
GO
-- Verificar la consola de Azure Portal
-- Verificar el Firewall
ALTER DATABASE StretchDB
SET REMOTE_DATA_ARCHIVE = ON (
SERVER = 'democostarica.database.windows.net',
CREDENTIAL = CredencialAzure
)
GO
ALTER TABLE dbo.ErrorLog
SET (REMOTE_DATA_ARCHIVE = ON (MIGRATION_STATE = OUTBOUND))
-- Deshabilitar Stretch Databases con el Wizard
-- CASO EN QUE DESEAMOS FILTRAR LOS DATOS QUE SEA HACEN STRETCH
-- USO DE FUNCIONES PERSONALIZADAS
CREATE FUNCTION dbo.fn_stretchpredicate (@EnviarStretch BIT)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN
SELECT 1 AS is_eligible
WHERE @EnviarStretch= 1
GO
ALTER TABLE dbo.ErrorLog ADD EnviarStretch BIT
GO
-- Ahora vamos a crear otra vez el Stretch Database
-- con el filtro especificado por funcion personalizada
ALTER TABLE dbo.ErrorLog SET (
REMOTE_DATA_ARCHIVE = ON (
FILTER_PREDICATE = dbo.fn_stretchpredicate(EnviarStretch),
MIGRATION_STATE = OUTBOUND
)
)
-- Deshabilitar Stretch Database
USE StretchDB;
GO
-- El siguiente ejemplo deshabilita Stretch Database
-- Los datos se bajan de Azure hacia la tabla local
ALTER TABLE dbo.ErrorLog
SET ( REMOTE_DATA_ARCHIVE ( MIGRATION_STATE = INBOUND ) ) ;
GO
-- El siguiente ejemplo deshabilita Stretch Database
-- Los datos se dejan en Azure
ALTER TABLE dbo.ErrorLog
SET ( REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY ( MIGRATION_STATE = PAUSED ) ) ;
GO
-- Deshabilitarlo para la base de datos
ALTER DATABASE StretchDB
SET REMOTE_DATA_ARCHIVE = OFF ;
USE StretchDB;
GO
-- El siguiente ejemplo deshabilita Stretch Database
-- Los datos se bajan de Azure hacia la tabla local
ALTER TABLE dbo.ErrorLog
SET ( REMOTE_DATA_ARCHIVE ( MIGRATION_STATE = INBOUND ) ) ;
GO
-- El siguiente ejemplo deshabilita Stretch Database
-- Los datos se dejan en Azure
ALTER TABLE dbo.ErrorLog
SET ( REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY ( MIGRATION_STATE = PAUSED ) ) ;
GO
-- Deshabilitarlo para la base de datos
ALTER DATABASE StretchDB
SET REMOTE_DATA_ARCHIVE = OFF ;
Comments