Skip to main content

Posts

How to "safely" truncate history tables in Zabbix 6 before enabling timescale.

The script was tested against Zabbix 6.0 and 6.2. I'll add a proper introduction soon. If you don't fully understand every single line better don't run it in production. --RECREATING HISTORY TABLES WITH DATA. INSTEAD OF "WHERE FALSE" YOU CAN USE "WHERE CLOCK > X" IF YOU WANT TO PRESERVE SOME DATA ALTER TABLE history RENAME TO history_big; CREATE TABLE history as SELECT * FROM history_big where false; ALTER TABLE history_uint RENAME TO history_uint_big; CREATE TABLE history_uint as SELECT * FROM history_uint_big where false; ALTER TABLE history_str RENAME TO history_str_big; CREATE TABLE history_str as SELECT * FROM history_str_big where false; ALTER TABLE history_log RENAME TO history_log_big; CREATE TABLE history_log as SELECT * FROM history_log_big where false; ALTER TABLE history_text RENAME TO history_text_big; CREATE TABLE history_text as SELECT * FROM history_text_big where false; ALTER TABLE history_text RENAME TO history_text_big; CREATE TABLE...
Recent posts

About kubernetes

I'd like a way to have a fully automated configuration deploy, integrated with hardware escalation. Kubernetes can be the key also for cross datacenter solutions. Traefik seems to be the last good tested tool for firewall, which has full integration with kubernetes. Update 22.03.2023: nope

Historial de restauraciones SQL Server

El siguiente script tiene por finalidad entregar información sobre las restauraciones realizadas en una instancia SQL Server. SELECT destination_database_name AS 'Database Name', restore_date AS 'Date Restored', CASE restore_type WHEN 'D' THEN 'Full Backup' WHEN 'I' THEN 'Diffrential backup' WHEN 'L' THEN 'Log Backup' END AS 'Restored From', CASE recovery WHEN 1 THEN 'Yes' WHEN 0 THEN 'No' END AS 'With Recovery', backup_finish_date AS 'Backup taken', Cast(backup_size/1024/1024 AS numeric(10,2)) AS 'Backup Size(MB)' , physical_device_name AS 'Backup Location' FROM msdb..restorehistory, msdb..backupset, msdb..backupmediafamily WHERE msdb..restorehistory.backup_set_id= msdb..backupset.backup_set_id AND msdb..backupset.media_set_id=msdb..backupmediafamily.media_set_id ORDER BY destination_database_name, restore_date DESC;

Linked server desde SQL Server 2012 a Oracle 11G

Primero se debe instalar cliente oracle (modo administrador) y configurar un registro en TNSNAMES (con NETCA) apuntando a la base de datos de destino. Puedes descargar el cliente desde acá . Luego, en la base de datos primaria (SQL Server), se deben ejecutar los siguientes comandos en la base de datos master: 1.- AllowInProcess: exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'AllowInProcess', 1 2.- DynamicParameters: exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'DynamicParameters', 1 3.- Destiny: exec sp_addlinkedserver N'DESTINO', 'Oracle', 'ORAOLEDB.Oracle', N'//<ip del servidor de destino>/<instancia>', N'FetchSize=2000', '' 4.- RPC out: exec master.dbo.sp_serveroption @server=N'DESTINO', @optname=N'rpc out', @optvalue=N'true' 5.- Remote server: exec sp_addlinkedsrvlogin @rmtsrvname='N'DESTINO', @useself=N'FALSE'...

Información de backups

El siguiente script tiene por objetivo entregarnos toda la información correspondiente a los respaldos realizados sobre todas las bases de datos de una instancia. En el mismo se encuentra un filtro que nos permite saber la información de un día exacto. Dicho script ha sido probado exitosamente desde la versión SQL Server 2000 hasta 2014 SELECT A.[Server] as Servidor, --B.backup_start_date Fecha_inicio, A.last_db_backup_date as Fecha, --B.expiration_date, B.backup_size as [Tamaño(bytes)], --B.logical_device_name as Nombre_logico, B.physical_device_name as Nombre_fisico --B.backupset_name as Backup_set, --B.description as Descripcion FROM ( SELECT CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, msdb.dbo.backupset.database_name, MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date FROM msdb.dbo.backupmediafamily INNER JOIN msdb.dbo.backupset ON msdb.dbo.backu...

Tamaño de datafiles SQL Server 2000

Los siguientes scripts tiene por finalidad mostrar el tamaño de los datafiles y log files de todas las bases de datos de una instancia. En el primer ejemplo se muestra también el tipo de recuperación configurado en la base datos mientras que el segundo es compatible con instancias SQL Server 2000 y superiores. --SQL 2005 O SUPERIOR SELECT DBID ,D.NAME ,D.COMPATIBILITY_LEVEL ,D.RECOVERY_MODEL_DESC ,CONVERT(DECIMAL(18,2),(SUM(SIZE)*8)/1024.0) AS DB_SIZE_IN_MB ,(SELECT (SIZE*8)/1024.0 FROM SYS.SYSALTFILES WHERE DBID=SAF.DBID AND GROUPID=0) AS LOG_SIZE_IN_MB FROM SYS.SYSALTFILES SAF JOIN SYS.DATABASES D ON SAF.DBID=D.DATABASE_ID WHERE GROUPID>0 GROUP BY DBID,D.NAME,D.COMPATIBILITY_LEVEL,D.RECOVERY_MODEL_DESC --SQL 2000 O SUPERIOR SELECT SAF.DBID AS [DBID] ,D.NAME AS [NOMBRE] --,D.CMPTLEVEL ,CONVERT(DECIMAL(18,2),(SUM(SIZE)*8)/1024.0) AS [TAMAÑO DATAFILE MB] ,(SELECT CONVERT(DECIMAL(18,2),(SIZE*8)/1024.0) FROM [MASTER].[DBO].[SYSALTFILES] WHERE DBID=SAF.DBID AND GROUP...

Activar STAND-BY en SQL Server 2000 (Log Shipping)

El siguiente script tiene por propósito dejar abiertas (Lectura y escritura), las bases de datos Standby en una configuración de Log Shipping en SQL Server 2000 (No compatible con versiones más recientes). Espero se entienda que este script debe ser ejecutado en el servidor STANDBY. Se debe tener en consideración también que solo se debe ejecutar en caso de contingencias o a nivel de testing, ya que al dejar activo el nodo secundario, la configuración de Log Shipping deja de funcionar y debe ser reconfigurada. Acá el script: DECLARE @NAME_DB VARCHAR(100) DECLARE REST_DB CURSOR FOR SELECT NAME FROM DBO.SYSDATABASES WHERE DATABASEPROPERTYEX(NAME,'ISINSTANDBY') = 1; OPEN REST_DB FETCH NEXT FROM REST_DB INTO @NAME_DB WHILE @@FETCH_STATUS = 0 BEGIN EXEC ('ALTER DATABASE '+ @NAME_DB +' SET SINGLE_USER WITH ROLLBACK IMMEDIATE'+ CHAR(13) + 'GO') EXEC ('RESTORE DATABASE '+ @NAME_DB +' WITH RECOVERY'+ CHAR(13) + 'GO') EXEC (...