SQL Server Management Studio (SSMS) cada vez está mejorando y mejorando con cada nueva versión, pero Microsoft parece no tener en cuenta un gran problema que afecta a un grupo de usuarios que va creciendo de una forma rápida a medida que la tecnología avanza y pasamos a las estaciones de trabajo más modernas y el uso de computadoras portátiles (laptops).
No hace mucho tiempo cambié mi antigua computadora portátil Dell XPS que me fue muy útil en los últimos 5 años. Para poder satisfacer mis necesidades de trabajo, adquirí una moderna máquina de juegos Inspiron 15 con una pantalla UHD de 15.6 pulgadas (3840 x 2160). La cual vino con un sistema operativo Windows 10 y está haciendo un buen trabajo en administrar el tamaño del texto, los íconos y otros elementos en la mayoría de los programas. Pero sin embargo, una cosa que me estaba molestando desde el principio era la apariencia visual de SSMS.
Por lo tanto, lo primero que hice fue ir a revisar el registro de cambios de SSMS y todas las versiones anteriores para encontrar información acerca de la resolución 4K y el soporte de un High DPI. La actualización 16.3 (número de versión: 13.0.15700.28) para SSMS incluye soporte inicial beta para permitir que un HIGH DPI en el SSMS se muestre de forma adecuada en monitores de alta resolución. Además, se confirma que esta funcionalidad está deshabilitada de forma predeterminada debido al desarrollo y las pruebas continuas para mejorar el soporte de un HIGH DPI en el SSMS.
El soporte beta inicial para pantallas de alta resolución está vinculado a 17 solicitudes de errores que hicieron los clientes en Microsoft Connect, que se ha retirado después de casi 10 años. Por lo tanto, esto no es tan importante y el propósito de este artículo es poder mostrar cómo usar el SSMS con una resolución 4K y HIGH DPI de nuevo. Entonces, vamos a ver cómo se ve el SSMS en la pantalla UHD con todos los ajustes predeterminados de Windows y del SSMS.
SSMS 16.5.3
Para habilitar el HIGH DPI en el SSMS, siga las siguientes instrucciones:
-
Primero, tenemos que habilitar el SSMS para poder buscar un archivo de manifiesto externo, si está disponible, hay que crear la siguiente clave de registro:
Key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide
Name: PreferExternalManifest
Entry type: DWORD
Data: 00000001Comience abriendo el Editor de Registro en Windows. Una forma de hacerlo en Windows 10 es la siguiente:
- En el cuadro de búsqueda en la barra de tareas, escriba regedit.
- Seleccione el regedit haciendo clic en el comando Ejecutar.
Dependiendo de cómo está la configuración del Control de cuentas de usuario (UAC) de la computadora, es muy posible que se le solicite que confirme que desea iniciar el Editor del Registro:
Ya en el Editor del Registro, pegue (solo disponible en Windows 10) la clave de ruta y presione Enter para ir directamente a la carpeta en lugar de navegar por el explorador del registro y además porque es mucho más rápido. Haga clic con el botón derecho en el panel derecho de la ventana y elija el comando Nuevo > Valor DWORD (32 bits):
Asigne el valor al nombre “PreferExternalManifest” y presione Enter para guardarlo:
Haga clic con el botón derecho en el valor recién creado y escoja el comando Modificar… Después de eso cambie la información del valor a “00000001” y haga clic en el botón Aceptar para guardar los cambios:
-
El siguiente paso es hacer que el SSMS tenga en cuenta los DPI.
Copie el código XML desde abajo al portapapeles:
1234567891011121314151617181920<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"><!--<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="CompanyName.ProductName.YourApp" type="win32"/><description>Your application description here.</description>--><asmv3:application><asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"><dpiAware>True</dpiAware></asmv3:windowsSettings></asmv3:application><dependency><dependentAssembly><assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /></dependentAssembly></dependency><dependency><dependentAssembly><assemblyIdentity type="win32" name="debuggerproxy.dll" processorArchitecture="X86" version="1.0.0.0"></assemblyIdentity></dependentAssembly></dependency></assembly>Cualquier editor de texto podrá hacer el trabajo, pero asegúrese de ejecutarlo bajo el rol de administrador:
Si no es así, usted podría recibir una advertencia en la cual le indica que no tiene permiso para guardar el archivo en la ubicación especificada:
Entonces, según la configuración de UAC de la computadora, es posible que se le solicite que confirme que desea iniciar el editor de texto:
Pegue el código en el editor de texto y guarde el archivo en la carpeta de instalación donde se encuentra el ssms.exe:
- La ubicación predeterminada es “% SystemDrive%\Archivos de programa (x86)\ Microsoft SQL Server\130\Tools\ Binn\ManagementStudio”
- Guárdelo como ssms.exe.manifest y configure con la opción Guardar como tipo en “Todos los archivos (*. *)”
- Establezca la codificación en UTF-8
- Haga clic en el botón Guardar para salir del editor de texto y guardar el archivo
Reinicie el sistema operativo para que estos cambios surtan efecto.
Antes de esta “solución”, el texto, los iconos y otros elementos en el SSMS se veían confusos y borrosos, pero después de reiniciar la máquina, se observa un cambio notable en casi todo (consulte a continuación la captura de pantalla del antes y después):
La otra única mejora de alta resolución de pantalla desde la versión de SSMS 16.3 (agosto de 2016) fue la actualización de los iconos para ser coherente con los iconos proporcionados por VS Shell y el soporte de una resolución en HIGH DPI que se agregaron en la versión inicial del SSMS 17. ¿Qué es esto básicamente? lo que significa es que todo el soporte para pantallas de alta resolución aún se encuentra solo en las pruebas beta. Ni siquiera estoy seguro de que alguna vez llegue a ser de forma oficial. Microsoft se había cuestionado, si estaban totalmente comprometidos a mejorar la experiencia del SSMS o no.
SSMS 17.6
La misma corrección también podemos aplicar a la última versión del SSMS. Ahora que ya realizamos los pasos 1 y 2, no hay ninguna necesidad de repetir eso. Ya que solo necesitamos copiar el archivo de manifiesto que creamos previamente en el directorio de instalación de SSMS 17 que es “% SystemDrive%\Archivos de programa (x86)\Microsoft SQL Server\140\ Tools\ Binn\ ManagementStudio”. Al copiar el archivo de manifiesto en esta ubicación, se denegará el acceso a la carpeta y tendrá que proporcionar un permiso del administrador para continuar. Si su cuenta tiene privilegios de administrador, simplemente haga clic en el botón Continuar:
El ejemplo del antes y después se muestra a continuación:
Este problema también se puede resolver de otra manera. Hay una herramienta muy útil para verificar si las aplicaciones llegan a ser compatibles o no con DPI, esta se llama Sysinternals Process Explorer:
- Descargue y extraiga el archivo ProcessExplorer.zip de la URL anterior
- Dependiendo de qué tipo de sistema tienes, ejecuta la aplicación procexp.exe o procexp64.exe
-
En el menú Ver, haga clic en el comando Seleccionar columnas:
-
Y luego agregue la columna Reconocimiento de DPI a la vista de Process Explorer:
- Inicie la aplicación que desea verificar (en este caso, Visual Studio 2017)
- En Process Explorer, ubique la aplicación y luego examine la columna Reconocimiento de DPI.
El proceso de Microsoft Visual Studio 2017 es devenv.exe (encuentre más información sobre un proceso en la columna Descripción) y, en la columna Reconocimiento de DPI, podemos ver que el sistema está en conocimiento de esta aplicación:
Sistema en conocimiento: estas aplicaciones no escalan para los cambios de DPI. Requieren el DPI una vez y luego usan ese valor durante toda la vida de la aplicación. Si el DPI cambia, la aplicación no se ajusta de forma automática al nuevo valor de DPI. El sistema lo ampliará o reducirá automáticamente cuando el DPI cambie del valor del sistema.
Lo que esto llega a significar para el Visual Studio 2017 es que soportan 4K y un HIGH DPI directamente desde la caja. Si hacemos lo mismo para el SSMS 17, también nos indicará que es el sistema está en conocimiento de él, pero esto se debe solamente a la clave de registro y al archivo de manifiesto que creamos en el directorio de instalación:
Si vamos a la carpeta de instalación de SSMS 17 y eliminamos el archivo de manifiesto, la aplicación ya no tendrá en cuenta el DPI, y la columna “Reconocimiento de DPI” cambiará su valor a Desconocido:
Desconocido: estas aplicaciones no escalan para cambios de DPI. Siempre se asume que tienen un factor de escala del 100 por ciento (96 DPI). Estas aplicaciones son escaladas automáticamente por el sistema en cualquier otra configuración de DPI.
Siempre que esté presente el valor Desconocido, significa que la aplicación no admite 4K y un HIGH DPI y los elementos como la barra de tareas, los iconos, las barras de herramientas, el texto y los cuadros de diálogo parecen estar borrosos. Como usted podrá imaginar, una vez que eliminemos el archivo de manifiesto de la carpeta de instalación de SSMS 2016, también quedará Desconocido.
SSMS 2012/2014
Estas dos versiones del SSMS no incluyen el soporte beta inicial, por lo que la “corrección” anterior no funcionará para ellos. Si examinamos el Conocimiento del DPI para el SSMS 2012 y 2014, indicará que el monitor está consciente de esto:
Pre-conocimiento del Monitor: estas aplicaciones comprueban el DPI cuando se inician y ajustan el factor de escala cada vez que cambia el valor del DPI. Estas aplicaciones no son escaladas automáticamente por el sistema.
Esto significa en nuestro caso es que la aplicación no puede manejar muy bien la resolución 4K y el HIGH DPI y usted puede esperar tener una apariencia visual similar a la de las aplicaciones Inconscientes.
Anulaciones de escalamiento de DPI
Una forma más fácil de detener esta locura es modificar la configuración de compatibilidad de Windows para las aplicaciones que no aparecen correctamente. Por lo menos para el SSMS 2016 y 17 en el sistema operativo Windows 10.
En lugar de tratar de crear el nuevo valor de registro y el archivo de manifiesto, busque el acceso directo de SSMS en el escritorio (esta funcionalidad se puede habilitar en las propiedades .exe) y haga lo siguiente:
-
Haga clic con el botón derecho en el icono de la aplicación y haga clic en Propiedades.
-
Diríjase a la pestaña Compatibilidad, habilite Sobrescribir el comportamiento de escalamiento del HIGH DPI. El escalado realizado por y establecer el comportamiento de escalado a aplicación:
- Haga clic en Aplicar y luego en Aceptar para cerrar la ventana y guardar los cambios.
Aplicación: Esto obliga al SSMS a ejecutarse en modo de reconocimiento de DPI por monitor. Esta configuración le mostrara de formar efectiva a Windows que no debe desplazar la Interface de usuario de mapa de bits desde el archivo .exe en cuestión cuando cambie el DPI.
Entonces, las aplicaciones por monitor generalmente no utilizan muy bien una resolución 4K y el HIGH DPI, pero no siempre. En este caso, hay que habilitar esta opción: corregir la borrosidad y el desenfoque perfectamente sin habilitar el soporte beta en absoluto:
La escala de la pantalla y el HIGH DPI en el SSMS es, en general, un problema complejo. Ya que no existe una solución mágica y tampoco una solución única para resolver todos los problemas de escalamiento de DPI, pero teniendo en cuenta el hecho de que aquí estamos hablando de las aplicaciones de Microsoft y no de terceros, realmente nos estamos perdiendo mejoras continúas por parte de Microsoft en este campo.
Descargo de responsabilidad: todas las pruebas que se han realizaron fueron en una pantalla de 15.6 pulgadas con la resolución establecida en 3840 x 2160 píxeles y la opción de escala establecida en 250% (valores predeterminados de Windows), pero debido a la complejidad del problema, los resultados mostrados en este artículo pueden variar en otras circunstancias.
Deseo que este artículo te haya sido informativo y les agradezco que lo haya leído.