Ir al contenido principal

Entradas

Numero de registros y espacios para todas las tablas

Hay veces que estamos buscando saber cuantos registros tenemos en todas las tablas o el espacio utilizado por todas las tablas, para eso podemos usar el siguiente query. select o.name, o.create_date, Reserved_space = sum(a.total_pages)*8/1024,  rows = sum(case when (p.index_id < 2) and (a.type = 1) then p.rows else 0 end) from sys.objects o join sys.partitions p on p.object_id = o.object_id join sys.allocation_units a on p.partition_id = a.container_id where o.type = 'U' group by o.name, o.create_date order by rows desc En este caso el resultado esta ordenado por el numero de registros en cada tabla (primero las tablas con mas registros) se pudiera cambiar por el espacio utilizado. Saludos.

attributes do not match. Present attributes

Al estar tratando de Instalar el SP1 de SQL Server 2008 R2, obtuve el siguiente error: attributes do not match. Present attributes (Directory, Compressed) , included attributes (0), excluded attributes (Compressed, Encrypted) Al parecer el error no es exclusivo del service pack, tambien puede aparecer al estar instalando alguna nueva opcion o el mismo SQL Server. Esto se debe a que el disco donde estaban los binarios de SQL server estaban con la compresion de Windows, el sysadmin tuvo una alarma de disco y se le hizo facil comprimir todo el disco C. La solucion es quitar la opcion de compress si no de todo el disco al menos de la carpeta "Microsoft SQL Server" del folder program files, para hacer esto hay que dar click derecho en la carpeta y en el tab de generales o general hacer click en opciones avanzadas, ahi quitar el check de “Compress contents to save disk space” y si esta habilitado tambien quitar la opcion " encrypt contents to secure data” Esto puede ...

Auditoria de Cambios en Oracle

Para poder saber los cambios en cualquier esquema en oracle como cambios de columna en alguna tabla, drop de algun objeto etc. podemos utilizar un trigger. El primer paso es crear una tabla como la que sigue: CREATE TABLE "SYS"."AUDIT_TABLE" ("D" DATE, "OSUSER" VARCHAR2(255) ,"CURRENT_USER" VARCHAR2(255), "HOST" VARCHAR2(255), "TERMINAL" VARCHAR2(255), "OWNER" VARCHAR2(30), "TYPE" VARCHAR2(30), "NAME" VARCHAR2(30), "SYSEVENT" VARCHAR2(30)) Una vez creada creamos el trigger: CREATE OR REPLACE TRIGGER "SYS"."AUDIT_DDL_TRG" AFTER DDL ON DATABASE begin insert into audit_table( d, osuser, current_user, host,terminal, owner, type, name, sysevent ) values( sysdate, sys_context('USERENV','OS_USER') , sys_context('USERENV','CURRENT_USER') , sys_c...

Activar o Desactivar modo Archive log Oracle

El modo archive log nos permite poder realizar respaldos con la BD arriba ademas de poder hacer recuperacion "point in time". El contra de esto es que vamos a necesitar espacio para poder guardarlos, el cual dependera de la carga de transacciones de nuestra BD. Primero hay que ver si nuestra BD esta en modo Archive o no. Para lo cual en sql plus ejecutamos: Archive log list. La imagen de arriba indica que nuestra BD no esta en modo archive log. Para hacerlo hay que seguir los siguientes pasos: Modificar el archivo init para agregar los siguientes parametros: log_archive_start = true (si se esta en version 9 o inferior, en 10 ya no es necesario) log_archive_dest = '[Directorio de destino de los archives]' Detener la BD. Iniciar la BD en modo mount. En el SQL Plus ejecutar: alter database archive log Abrir la base de datos con "alter database open" Y otra vez archive log list para verificar los cambios. Para probar...

ORA-01555 snapshot too old

Este tipo de errores, se presenta cuando alguna transaccion trata de leer algo que ya no esta en el undo tablespace o en uno de los segmentos de rollback. Puede ser por que el tablespace de undo ya no tuvo espacio para crecer o por que el undo_rentention es insuficiente y oracle sobreescribe datos que ya no entran dentro de la ventana de retencion. La solucion es aumentar el undo_retention hasta para que sea igual al query de mayor duracion que tengamos. Espero que ayude.

Pausar una instancia de SQL Server en Cluster

Cuando necesitamos hacer algun mantenimiento en las BD, y los usuarios no dejan de conectarse, una solucion practica es pausar el servicio de SQL Server, al estar pausado las conexiones ya hechas no seran afectadas y seguiran corriendo normalmente, pero SQL Server no permitira conexiones nuevas. Para pausar SQL Server podemos hacerlo desde el SQL Server configuration manager para SQL 2005 o desde el SQL Server Service manager de SQL 2000, simplemente hay que seleccionar la instancia que necesitamos hacer click en pausa y listo. Hay que recordar que este setting es por la instancia, o sea que afectara todas las BD del server. Para una instancia de SQL 2000 en cluster esto no es posible hacerlo pues los iconos estan deshabilitados. Para poder pausar una instancia de cluster hay que ejecutar los siguiente desde la linea de comandos: net pause mssql$nombredeinstancia y para quitar la instancia de pausa ejecutar: net continue mssql$instancename Espero que sea util. Saludos.

Como saber que Service Pack tengo instalado en SQL Server?

Para saber que Service pack se tiene instalado en SQL Server, Hay que ejecutar el siguiente comando: SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition') Este regresa algo parecido a: 9.00.3042.00 SP2 Enterprise Edition El primer registro es la versión, el segundo es el nivel de producto (en este caso Service pack 2), y el ultimo es la edición, En este caso Enterprise. Esta es una tabla con las versiones de SQL y su respectivo Service pack. RTM SP1 SP2 SP3 SP4 SQL Server 2017 SQL Server 2016 13.0.2149.0 13.0.4001.0 SQL Server 2014 12.0.2000.8 12.0.4100.1 12.0.5000.0 SQL Server 2012 11.0.2100.60 11.0.3000.00 11.0.5058.0 11.0.6020.0 11.0.7001.0 SQL Server 2008 R2 10.50.1600.1 10.50.2500.0 10.50.4000.0 10.50.6000.34 SQL Server 2008 10.00.1600.22   10.00.2531.00 10.00.4000.00 10.00.5500.00 10.0.6000.29 SQL Server 2005 9.00.1399 9.00.2047 9.00.3042 9.00.4035 9.00.5000 SQL Serve...