DDL

Registro de un DDL

Foros IT

 

Retomando un poco el tema de auditoria

 

Tengo activada la auditoria en una db 11g y se que los DDL que son por sesion de usuario diferente a SYS se registran en la tabla DBA_AUDIT_TRAIL, pero por ejemplo si reviso la columna LAST_DDL_TIME de la tabla DBA_OBJECTS me aparece que en el objeto TABLA1 el last DDL fue del dia 10/04/2013 y si reviso ese objeto en la tabla dba_audit_trail no tengo ningun registro referente a ese objeto. 

 

Como puedo saber que DDL (ALTER, CREATE, DROP, etc) se ejecuto en ese objeto? 

 

 

Cómo reiniciar el valor de un campo identity de SQL Server

Si una tabla de SQL Server tiene un campo de tipo identidad, o identity, en un momento dado puede interesar volverlo a dejar con su valor inicial, o a otro valor que interese para que siga autoincrementándose a partir del mismo.

Con un sencillo comando DBCC se puede dejar el valor actual del campo identity al que se desee, aunque hay que tener cuidado con no utilizar un valor que al incrementarse se pueda encontrar registros que ya existan con ese valor.

Lo más habitual es utilizar este comando cuando, por ejemplo, se eliminan todos los registros de una tabla, y se quiere volver a comenzar a insertar registros identificados por el campo autoincremental a partir de un valor inicial, normalmente 0. Si se utiliza para cualquier otra cosa hay que tener cuidado con los conflictos que puedan aparecer con registros existentes en la tabla.

  Este es el comando para inicializar a cero el valor actual del autoincremental de un campo identity de la tabla 'mi_tabla', en una base de datos SQLServer: DBCC CHECKIDENT ('mi_tabla', RESEED,0)   Espero que sea de utilidad,

Cómo crear una tabla con una select (CTAS) en SQLServer

En Oracle, para crear fácilmente una tabla a partir de una consulta SQL se puede utilizar la siguiente sentencia:

CREATE TABLE NuevaTabla AS (SELECT * FROM OtraTabla);

Este tipo de sentencia se conoce como Create Table As Select (CTAS). Es muy útil para hacer pruebas rápidas con datos, para crear tablas de muchos campos que se parecen mucho a otras, o para 'materializar' una vista creando una tabla a partir de la select sobre la vista.

 

El caso es que en SQL Server también se puede hacer lo mismo, pero la sintaxis cambia bastante, y para el que esté más acostumbrado a la de Oracle puede serle útil saber que con SQL Server, para crear una tabla a partir de una sentencia SQL se puede utilizar una instrucción como esta:

SELECT * INTO NuevaTabla FROM OtraTabla;