Introducción al curso

1

Cómo aprenderás sobre optimización de bases de datos en SQL Server

2

¬ŅPor qu√© es importante optimizar tu base de datos?

3

Lista de requerimientos

4

Instalación de herramientas

5

Instalación de la base de datos

6

Analizar un plan de ejecución

Conociendo los índices

7

¬ŅC√≥mo nos pueden ayudar los √≠ndices?

8

Analizar las consultas para crear índices

9

Cuál índice utilizar y cómo forzar uno en específico

10

¬ŅSiempre son buenos los √≠ndices?

Optimización de consultas

11

Qué es Merge y cómo podemos utilizarlo

12

Distintas opciones de utilizar Merge

13

Qué es un Trigger y cómo podemos crearlo

14

Manejo de errores en trigger

15

Triggers a nivel administrativo

16

Qué es un Constraint y cómo funciona

17

Tablas versionadas

18

Utilizando Full Text Search para b√ļsquedas

Queries m√°s inteligentes

19

Tipos de funciones

20

Cómo funcionan las funciones tabla

21

Cómo funcionan las vistas

22

Procedimientos almacenados

23

Tablas temporales vs. tablas variables

Optimización de base de datos

24

Configuración de un Database Mail

25

Planes de mantenimiento: ordenar los índices en nuestra base de datos

26

Planes de mantenimiento: estrategia de respaldos

27

Planes de mantenimiento: log de base de datos con un tama√Īo controlado

28

Configurando TempDB

Monitoreo

29

Monitoreo con sp_who3

30

Monitoreo de actividades

Conclusión

31

Conclusión del curso

No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Triggers a nivel administrativo

15/31
Recursos

Aportes 8

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

ūüéČūüĒ•Yo creo este ejemplo de un trigger donde cada vez que se insertara un usuario me iba a llegar un correo en tabla de cada usuario registrado, para esto el requerimiento es haber configurado si o si sp_send_dbmail y agregarle los parametros en donde se ejecuta el profile y el correo ūüíöya agregue una columna llamada load_date para verificar el ultimo(s) usuarios nuevos dentro de la tabla UsuarioTarget

CREATE TRIGGER [dbo].[send_email_insert_usuario_new]
ON [dbo].[UsuarioTarget]
FOR INSERT
AS
BEGIN
    SET NOCOUNT ON;
	SET ANSI_WARNINGS OFF
	DECLARE @database NVARCHAR(MAX) = N''
	DECLARE @tableHTML nvarchar(max)
	DECLARE @Table NVARCHAR(MAX) = N''
	DECLARE @subject_content NVARCHAR(MAX) = N''

	SELECT @Table = @Table +'<tr style="background-color:'+CASE WHEN (ROW_NUMBER() OVER (ORDER BY id))%2 =1 THEN '#A3E0FF' ELSE '#8ED1FB' END +';">' +
'<td>' + CAST(CONVERT(varchar, CAST(RTRIM((id)) AS varchar), 1) AS varchar) + '</td>' +
'<td>' + CAST(CONVERT(varchar, CAST(RTRIM((name)) AS varchar), 1) AS varchar) + '</td>' +
'<td>' + CAST(CONVERT(varchar, CAST((load_date) AS date), 1) AS varchar) + '</td>'  + '</tr>'
FROM [dbo].UsuarioTarget 
WHERE (load_date > GETDATE() - 1) 

select @database  = (select DB_NAME() AS [Current Database])

SET @subject_content = 'User Record Inserted in ' + @database

SET @tableHTML = 
N'<H3>Catalogue Users</H3>' +
N'<table border="1" align="center" cellpadding="2" cellspacing="0" style="font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;text-align:center; border-collapse: collapse; width: 100%;" >' +
N'<tr style ="font-size: 14px;font-weight: normal;background: #b9c9fe;">
<th>User ID</th>
<th>Name User</th>
<th>Date</th>' + @Table  + N'</table>' + N'<br>' + N'<br>' 

print @database

    IF EXISTS (SELECT MAX(load_date) FROM UsuarioTarget )
    BEGIN
        EXEC msdb.dbo.sp_send_dbmail
          @recipients = '[email protected]', 
          @profile_name = 'Email',
          @subject = @subject_content,
          @body = @tableHTML,
		  @body_format = 'HTML' ;
    END
END
go

Que poderoso pueden ser los triggers de lado de la administración de servers para Base de Datos.

Los triggers nos facilitan la vida. Los usar√© de manera m√°s seguida. ūüėĄ

En nuestra empresa se crean triggers de servidor, para mejorar la seguridad de acceso. Se valida, servidor, programa donde se ejecuta. Este es un ejemplo, ell de nuestra empresa es mucho m√°s complejo y genera auditoria adicional.

CREATE TRIGGER strRejectSSMSConnectionForSQLLogin1
ON ALL SERVER FOR LOGON
AS
BEGIN

    IF ORIGINAL_LOGIN() = N'SQLLogin1' AND PROGRAM_NAME() LIKE N'Microsoft SQL Server Management Studio%'
    BEGIN
        RAISERROR('Direct connection by SSMS refused.', 16, 1)
        ROLLBACK
    END

END

https://dba.stackexchange.com/questions/231228/how-to-deny-access-to-sql-server-to-certain-login-over-ssms-but-allow-over-net

No tenía presente el uso de los trigger, por ahora entiendo que se puede controlar errores, usar para temas administrativos; Se debe tener cuidado con el uso de ellos.

El uso inadecuado o excesivo de los triggers puede disminuir considerablemente el rendimiento de la base de datos. Hay que tener cuidado de no usarlos indiscriminadamente

La ruta para encontrar los trigger de bases de datos es:
Databases / Nombre de la BD (Platzi) / Programmability / Database Triggers

Triggers administrativos.

-- Trigger on a CREATE, ALTER, DROP, GRANT, DENY, 
-- REVOKE or UPDATE statement (DDL Trigger)  
  
CREATE [ OR ALTER ] TRIGGER trigger_name   
ON { ALL SERVER | DATABASE }   
[ WITH <ddl_trigger_option> [ ,...n ] ]  
{ FOR | AFTER } { [event_type] | event_group } [ ,...n ]  
AS { sql_statement  [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier >  [ ; ] }  
  
<ddl_trigger_option> ::=  
    [ ENCRYPTION ]  
    [ EXECUTE AS Clause ]

event_type
event_group