Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Practica 7-Auditando una base de datos en SQLServer, Ejercicios de Programación de Bases de Datos

Una práctica de auditoría de una tabla en SQL Server por medio de disparadores. Se explica el uso de los triggers o desencadenadores en MS SQL Server, los cuales permiten personalizar la auditoría de datos y controlar cierto tipo de operaciones. Se detalla cómo crear un seguimiento de los cambios básico a nivel de tabla y se muestra un ejemplo de código para hacer tracking de quién inserta o modifica cada registro. Además, se brindan algunos comentarios a tener en cuenta a nivel general cuando se trabaja con triggers.

Tipo: Ejercicios

2019/2020

A la venta desde 19/05/2023

ZeroTwoUwU
ZeroTwoUwU 🇲🇽

10 documentos

1 / 14

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Administración de BD
INSTITUTO TECNOLÓGICO SUPERIOR DE CALKINI
EN EL ESTADO DE CAMPECHE
Administración de Base de Datos
Profesora: MIRIAN MAGALY CANCHE CAAMAL
Integrantes:
Luis Enrique Canche Balam
Jhosue Darling Avila Yam
Jared Abimael Uc Chable
1er Parcial
Practica #7: Auditando una base de datos en sql server
Grupo: A
Fecha:
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Vista previa parcial del texto

¡Descarga Practica 7-Auditando una base de datos en SQLServer y más Ejercicios en PDF de Programación de Bases de Datos solo en Docsity!

Administración de BD

INSTITUTO TECNOLÓGICO SUPERIOR DE CALKINI

EN EL ESTADO DE CAMPECHE

Administración de Base de Datos

Profesora: MIRIAN MAGALY CANCHE CAAMAL

Integrantes:

Luis Enrique Canche Balam

Jhosue Darling Avila Yam

Jared Abimael Uc Chable

1er Parcial

Practica #7: Auditando una base de datos en sql server

Grupo: A

Fecha:

INTRODUCCIÓN

SQL Server: Auditoría de datos personalizada mediante triggers Los triggers o desencadenadores son disparadores que saltan cuando realizamos la acción o evento al que van asociados. En MS SQL Server, además de los triggers clásicos relacionados con acciones DML (insert, update, delete) que se ejecutan en su lugar (instead of) y después (after triggers), desde SQL Server 2008 (por lo menos) existe otro tipo que son los triggers asociados a acciones que se producen por consultas DDL. Este segundo tipo de trigger está más pensado para labores administrativas como la propia auditoria, para el control de cierto tipo de operaciones e incluso evitar esos cambios. Con la combinación de ambos tipos de trigger podemos conseguir una auditoria bastante completa para saber quién se conecta, cuando lo hace, que objetos modifica e incluso que registros ha modificado y/o guardar una copia del registro anterior si hablamos de una tabla sensible. Para hacer un seguimiento de los cambios básico a nivel de tabla. Podemos usar los triggers que se lanzan a causa de consultas DML (insert, update) para hacer tracking de quien inserta o modifica cada registro. Luego elegiremos que tipo de trigger usaremos, el que se desencadena posteriormente al evento (AFTER, equivalente a FOR de versiones anteriores) o el que desencadena en lugar de la acción (INSTEAD OF). Tanto en un tipo de trigger como en el otro, podemos hacer referencia a los nuevos valores mediante una tabla inserted u otra tabla deleted para acceder a los registros anteriores a la modificación. OBJETIVO

 Crear una auditoria de una tabla en SQL Server por medio de disparadores.

MATERIAL Y EQUIPO

  1. Computadora personal o Laptop
  2. Sistema Operativo Windows 7, 8 0 10
  3. Procesador de Textos
  4. Instalador SQL Server 2012
  5. Acceso a internet DESARROLLO DE LA PRÁCTICA I. Crear equipos de un máximo de 3 alumnos

SET NOCOUNT ON

DECLARE @User nvarchar(30) DECLARE @SysDate datetime DECLARE cInserted CURSOR FOR SELECT EmployeeID FROM inserted; DECLARE @ID int SELECT @SysDate = GETDATE() SELECT @User = SUSER_NAME() OPEN cInserted FETCH NEXT FROM cInserted INTO @ID WHILE @@FETCH_STATUS = 0 BEGIN UPDATE EmpTable SET RowModififer = @User, RowModifiedDate = @SysDate WHERE ID = @ID FETCH NEXT FROM cInserted INTO @ID END CLOSE cInserted DEALLOCATE cInserted END En el ejemplo anterior, tanto para la actualización como para la inserción estamos capturando solo los últimos cambios y solo datos de auditoría. En otro ámbito o tipo de datos, además nos puede interesar guardar en otra tabla anexa los antiguos valores del registro modificado (Imaginaros una tabla sensible con datos de configuración de la que queremos guardar el historial de cambios). Lo podemos conseguir con un trigger similar al siguiente: -- Esta sería una posible estructura de la tabla original de configuración CREATE TABLE [dbo].[ConfigurationTable]( [KeyID] [int] IDENTITY(1,1) NOT NULL, [ParameterCode] nvarcharNOT NULL, [ParameterDescription] nvarchar NULL, [ParameterValue] nvarchar NULL PRIMARY KEY (ParameterCode) ON [PRIMARY]) -- Nosotros querríamos saber el historial de cambios. Crearíamos otra tabla con una estrucutra similar... CREATE TABLE [dbo].[ConfigurationTable_OldValues]( [KeyID] [int] NOT NULL, [ParameterCode] nvarcharNOT NULL, [ParameterDescription] nvarchar NULL, [NewParameterValue] nvarchar NULL, [OldParameterValue] nvarchar NULL,

[RowModifier] nvarchar, [RowModifiedDate] datetime) -- Creamos el trigger para controlar la actualización de la tabla original e insertar los datos en la tabla de valores históricos ([ConfigurationTable_OldValues]) CREATE TRIGGER ConfigurationTable_AfterUpdate ON ConfigurationTable AFTER UPDATE AS BEGIN SET NOCOUNT ON DECLARE @User nvarchar(30) DECLARE @SysDate datetime DECLARE cInserted CURSOR FOR SELECT [KeyID], [ParameterCode], [ParameterDescription], [ParameterValue] FROM inserted DECLARE @keyId int DECLARE @parametercode nvarchar DECLARE @parameterdescription nvarchar DECLARE @parametervalue nvarchar SELECT @SysDate = GETDATE() SELECT @User = SUSER_NAME() OPEN cInserted FETCH NEXT FROM cInserted INTO @keyId , @parametercode , @parameterdescription , @parametervalue WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO [ConfigurationTable_OldValues] ([KeyID], [ParameterCode], [ParameterDescription], [NewParameterValue], [OldParameterValue] , [RowModifier] , [RowModifiedDate] ) SELECT @keyId, @parametercode, @parameterdescription, @parametervalue, d.[ParameterValue] , @User, @sysdate FROM deleted d WHERE d.[ParameterCode] = @parametercode FETCH NEXT FROM cInserted INTO @keyId , @parametercode , @parameterdescription , @parametervalue END CLOSE cInserted

Diagrama hecho en ER/studio

  1. Crea la base de datos PIzzería
  1. En la tabla detalle pedido crea los disparadores necesarios para controlar cuando se modifique los datos de un pedido la cantidad y pizza compradas.

Eliminación de datos

  1. La auditoría se debe ver reflejada en la tabla DetallePedidoHistorial(Tabla creada para la auditoria) Aquí podemos apreciar el historial de los trigger que hicimos las modificaciones

Conclusión

Se aprendió a crear trigger de eliminar, actualizar e insertar datos en

una base de datos, al principio tuvimos de buscar mucha información

acerca de cómo hacerlo leyendo nos dimos cuenta que es muy fácil

crear los trigger. Los resultados obtenidos fueron muy buenos ya que

gracias a ello se pudo hacer la practica

Referencias

Hotek, J. M. (s.f.). Microsoft SQL Server 2005. Obtenido de Diseño de una estructura de servidor de base de datos. MCITP Examen 70-443: Biblioteca UDB – Clasificación: 005.361 M158 2007 Jorden, M. G. (2006). La biblia de SQL Server 2005. Obtenido de Biblioteca UDB – Clasificación: 005.361 G975 2006 Ojeda, F. C. (s.f.). SQL Server 2008. Obtenido de Biblioteca UDB: https://msdn.microsoft.com/es- es/library/ms191465(v=sql.110).aspx