Bojan Petrovic

Introducción al mssql-cli, una nueva herramienta interactiva de línea de comandos para el SQL Server

May 24, 2019 by

Microsoft lanzó recientemente una nueva herramienta de consulta de línea de comandos interactiva para SQL Server con características modernas, como por ejemplo la finalización automática y el resaltado de sintaxis. Se llama mssql-cli y esta herramienta de código completamente abierto funciona en diferentes plataformas bajo la licencia BSD-3.

Mssql-cli se creó y lanzó con el objetivo de poder proporcionar las siguientes mejoras clave sobre sqlcmd en el entorno del Terminal:

  • Autocompletar
  • Resaltado de sintaxis
  • Historial de consultas
  • Soporte de archivos de configuración
  • Consultas multi-línea

Entonces, empecemos y demos un vistazo a esta herramienta.

Instalación

Para poder instalar y ejecutar el mssql-cli, ya debes tener el Python instalado en tu máquina y funciona con las siguientes versiones de Python: 2.7 y 3.6. Para realizar instalaciones específicas de sistemas operativos compatibles, incluyendo Python, consulte estas guías detalladas y completas de instalación. Como yo soy un usuario de Windows, vamos a ver los pasos de instalación y configuremos el mssql-cli en el entorno de Windows para verlo en acción.

Python no se instala de una forma predeterminada en Windows, por lo que vamos a necesitar obtener el último paquete de instalación desde aquí. Una vez que se termine de descargar el archivo de instalación, haga doble clic en él para empezar el proceso de instalación.

En el primer paso, hay que marcar la opción “Agregar Python 3.6 a PATH” porque Python debe estar en la variable de entorno PATH y seleccione la opción “Instalar ahora” para instalar Python con la configuración predeterminada:

Dependiendo de la configuración de Control de cuentas de usuario (UAC) se puede pedir que nos permita que la aplicación realice cambios en la computadora. Simplemente haga clic en el botón para continuar con la instalación:

Nota: El momento en el que un usuario estándar intenta realizar esta tarea, la solicitud de credenciales se presentará requiriendo privilegios administrativos

Justo después de que se complete la instalación, tendrá que abrir el símbolo del sistema , e instalar el mssql-cli con el siguiente comando:

C:\> pip install mssql-cli

Mssql-cli se instala vía pip. Este comenzará a buscar los paquetes necesarios, por lo cual en este paso se requiere tener una conexión activa y estable de Internet:

Nota: si Python se instaló en el directorio “Archivos de programa”, es muy probable que deba abrir el símbolo del sistema como administrador para que el comando anterior pueda tener éxito.

Una vez que tengamos ya instalado el mssql-cli, conéctese a su base de datos con el siguiente comando:

$ mssql-cli -S <server name> -U <user name> -d <database name>

Seguidamente, se te pedirá que ingreses la contraseña del nombre de usuario. No hay ninguna indicación de que se esté ingresando una contraseña y esto es completamente intencional para ingresar contraseñas en la línea de comandos. Presiona la tecla de retorno cuando estés listo para continuar:

Nota: la conexión mediante la autenticación de Windows también es posible utilizando la opción “-E” como lo es para sqlcmd

Si ahora nos aparece un mensaje de error el cual indica que la conexión falló como la que se muestra siguiente captura de pantalla, hay que asegúrese de que la cuenta de usuario que está utilizando sea miembro de los roles fijos de servidor sysadmin:

Esto se puede hacer de una manera fácil desde el Explorador de objetos en SQL Server Management Studio (SSMS). En la barra de herramientas de Object Explorer, tenemos que hacer clic en el ícono de Conectar y luego, en el cuadro de diálogo Conectar al servidor, conéctese a su instancia de SQL Server. Expanda la carpeta Seguridad y realice lo mismo para la carpeta Inicio de sesión, haga clic con el botón derecho en <nombre de usuario> y luego haga clic en la opción de Propiedades:

En el cuadro de diálogo Propiedades de inicio de sesión que recién hemos abierto, hay que seleccionar la página roles de nivel de servidor en la parte superior izquierda, tenemos que asegurarnos de que la función sysadmin esté marcada en la lista de roles de nivel de servidor y haga clic en el botón Aceptar en la parte inferior derecha para así poder guardar los cambios:

Volvamos al indicador de comandos, presionemos la tecla de flecha hacia arriba para poder traer el último comando ejecutado y así poder conectarse a su base de datos. Una vez más, se te pedirá que ingreses la contraseña, y esta vez el inicio de sesión tendría que ser exitoso:

Características

Empecemos a ver las características que mencionamos al comienzo de este artículo.

Tan pronto como el usuario empiece a escribir un comando del SQL, aparecerá la función de auto-completación que tiene en cuenta el contexto y reducirá las sugerencias a medida que escribe:

El poder escribir consultas de líneas múltiples es fácil de leer con la inclusión de un resaltado de sintaxis apropiado y auto-completado “inteligente”:

El historial de consultas se explica por sí mismo; se puede reutilizar las consultas ejecutadas recientemente navegando a través de ellas con las teclas de flecha arriba y abajo. A parte, las sugerencias se sugieren de forma automática desde el historial a medida que se va escribiendo.

Si tú eres un usuario de Windows como yo, entonces puedes encontrar el archivo de configuración en la siguiente ruta de acceso: C:\Users\<nombre de usuario>\AppData\Local\dbcli\mssqlcli

Si la configuración predeterminada no funciona correctamente, puedes editar el archivo de configuración a tu gusto. También, el archivo de configuración está bien escrito y descrito con ejemplos para cada opción, por lo que el modificar la configuración debería ser bastante fácil. Mi consejo, es que, si estás probando con la configuración, haz una copia de seguridad de este archivo, por ejemplo, en el escritorio, para que así puedas restaurarlo el momento que tú desees:

Nota: para poder acceder a la carpeta AppData, deberás habilitar la opción “Mostrar archivos, carpetas y unidades ocultos” en Windows.

El modo de edición multilínea se puede controlar presionando la tecla F3. Se puede verificar en la parte inferior de la pantalla si esta opción está activada o desactivada. Para poder ejecutar su consulta multilínea, tiene que agregar un punto y coma al final de la última línea de su consulta, y luego presione la tecla Enter:

En mi instancia por el sistema operativo de Windows 7 VM, estaba experimentando el error “No hay suficiente memoria” luego de ejecutar la mayoría de las consultas:

Este error ya está registrado como el problema #98 en el proyecto mssql-cli GitHub. Si descubre algún error con la herramienta, puede informarlos y enviarlos en la sección Problemas del repositorio de GitHub. También puede utilizar el mismo hilo para proporcionar comentarios. Microsoft siempre está abierto a cualquier pregunta, comentario o sugerencia de características para futuras versiones.

Para poder familiarizarse de una forma rápida con esta herramienta, tienes que consultar esta guía del usuario para obtener mayores detalles sobre las opciones y el uso de los ejemplos.

Conclusión

Posteriormente de que se lanzara SQL Server 2017 en Linux y macOS (Docker), la comunidad dbcli formulo la necesidad de modernizar el sqlcmd. No es que no tuviéramos un conjunto popular de herramientas de CLI multiplataforma de código abierto para bases de datos, pero esta herramienta relativamente nueva que admite el auto-completado “inteligente”, el resaltado de sintaxis y la instalación de una manera fácil parece ser muy prometedora. La comunidad crece día a día y estos chicos están realmente apasionados por la creación de mejores herramientas CLI de base de datos. La hoja de ruta muestra algunas características y áreas de enfoque muy útiles en el futuro trabajo de mssql-cli. Por lo general, esta es una gran herramienta que admite todas las versiones de SQL Server y es compatible en multiplataforma, lo que resulta ser muy útil para los usuarios que no pueden o no desean implementar el SSMS en los equipos de sus clientes, etc. O simplemente ellos están solo usando base de datos como clientes mediante la línea de comandos.


Bojan Petrovic
Comandos SQL

Acerca de Bojan Petrovic

Bojan aka “Boksi”, an AP graduate in IT Technology focused on Networks and electronic technology from the Copenhagen School of Design and Technology, is a software analyst with experience in quality assurance, software support, product evangelism, and user engagement. He has written extensively on both the SQL Shack and the ApexSQL Solution Center, on topics ranging from client technologies like 4K resolution and theming, error handling to index strategies, and performance monitoring. Bojan works at ApexSQL in Nis, Serbia as an integral part of the team focusing on designing, developing, and testing the next generation of database tools including MySQL and SQL Server, and both stand-alone tools and integrations into Visual Studio, SSMS, and VSCode. View all posts by Bojan Petrovic

168 Views