Cómo implementar Backups en SQL Server

Cómo implementar Backups en SQL Server

Los backups de nuestras bases de datos SQL Server son una tarea vital para
cualquier DBA.

Implementarlos de forma incorrecta nos puede llevar a serios problemas para
nuestra empresa, por eso en este video tutorial te voy a explicar cuál es el
funcionamiento de los Backups como así también veremos cómo los implementamos
en Triggerdb para nuestros clientes usando los script de OLA

Cómo insertar registros en nuestras tablas sin saltos

En este tutorial paso a paso te muestro como podes hacer insert en tus tablas cuando necesitas que los números (por ejemplo un ID) deban ser secuenciales y además evitar saltos en sus datos.

Código utilizado en el video

/*
NUMERAR REGISTROS SIN DUPLICADOS Y SALTOS
*/

-- EJEMPLO 1 (USO DE IDENTITY)
USE master 
GO

DROP DATABASE IF EXISTS  DEMO_NUMERADOR
GO

CREATE DATABASE DEMO_NUMERADOR
GO

USE DEMO_NUMERADOR
GO

CREATE TABLE TEST1 (ID INT IDENTITY(1,1) PRIMARY KEY,
                    C1 INT,
					C2 DATE)

-- INSERT OK

INSERT INTO TEST1 (C1,C2)
VALUES (1,GETDATE())

SELECT * FROM TEST1

-- INSERT NO OK

INSERT INTO TEST1 (C1,C2)
VALUES ('H',GETDATE())

-- INSERT OK

INSERT INTO TEST1 (C1,C2)
VALUES (2,GETDATE())

SELECT * FROM TEST1


DROP TABLE TEST1 

------------------------------------------
---- EJEMPLO 2 CON TABLA -----------------
------------------------------------------
DROP TABLE IF EXISTS NUMERADOR
CREATE TABLE NUMERADOR (TABLA VARCHAR(255),
                        ULTIMO_NUMERO INT)

INSERT INTO NUMERADOR VALUES ('TEST1',0)

CREATE TABLE TEST1 (ID INT  PRIMARY KEY,
                    C1 INT,
					C2 DATE)


-- PROCESO CON UPDATE 

DECLARE @NRO INT

BEGIN TRAN
 UPDATE NUMERADOR SET
 @NRO = ULTIMO_NUMERO = ULTIMO_NUMERO+1 
 WHERE  TABLA = 'TEST1'

 INSERT INTO TEST1 (ID,C1,C2)
 VALUES (@NRO,1,GETDATE())

COMMIT TRAN
GO 3

SELECT * FROM NUMERADOR
SELECT * FROM TEST1 

-- HACEMOS FALLAR
DECLARE @NRO INT
BEGIN TRAN
 UPDATE NUMERADOR SET
 @NRO = ULTIMO_NUMERO = ULTIMO_NUMERO+1 
 WHERE  TABLA = 'TEST1'

 INSERT INTO TEST1 (ID,C1,C2)
 VALUES (@NRO,'H',GETDATE())

COMMIT TRAN

-- VOLVEMOS A INSERTAR UNO NUEVO

DECLARE @NRO INT

BEGIN TRAN
 UPDATE NUMERADOR SET
 @NRO = ULTIMO_NUMERO = ULTIMO_NUMERO+1 
 WHERE  TABLA = 'TEST1'

 INSERT INTO TEST1 (ID,C1,C2)
 VALUES (@NRO,1,GETDATE())

COMMIT TRAN


SELECT * FROM NUMERADOR
SELECT * FROM TEST1 

--- PROBAMOS CONCURRENCIA (SESION 1)

DECLARE @NRO INT

BEGIN TRAN
 UPDATE NUMERADOR SET
 @NRO = ULTIMO_NUMERO = ULTIMO_NUMERO+1 
 WHERE  TABLA = 'TEST1'

 INSERT INTO TEST1 (ID,C1,C2)
 VALUES (@NRO,1,GETDATE())
 -- ROLLBACK TRAN
 -- COMMIT TRAN

--- PROBAMOS CONCURRENCIA (SESION 2)
USE DEMO_NUMERADOR 
GO

DECLARE @NRO INT

BEGIN TRAN
 UPDATE NUMERADOR SET
 @NRO = ULTIMO_NUMERO = ULTIMO_NUMERO+1 
 WHERE  TABLA = 'TEST1'

 INSERT INTO TEST1 (ID,C1,C2)
 VALUES (@NRO,1,GETDATE())

COMMIT TRAN

-- VEMOS VALORES

SELECT * FROM TEST1 
SELECT * FROM NUMERADOR 

SQL Performance: Tipos de datos

SQL Server Performance: Data Types

En este capítulo de optimizando tu SQL Server te voy a mostrar qué impacto tiene definir bien los tipos de datos en tus tablas de SQL Server y porque hay que prestarle mucha atención si deseas tener una buena performance.

Para descargar los ejemplos lo puedes hacer desde el siguiente link

https://github.com/maccotto/POST-BLOG/tree/main/SQLSERVER/PerformanceDatatypes

Te invito a seguirme en mi canal de youtube o Linkedin

Como evitar el crecimiento de tu TLOG en el mantenimiento de índices

Cuando hacemos un REBUILD de los indices en SQL Server tenemos el problema que nuestro Transaction Log puede crecer si la base de datos está en modo Full.

En el siguiente video te muestro como podes evitar este crecimiento sin impactar en tus políticas de backups para tus bases de datos OLTP

Para poder descargar los ejemplos que utilice en el video puedes hacerlo desde el siguiente link de GITHUB

https://github.com/maccotto/POST-BLOG/blob/main/SQLSERVER/indices%20y%20TLOGS.sql