Entradas

Cómo Reducir el Tamaño de una Base de Datos en SQL Server

Cuando trabajamos con una base de datos en entornos de desarrollo o pruebas, es común que crezca más de lo necesario; sin embargo, al momento publicarla o compartirla, es fundamental reducir su tamaño al mínimo posible.

En este artículo te mostraré los comandos esenciales de SQL Server que te permitirán reducir el tamaño físico de tu base de datos.

Obtener el nombre de archivos y su tamaño, se usa la siguiente consulta:

SELECT name, type_desc, size/128 AS SizeMB FROM sys.database_files;

Nos da el siguiente resultado:

name type_desc SizeMB
db_Prueba ROWS 9
db_Prueba_log LOG 28

Se usa SHRINKFILE para reducir el tamaño de archivo y sp_MSforeachtable para regenerar los índices. Si no usa RECOVERY SIMPLE, el tamaño del log no cambia.

ALTER DATABASE db_CorreosInstitucionales_UPIICSA SET RECOVERY SIMPLE;
DBCC SHRINKFILE ('db_Prueba_log', 1);
DBCC SHRINKFILE ('db_Prueba', 1);
EXEC sp_MSforeachtable 'ALTER INDEX ALL ON ? REBUILD';
ALTER DATABASE db_CorreosInstitucionales_UPIICSA SET RECOVERY FULL;

Volviendo a ejecutar la consulta para obtener el tamaño, obtenemos:

name type_desc SizeMB
db_Prueba ROWS 7
db_Prueba_log LOG 1

Lo que nos confirma que sí se redujo el tamaño del archivo.

Agregar o eliminar usuarios en Windows desde la consola (y quitar la expiración de contraseña)

Agregar usuario (y agregarlo a los administradores)

NET USER Usuario contraseña /add
NET LOCALGROUP administradores Usuario /add

Eliminar usuario (y quitarlo de los administradores)

NET LOCALGROUP administradores Usuario /delete
NET USER Usuario /delete

Deshabilitar la expiración de contraseña

Se necesita WMIC para hacer la configuración desde la línea de comando, pero fue depreciado en enero de 2024. se puede reinstalar la utilidad con DISM con el siguinte comando:
DISM /Online /Add-Capability /CapabilityName:WMIC~~~~
Deshabilitar la expiración de contraseña:
wmic UserAccount where Name="Usuario" set PasswordExpires=False

Inicio de sesión automático (Archivo.REG)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"AutoAdminLogon"="1"
"DefaultUserName"="Usuario"
"DefaultPassword"="contraseña"
Se ejecuta con:
regedit.exe /S Archivo.REG

Enlaces

Script en Python para renombrar múltiples archivos PNG fácilmente

Normalmente, el comando rename de DOS hace bien su trabajo. Pero en casos especiales, donde los archivos deben seguir un patrón específico, se queda corto. En mi caso, solo necesitaba renombrarlos de forma secuencial. Es la segunda vez en menos de un mes que me enfrento a esta necesidad, así que decidí dejar por aquí un pequeño script generado por ChatGPT.
import os

# Get all .png files in the current directory
png_files = sorted([f for f in os.listdir('.') if f.lower().endswith('.png')])

# Rename each file
for i, filename in enumerate(png_files, start=1):
    new_name = f"image_{i:05}.png"
    os.rename(filename, new_name)
    print(f'Renamed "{filename}" -> "{new_name}"')

Script en Python para exportar consultas de SQL Server a un archivo de texto

Requisitos

Windows

Microsoft ODBC Driver 18 for SQL Server - https://learn.microsoft.com/es-es/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16#download-for-windows

Alpine

Buscar la versión de Microsoft ODBC Driver a instalar y descargarla. https://learn.microsoft.com/es-es/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16#alpine
curl -O https://download.microsoft.com/download/3/5/5/355d7943-a338-41a7-858d-53b259ea33f5/msodbcsql18_18.3.3.1-1_amd64.apk
apk add --allow-untrusted msodbcsql18_18.3.3.1-1_amd64.apk
/etc/odbc.ini
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.3.1
UsageCount=1

Python

pip install --upgrade pip
pip install pyodbc

Código

import pyodbc

#https://learn.microsoft.com/es-es/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16#download-for-windows

connectionString = f'DRIVER={{ODBC Driver 18 for SQL Server}};SERVER=localhost;DATABASE=prueba;UID=sa;PWD=contraseña;TrustServerCertificate=yes;'

conn = pyodbc.connect(connectionString) 


SQL_QUERY = "SELECT  GETDATE() AS col1;"

cursor = conn.cursor()
cursor.execute(SQL_QUERY)

fout = open('query.txt','w', encoding="utf-8")

for r in cursor.fetchall():
    fout.write(f'{r.col1}\n')

fout.close()
cursor.close()
conn.close()

Reinstalar Torch para ComfyUI


.\python.exe -m pip uninstall torch torchvision torchaudio
.\python.exe -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu126
.\python.exe -m pip install --force-reinstall numpy==1.26.4
.\python.exe -m pip install -U xformers --index-url https://download.pytorch.org/whl/cu126

Instalación de insightface para ComfyUI

Hay que ir a la carpeta ComfyUI\python_embeded

Es necesario saber la versión de Python

python -V


 En este caso la versión de Python es la 3.12.8, así que descargamos el wheel insightface-0.7.3-cp312-cp312-win_amd64.whl de la página https://github.com/Gourieff/Assets/tree/main/Insightface

Y se instala con el siguiente comando:

python -m pip install insightface-0.7.3-cp312-cp312-win_amd64.whl

Reinicio de asignación de puertos en Windows

Por alguna razón que me sobrepasa, no podía iniciar mi proyecto de servicio con VS Code, porque en resumen, el puerto estaba ocupado, lo curioso es que sólo manejo un puerto por servicio... y pues el puerto no estaba en uso.

Y como siempre, StackOverflow al rescate:

net stop winnat
net start winnat
Fuente