SQL Server provee una herramienta robusta para auditar eventos a nivel de servidor, como a nivel de base de datos y sobre datos inclusive en consultas DML.
A continuación detallo los pasos necesarios para utilizar este tipo de auditoria.
1. En Audits, dentro de Security crear un nuevo Audit
2. Completamos la información del Audit, el cual servirá únicamente como medio de almacenamiento. Podremos crear varios audit con diferentes finalidades. Podemos establecerle límites de espacio y tiene una opción de apagar el sevidor si la auditoria falla.
3. Una vez creada la Audit procederemos a habilitarla, cualquier modificación sobre ella deberá esta deshabilitada.
4. El siguiente paso puede ser en 2 formas: 1 – Nivel de Servidor 2 – Nivel de Base de Datos.
1 – Nivel de Servidor
Sobre la opción de Server Audit Specification, crearemos una nueva.
5. En una nueva opción, hay diferentes grupos de opciones que podemos auditar, favor revisar el siguiente enlace donde se especifican las cualidades de cada grupo.
http://technet.microsoft.com/en-us/library/cc280663%28SQL.100%29.aspx
Vamos a realizar el ejemplo de auditar BACKUP/RESTORE y además, LOGIN de usuarios. Quedaría de la siguiente forma:
6. Una vez registrado la auditoria de servidor procederemos a activarla
7. Cuando existan LOGINS al servidor, respaldos o restauración de base de datos, vamos a tener información de ello en el “AuditModificaciones”
Podemos ver los Logins y el Backup que hice de prueba
8. El siguiente paso sería configurar la auditoria a nivel de base de datos
9. Especificamos la auditoria para la tabla “Clientes” en el evento INSERT, además especificamos auditoria ante cualquier cambio en la estructura de la base de datos (CREATE, ALTER, DROP)
10. Siempre la habilitamos porque se crea deshabilitada,
11. Vemos los resultados en el audit “AuditModificaciones”
Bernardo Robelo
.NET, Tecnologías Microsoft y Otros
viernes, 22 de noviembre de 2013
viernes, 1 de marzo de 2013
Utilizando Change Tracking y Chage Data Capture en SQL Server
Change Tracking es un
método que provee SQL Server 2008, para
determinar qué cambios ha ocurrido en los datos y estructura de la base de
datos.
Podemos realizar las siguientes funciones:
·
Funcionalidad con DML
·
Responde preguntas como:
o
Cuantas filas en la tabla han cambiado
o
Que Columnas ha cambiado
o
Que fila en particular ha sido actualizada
Configurando Change
Tracking
Para habilitarlo lo podemos hacer vía SSMS o por ALTER
DATABASE.
Se deberá configurar las siguientes opciones:
·
Change Tracking definirlo en True
·
Retention Period
Define la cantidad de tiempo que se le dara mantenimiento. Por defecto es 2
·
Tipo de Unidad de Retention Period. Dias, Horas, Minutos. Por defecto es Dias
·
Auto CleanUp.
Lo pondremos en ON para que automáticamente
limpie la información
O bien definir la siguiente instrucción T-SQL
ALTER
DATABASE AdventureWorksDW2008
SET
CHANGE_TRACKING = ON
(CHANGE_RETENTION
= 7 DAYS, AUTO_CLEANUP = ON)
Vemos lo que tenemos configurado:
SELECT * FROM sys.change_tracking_databases ctd
SELECT OBJECT_NAME([object_id]), * FROM sys.change_tracking_tables ctt
Al realizar INSERT, UPDATE o DELETE
podremos verificar la información de indica que se realizado una modificación
y en que numero de registro de una tabla
DECLARE @last_synchronization_version bigint
SET @last_synchronization_version =
CHANGE_TRACKING_Min_VALID_VERSION(2105058535);
SELECT CT.* FROM CHANGETABLE(CHANGES NOMBRE_TABLA,
@last_synchronization_version) AS CT
Habilitando el CDC (Change Data Capture)
Para habilitarlo en la base de datos utilizar la siguiente instrucción
T-SQL
EXECUTE sys.sp_cdc_enable_db;
Luego habilitarlo para una tabla específica, utilizaremos el ejemplo de la tabla llamada “Director”
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo'
,
@source_name = N'Director'
, @role_name = N'cdc_admin'
,
@capture_instance = N'Director'
,
@supports_net_changes = 1
El nombre de instancia de captura, es el nombre se utilizara para llamar
posteriormente a esta tabla en los CDC.
DECLARE
@begin_time datetime,
@end_time datetime,
@from_lsn
binary(10) , @to_lsn binary(10);
SET
@begin_time = GETDATE() -15;
SET @end_time = GETDATE();
SET
@from_lsn = sys.fn_cdc_map_time_to_lsn(
'smallest greater
than or equal', @begin_time);
SET @to_lsn = sys.fn_cdc_map_time_to_lsn(
'largest less than or
equal', @end_time);
SELECT * FROM cdc.fn_cdc_get_all_changes_Director(
@from_lsn, @to_lsn, 'all');
O bien obtener todo lo que ha realizado en la tabla
Director. Podemos ver las tablas creadas
en las tablas del sistema de la base datos.
SELECT * FROM cdc.Director_CT
miércoles, 27 de febrero de 2013
Creando un Portal Web usando WebPart
1. Crear un nuevo web Site llamado MiPortal
2. En la página de Default.aspx crear una tabla
con la estructura 2 Filas 3 Columnas
|
|
|
|
|
|
3. Mezclar las 2 primeras celdas en una sola de
esta forma y Agregar una Etiqueta de “Bienvenido a Mi Portal” y darle formato
Bienvenido a Mi
Portal
|
|
|
|
|
|
4. Agregar el WebPart Manager. Este control será el encargado de
administrar el estado y el comportamiento del resto de web parts que
incluyamos. Es un control no visible.
Debe estar en la primera parte antes de cualquier otro control de webparts.
5. En la segunda fila, vamos a agregar un control para cada celda y
lo renombraremos.
1. <asp:CatalogZone ID="LaZonaCatalogo"
2. <asp:WebPartZone ID="ZonaContenido”
3. <asp:WebPartZone ID="ZonaInformacion”
6. En la Zona de Informacion vamos agregar y luego
ejecutar nuestro proyecto
a. DropDownList
lo llamaremos cbRegiones y
agregaremos valores de Departamentos.
b. Control Calendar
c. AdRotator
7. En la zona de Contenido crearemos 2 controles
de usuario con datagrid y luego los agregaremos a esta Zona. Usar BD Northwind.
8. En la segunda Celda de la primera fila agregaremos un control de Menú
lo llamaremos MenuModos, lo rellenaremos
con las modalidades disponibles para “Display” nuestro portal.
En
las que encontramos:
·
Browse por Defecto
la de visualización
·
Catalog para definir las zonas utilizando el
Catalogzone
·
Design para definir las webpart gráficamente “Drag a
Drop”
9. Rellenamos el Menu:
VB.NET
Dim rootItem As New MenuItem("Seleccionar Modo")
For Each
mode As WebPartDisplayMode In
WebPartManager1.DisplayModes
If
mode.IsEnabled(WebPartManager1) Then
rootItem.ChildItems.Add(New MenuItem(mode.Name))
End If
Next
MenuModos.Items.Add(rootItem)
C#
MenuItem
rootItem = new MenuItem("Seleccionar Modo");
foreach (WebPartDisplayMode
mode in WebPartManager1.DisplayModes)
{
if (mode.IsEnabled(WebPartManager1))
rootItem.ChildItems.Add(new MenuItem(mode.Name));
}
MenuModos.Items.Add(rootItem);
10. En el
evento clik del menú agregaremos una
sentencia para asignarle al WebPartManager el modo seleccionado.
VB.NET
For Each
mode As WebPartDisplayMode In
WebPartManager1.DisplayModes
If
mode.Name = e.Item.Text AndAlso
mode.IsEnabled(WebPartManager1) Then
WebPartManager1.DisplayMode =
mode
Exit
For
End If
Next
C#
foreach (WebPartDisplayMode
mode in WebPartManager1.DisplayModes)
{
if (mode.Name == e.Item.Text &&
mode.IsEnabled(WebPartManager1))
{
WebPartManager1.DisplayMode = mode;
break;
}
}
Suscribirse a:
Entradas (Atom)