sábado, 30 de noviembre de 2024

Aumentar el rendimiento de windows 11

En Windows 11, el comando powercfg es útil para ajustar y personalizar los planes de energía del sistema. Para configurar tu equipo para un rendimiento máximo, puedes seguir estos pasos:


1. Abrir el símbolo del sistema como administrador:

  • Presiona Win + S, escribe "cmd", haz clic derecho en "Símbolo del sistema", y selecciona "Ejecutar como administrador".

2. Crear o habilitar el plan de alto rendimiento:

  • Para listar los planes de energía disponibles, escribe:

    cmd
    powercfg /L

    Esto mostrará una lista de los planes disponibles, incluidos "Equilibrado" y "Alto rendimiento".

  • Si "Alto rendimiento" está deshabilitado, habilítalo escribiendo:

    cmd
    powercfg /S SCHEME_MIN

3. Habilitar el modo "Máximo rendimiento" (si está disponible):

  • Windows 11 incluye un plan adicional llamado "Máximo rendimiento", generalmente oculto y diseñado para estaciones de trabajo de alto rendimiento. Para habilitarlo:

    cmd
    powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61
  • Luego, activa este plan:

    cmd
    powercfg /S e9a42b02-d5df-448d-aa00-03f14749eb61


miércoles, 23 de octubre de 2024

Crear acceso directo a aplicaciones WINE

 Para crear un acceso directo para una aplicación de Wine en Ubuntu, puedes seguir estos pasos:

  1. Ubica el ejecutable de la aplicación: Asegúrate de saber la ruta del archivo .exe de la aplicación que deseas ejecutar con Wine.

  2. Crea un archivo .desktop:

    • Abre una terminal.
    • Navega a la carpeta de aplicaciones del usuario:
      bash
      cd ~/.local/share/applications/
    • Crea un nuevo archivo .desktop con el nombre de tu aplicación. Por ejemplo:
      bash
      nano mi_aplicacion.desktop
  3. Edita el archivo .desktop: Agrega la siguiente configuración al archivo:

    ini
    [Desktop Entry] Name=Mi Aplicación Exec=wine /ruta/al/ejecutable/mi_aplicacion.exe Type=Application Terminal=false Icon=/ruta/al/icono/icono.png Categories=Wine;

    Asegúrate de reemplazar:

    • Mi Aplicación con el nombre que desees.
    • /ruta/al/ejecutable/mi_aplicacion.exe con la ruta real del ejecutable.
    • /ruta/al/icono/icono.png con la ruta de un icono si tienes uno (puedes omitir esta línea si no tienes icono).
  4. Guarda y cierra el editor: Si estás usando nano, presiona Ctrl + O para guardar y Ctrl + X para salir.

  5. Haz el archivo ejecutable: En la terminal, ejecuta:

    bash
    chmod +x mi_aplicacion.desktop
  6. Verifica el acceso directo: Deberías ver tu acceso directo en el menú de aplicaciones. Si no lo ves, puedes buscarlo usando el nombre que le diste.

Ahora deberías poder abrir tu aplicación de Wine fácilmente desde el menú de aplicaciones de Ubuntu. ¡Buena suerte!

martes, 24 de septiembre de 2024

Consulta SQL tabla relacionada con SubConsulta

Ante la necesidad de realizar consultas sobre una tabla maestra y otra relacionada con diferentes cardinalidad de resultados, detecté que es posible realizar una subconsulta con diferentes criterios de registro devueltos. 

Utilizando la palabra reservada OUTER APPLY  es posible indicar una subconsulta relacionada pero indicar TOP, Order by, etc


SELECT TOP (1000) [Expediente].*, mov.ID_Oficina

  FROM [Expediente]

 OUTER APPLY 

 (select top 1 * from Movimientos where [Expediente].[IdExpedienteAuto] = Movimientos.IdExpedienteAuto ) 

as mov



martes, 24 de octubre de 2023

Eliminar la memoria virtual en Windows 11

La memoria virtual es una técnica que permite al sistema operativo administrar eficientemente la memoria física y brindar la ilusión de que hay más memoria disponible de la que realmente existe. 
Cuando la CPU utiliza memoria virtual, realiza varias tareas adicionales en comparación con el acceso a la memoria física directamente, algunas de las tareas adicionales que realiza la CPU al utilizar memoria virtual:

1. Traducción de direcciones: La CPU necesita traducir direcciones de memoria virtual a direcciones de memoria física. Esto implica el uso de tablas de páginas o tablas de segmentos para mapear las direcciones virtuales a las direcciones físicas correspondientes. Este proceso agrega una sobrecarga al acceso a la memoria en comparación con la memoria física directa, donde no se requiere traducción.

2. Manejo de páginas de memoria: La memoria virtual implica dividir la memoria en páginas o segmentos. La CPU debe administrar estas páginas, incluida la asignación y desasignación de páginas, así como la administración de tablas de páginas. Esto agrega una carga de trabajo adicional a la CPU.

3. Manejo de fallos de página: Cuando un programa intenta acceder a una página de memoria que no está en la memoria física en ese momento (un fallo de página), la CPU debe manejar este evento. Esto implica cargar la página desde el almacenamiento secundario (generalmente un disco duro) a la memoria física. Este proceso es lento en comparación con el acceso a la memoria física directa y consume tiempo de la CPU.

4. Paginación y swapping: Para administrar eficazmente la memoria física, el sistema operativo puede realizar operaciones de paginación y swapping, que implican mover páginas entre la memoria principal y el almacenamiento secundario. Estas operaciones son necesarias para garantizar que las páginas más relevantes estén en la memoria física, pero también introducen sobrecarga adicional en la CPU.

5. Actualización de tablas de páginas: Cuando se realizan cambios en las páginas de memoria (escritura de datos), las tablas de páginas deben actualizarse para reflejar estos cambios. Esto implica operaciones de escritura adicionales y procesamiento en la CPU.

6. Verificación de permisos: La memoria virtual permite imponer permisos en las páginas de memoria, como solo lectura o lectura/escritura. La CPU debe verificar estos permisos cada vez que se accede a una página, lo que agrega una sobrecarga en términos de procesamiento.

Por todo ello el uso de memoria virtual introduce una serie de tareas adicionales que la CPU debe realizar para administrar eficientemente la memoria y proporcionar la ilusión de una memoria más grande. Aunque estas tareas agregan cierta sobrecarga al procesamiento, la flexibilidad y la administración eficiente de la memoria que proporciona la memoria virtual son fundamentales para el funcionamiento de sistemas operativos modernos.


¿Lo que queda por decidir es si se podría utilizar la computadora sin memoria virtual?

Según defirentes entornos de trabajo probados que fueron Windows 11 en diferentes equipos, se llegó a la conclusión que teniendo 16 GB o más de memoria principal, llamada generalmente RAM, el sistema se comporta correctamente ya que la carga de trabajo para el sistema operativo, ejecutando un servidor de base de datos SQL Server Express, nevegador web chrome con varias pestañas y una accediendo a youtube con video a 4K y algunas aplicaciones básicas de ofimática llegó a los 8 GB de memoria.


Por este motivo de manera práctica se demostró que bajo este escenario es posible la utilización de una PC con Windows 11 sin memoria virtual con el beneficio de que la misma funciona correctamente.
Además como dato adicional, en caso de poseer una unidad de almacenamiento SSD reducimos drásticamente la cantidad de escrituras a la unidad prolongando la vida útil de la misma.

lunes, 30 de noviembre de 2020

SQL Server configuration manager no aparece

El SQL Server configuration manager, debería estar como una entrada dentro del grupo de programas Microsoft Sql Server xxxx, pero si no está...

Puedes ejecutarlo directamente desde el cuadro de diálogo ejecutar (que a su vez puedes invocar con la combinación de teclas Windows + r.

En dicho diálogo, en el brir escribe:

SQLServerManager14.msc para SQL Server 2017

SQLServerManager13.msc para SQL Server 2016

SQLServerManager12.msc para SQL Server 2014

SQLServerManager11.msc para SQL Server 2012

SQLServerManager10.msc para SQL Server 2008

Luego presiona Enter.


Otra opción es accesible como complemento de la consola de administración (microsoft management console: mmc.exe).

Windows + r.

Luego escribes mmc y ejecutar.

Luego menú archivo, agregar o quitar complementos y buscas: SQL Server configuration manager

y listo.


viernes, 22 de mayo de 2020

IOPS de discos

Programa para testear los IOPS de discos.

https://gallery.technet.microsoft.com/DiskSpd-A-Robust-Storage-6ef84e62

Ejemplo:
diskspd.exe –c50G -d300 -r -w40 -t8 -o32 -b64K -Sh -L E:\diskpsdtmp.dat > DiskSpeedResults.txt


  • -c50G – file size 50 GB (it is better to use a large file size so that it does not fit in the cache of the storage controller);
  • -d300 – test duration in seconds;
  • -r – random read/write operations (if you need to test sequential access, use –s);
  • -t8 – number of threads;
  • -w40 – ratio of write to read operations 40%/60%;
  • -o32 — queue length;
  • -b64K — block size;
  • -Sh — do not use cache;
  • -L — measure latency;
  • E:\diskpsdtmp.dat – test file path.


miércoles, 14 de agosto de 2019

Campo calculado o columna calculada

Un campo calculado es un campo que no se almacena físicamente en la tabla. SQL Server emplea una fórmula que detalla el usuario al definir dicho campo para calcular el valor según otros campos de la misma tabla.
Un campo calculado no puede:
- definirse como "not null".
- ser una subconsulta.
- tener restricción "default" o "foreign key".
- insertarse ni actualizarse.

Puede ser empleado como llave de un índice o parte de restricciones "primary key" o "unique" si la expresión que la define no cambia en cada consulta.

 create table empleados(
  documento char(8),
  nombre varchar(10),
  domicilio varchar(30),
  sueldobasico decimal(6,2),
  cantidadhijos tinyint default 0,
  sueldototal as sueldobasico + (cantidadhijos*100)
 );

También puede ser una columna que llame a una función, pero esta debe ser determinista.
Muchas funciones dan que es no determinista, para ello se puede utilizar una palabra reservada en la definición de la función, WITH SCHEMABINDING.


Create FUNCTION [dbo].[fn_xxxxx]

(
    @String VARCHAR(32),
    @MatchExpression VARCHAR(32)

)

RETURNS VARCHAR(32)
WITH SCHEMABINDING
AS
...


Luego en la definición de la tabla

alter table tablaxxx add [campoCalculado] as dbo.fn_xxxxx( 'dato' , '^0-9');


También a esa columna se le puede crear un índice y hacer que las consultas sean óptimas. En ese caso hay que agregar la palabra reservada PERSISTED en la columna.

alter table tablaxxx add [campoCalculado] as dbo.fn_xxxxx( 'dato' , '^0-9') PERSISTED;

Luego de ello se puede crear el índice:

create index idx_campoCalculado on tablaxxx (campoCalculado);

jueves, 6 de diciembre de 2018

Instalar SQL Server en Linux

Pasos para instalar SQL Server 2019 en linux.

En mi caso los pasos de instalación propuesto en la página de Microsoft no funcionaron, pero agregando manualmente si se puede instalar.

Primero bajar el archivo

wget https://packages.microsoft.com/ubuntu/16.04/mssql-server-preview/pool/main/m/mssql-server/mssql-server_15.0.1100.94-1_amd64.deb

dpkg -i mssql-server_14.0.1.246-6_amd64.deb

Instalar las dependencias

sudo apt-get -f install


Nota: para instalar las versiones más nuevas se puede explorar la url https://packages.microsoft.com/ubuntu/16.04/ hasta localizar la versión más nueva.

Por ejemplo acá está la versión 2019.
https://packages.microsoft.com/ubuntu/16.04/mssql-server-2019/pool/main/m/mssql-server/


Para configurar el server 

sudo /opt/mssql/bin/mssql-conf setup


Para instalar el mssql-tools

wget https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/mssql-tools/

dpkg -i mssql-tools....

jueves, 12 de abril de 2018

Ubuntu 17.04 de versiones anteriores

Antes de pasar de Ubuntu LTS a Ubuntu 17.04 hemos de hacer unos cambios

Ubuntu tiene un gestor de actualizaciones que funciona bastante bien, pero sólo de una versión para otra o de versión LTS a versión normal. Es decir, si tenemos Ubuntu 16.10, seguramente ya nos habrá salido el mensaje de actualización, pero si tenemos otras versiones como Ubuntu LTS o Ubuntu 15.10, el sistema de actualización es un poco distinto.

Primero hemos de ir a Software y Actualizaciones. En esta ventana hemos a la pestaña “Actualizaciones” y en la parte inferior elegir la opción “Para cualquier versión nueva“. Esta opción revisará las nuevas versiones, no sólo las versiones LTS. Una vez que está cambiado, pulsamos el botón cerrar y nos vamos a la terminal.

Ahora en la terminal hemos de escribir lo siguiente:

sudo do-release-upgrade -d

Este comando de la terminal buscará las últimas versiones y nos la instalará. El proceso irá versión tras versión. Es decir, si tenemos Ubuntu 16.04 pasaremos a Ubuntu 16.10 y luego a Ubuntu 17.04. Si tenemos Ubuntu 15.10, primero pasaremos a Ubuntu 16.04, Ubuntu 16.10 y Ubuntu 17.04. Por lo que el pasado comando hemos de repetirlo varias veces.

martes, 13 de marzo de 2018

En ocasiones nuestro SQL Server consume demasiada CPU, un buen comienzo es localizar cuales son las consultas que más sobrecargan de media nuestro servidor.

Para ello, podemos utilizar el siguiente script que lista el top ten de las consultas que más cargan la CPU de nuestro servidor SQL.
 
 
SELECT TOP 10
qs.total_worker_time/qs.execution_count as [Avg CPU Time],
SUBSTRING(qt.text,qs.statement_start_offset/2,
(case when qs.statement_end_offset = -1
then len(convert(nvarchar(max), qt.text)) * 2
else qs.statement_end_offset end -qs.statement_start_offset)/2)
as query_text,
qt.dbid, dbname=db_name(qt.dbid),
qt.objectid
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY
[Avg CPU Time] DESC
 
 
Fuente: https://linube.com/blog/las-10-consultas-que-mas-cpu-consumen-en-sql-server/

jueves, 19 de octubre de 2017

Referencias cruzadas

Un ejemplo de como crear una referencia cruzada en sql server

drop table #datos

create table #datos (fila int, columna int, valor numeric(10,2))

insert into #datos (fila, columna, valor)values(1,1,10)

insert into #datos (fila, columna, valor)values(1,2,10)

insert into #datos (fila, columna, valor)values(2,3,10)

insert into #datos (fila, columna, valor)values(3,4,10)

DECLARE @columns varchar(MAX);
DECLARE @sql nvarchar(max)

SET @columns = STUFF( ( SELECT   ',' + QUOTENAME(columna) FROM (SELECT distinct columna FROM #datos ) AS T ORDER BY columna FOR XML PATH('') ), 1, 1, '');
print @columns

 SET @sql = N'
 SELECT
   *
  FROM
  (
  SELECT  fila, valor, columna
  FROM #datos
  ) AS T
  PIVOT 
  (
  sum(valor)
  FOR columna IN (' + @columns + N')
  ) AS P order by fila;';

EXEC sp_executesql @sql;


Si el resultado de la referencia cruzada quisieras utilizarlo combinado con otra tabla deberías inviarlo a una tabla temporal

drop table ##respuesta

 SET @sql = N'
 SELECT
   * into ##respuesta
  FROM
  (
  SELECT  fila, valor, columna
  FROM #datos
  ) AS T
  PIVOT 
  (
  sum(valor)
  FOR columna IN (' + @columns + N')
  ) AS P order by fila;
 ';

EXEC sp_executesql @sql;

select * from ##respuesta;


sábado, 17 de junio de 2017

Bibliografía - Y por AND

Al utilizar la bibliografía en Latex cuando hay varios autores escribe la palabra "and" en vez de "y" entre los autores.

Para que aparezca "y" en vez de "and", tenemos que editar el fichero ".bst"

Como este fichero es medianamente grande, lo podemos abrir con Wordpad o Notepad++ o el editor de texto que quieras. Creo que es demasiado grande para abrirlo con Notepad.

A continuación, buscamos el texto «" and "» y lo sustituimos por «" y "».  En este caso, solo está en dos sitios, en las funciones siguientes. (Aunque esto depende de cada archivo .bst)

martes, 13 de septiembre de 2016

Usuario Huérfano

Cuando se restaura una base de datos en un nuevo servidor los usuarios de la base son transferidos con ella, pero los inicios de sesión no.

Cuando se intenta crear el inicio de sesión y establecer el acceso a la base restaurada si el usuario ya existe da error.

Para solucionar esto y ligar el usuario de la base de datos con el inicio de sesión ejecutar:

ALTER USER usuariobase WITH Login = iniciosesion


Fuente: https://msdn.microsoft.com/es-AR/library/ms175475.aspx

viernes, 20 de mayo de 2016

Menú de Inicio de Windows 10 deja de andar

Después de un tiempo de usar windows 10 el menú dejó de andar.

Entrar a una consola en modo administrador, ejecutar el powershell

Escribir el siguiente comando.

Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

martes, 19 de abril de 2016

SQL Server Habilitar FileStream

Para habilitar la opción de FileStream en Sql Server se debe ir al Sql Server Configuration Manager a SQL Server (SQLEXPRESS), al nombre de la instancia y presionar botón derecho propiedades.

Ir a pestaña FileStream - Enable FILESTREAM for ......

Luego ejecutar desde el editor de consultas

EXEC sp_configure filestream_access_level, 2
RECONFIGURE

Reiniciar el servicio y debería estar...

Sorte amigo, a gente se ve.

jueves, 19 de noviembre de 2015

Obtener información de las conexiones existentes.

Si desea obtener información de las conexiones existentes a una base de datos, por el nombre del host, por el nombre de la base de datos o el inicio de sesión.


Drop table #TMP_TABLE

CREATE TABLE #TMP_TABLE (
SPID INT,
ecid int,
STATUS VARCHAR(32),
LOGINAME VARCHAR(32),
HOSTNAME VARCHAR(32),
BLK CHAR(8),
DBNAME VARCHAR(32),
CMD VARCHAR(255),
request_id int )

INSERT INTO #TMP_TABLE EXEC sp_who

SELECT COUNT(*)
FROM #TMP_TABLE
WHERE DBNAME = (nombre de la base de datos)
AND LEN(LTRIM(RTRIM(HOSTNAME))) > 0
AND HOSTNAME <> (maquina)


SELECT *
FROM #TMP_TABLE


-- Por base de datos
SELECT dbname, COUNT(*) as conexiones
FROM #TMP_TABLE
where dbname is not null
group by dbname
order by conexiones desc

SELECT COUNT(*) as total
FROM #TMP_TABLE
where dbname is not null

/*

SELECT dbname, COUNT(*) as conexiones
FROM #TMP_TABLE
where dbname is not null and status <> 'background'
group by dbname
order by conexiones desc


SELECT COUNT(*) as total
FROM #TMP_TABLE
where dbname is not null and status <> 'background'
*/


-- por usuarios

SELECT hostname, loginame, dbname, COUNT(*) as conexiones
FROM #TMP_TABLE
where dbname is not null
group by hostname, loginame, dbname
order by hostname, loginame, dbname, conexiones


SELECT hostname, loginame, dbname, COUNT(*) as conexiones
FROM #TMP_TABLE
where dbname is not null
group by hostname, loginame, dbname
order by conexiones desc, hostname, loginame, dbname



-- por maquina y base

SELECT hostname, dbname, COUNT(*) as conexiones
FROM #TMP_TABLE
where dbname is not null
group by hostname, dbname
order by conexiones desc, hostname, dbname


-- por maquina

SELECT hostname, COUNT(*) as conexiones
FROM #TMP_TABLE
where dbname is not null
group by hostname
order by conexiones desc, hostname


-- activas
SELECT *
FROM #TMP_TABLE
where dbname is not null
and status='runnable'


SELECT *
FROM #TMP_TABLE
where dbname is not null
and hostname = 'una aplicación'

miércoles, 4 de noviembre de 2015

Conectar java por jdbc a Sql Server Express 2012


Si intentas conectar java a la base de datos SQL Server Express por medio del jdbc de microsoft dice que no se puede establecer la conexión: cannot establish a connection to jdbc.

Luego de intentar varias cosas, reinicios de maquina y preguntar a varios, comencé a realizar pruebas, llegué a la conclusión que había que activar el puerto en la parte de configuración de protocolo para SQL SQLEXPRESS, que ya había tenido un problema similar y no recordaba bien. Comencé a buscar y encontre esta solución en un foro.

open SQL Server Configuration Manager -> Protocols for SQL SQLEXPRESS, select Properties of TCP/IP. In the tab IP Addresses, set the TCPPort in section IPAll to 1433.


Espero les sirva.



John wrote:My problem is the same as yours. I spent all day crawling from site to site to find the answer but the result is still the same: "The TCP/IP connection to the host has failed. java.net.ConnectException: Connection refused: connect". Enable Name pipes, TCP/IP, change Authentication mode, change localhost to 127.0.0.1 or ., add the Instance Name to the url, change the port, enable port and Apps in the firewall... almost everything. Its horrible! But the answer for MY problem is: open SQL Server Configuration Manager -> Protocols for SQL SQLEXPRESS, select Properties of TCP/IP. In the tab IP Addresses, set the TCPPort in section IPAll to 1433. And everthing 's OK. 
Again, i would like to say: it's the answer to my problem and may be not yours. 
Thanks!

Fuente: http://www.coderanch.com/t/306316/JDBC/databases/SQLServerException-TCP-IP-connection-host



miércoles, 19 de agosto de 2015

Deshabilitar constraint en sql server

Para deshabilitar constraint

--disable el constraint de una tabla
ALTER TABLE base.tabla NOCHECK CONSTRAINT CK_nombre

hacer algo con los datos

--enable el constraint de una tabla
ALTER TABLE base.tabla CHECK CONSTRAINT CK_nombre


O la opción más rápida

--disable el constraint de una tabla
ALTER TABLE base.tabla NOCHECK CONSTRAINT All

hacer algo con los datos

--enable el constraint de una tabla
ALTER TABLE base.tabla CHECK CONSTRAINT All

Monitorear SQL Server

Para realizar un monitoreo del servidor sql server se puede hacer utilizando la vista master.dbo.sysperfinfo

Ejecutar:

select
*
from
master.dbo.sysperfinfo


Se puede realizar filtros por el campo object_name que son los diferentes contadores:

select
*
from
master.dbo.sysperfinfo
where
object_name = 'SQLServer:SQL Statistics'
order by
counter_name


Las opciones de object_name son:

SQLServer:Access Methods                                                                                                      
SQLServer:Buffer Manager                                                                                                      
SQLServer:Buffer Partition                                                                                                    
SQLServer:Cache Manager                                                                                                        
SQLServer:Databases                                                                                                            
SQLServer:General Statistics                                                                                                  
SQLServer:Latches                                                                                                              
SQLServer:Locks                                                                                                                
SQLServer:Memory Manager                                                                                                      
SQLServer:SQL Statistics                                                                                                      
SQLServer:User Settable                                                                                                         

viernes, 19 de junio de 2015

Instalar servidor de escritorio remoto en linux

Para poder acceder a un Linux por escritorio remoto utilizando el paquete XRDP.
Probado en versión Debian Jessie.

Para instalar

aptitude install xrdp

Con eso debería andar. Ir en windows a escritorio remoto poner ip del linux y listo.

Si falla.
Algunos paso que hice fue:
Instalé un escritorio más liviano, LXDE

aptitude install lxde

Para configurarlo, editar el archivo
startwm.sh

sudo nano /etc/xrdp/startwm.sh

comentar la linea
#. /etc/X11/Xsession

por

startlxde