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
    )
)


-- 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 ;


Comments

Popular posts from this blog

Cómo identificar consultas más pesadas en SQL Server

Permitiendo la administración de los jobs a usuarios que no son System Administrators en SQL Server Agent 2005 o superior

FileTable en SQL Server 2012