La herramienta de Línea de Comandos de SQL Server constituye una de las tantas formas disponibles de conectarse a cualquier servidor SQL para realizar operaciones de mantenimiento o de manipulación de datos. A diferencia de las otras herramientas basadas en entorno gráfico, las de linea de comandos está disponible en casi cualquier instalación de SQL Server, incluso las ediciones Express.
La herramienta de linea de comandos originalmente se llamaba OSQL, mas tarde con la inclusión de SQL Server 2005 está siendo reemplazada por SQLCMD, aunque OSQL sigue estando disponible en las versiones actuales. Las dos herramientas SQLCMD y OSQL tienen similares maneras de invocarse y utilizar, solo que actualmente SQLCMD tiene mas opciones, es más intuitivo y proporciona mas funciones que OSQL. Los ejemplos de este artículo aplican a SQLCMD
Los ejecutables de ambas herramientas OSQL.EXE y SQLCMD.EXE están ubicados en la carpeta de SQL Server, pero están disponibles para ser ejecutadas desde cualquier ubicación en el Símbolo de Sistema.
Parámetros de las herramientas de lineas de comando de SQL Server
La herramienta SQLCMD se inicia desde el Símbolo del Sistema, el cual debe ejecutarse como Administrador y de manera elevada para evitar que posibles problemas de autenticación obstaculicen la ejecución exitosa de la herramienta.
La información que se debe tener a mano para conectarse a través de SQLCMD es la siguiente:
(infobox:Los instaladores SQL Server Express para Antare Systems predeterminan como nombre de instancia la palabra ANTARESYSTEMS.) (infobox:El SQL Server preinstalado desde los ISOS de Windows preparados para Antare no tienen nombre de instancia )
La dirección del servidor a conectar se puede averiguar desde la ventana principal de Antare:
Una vez que se tienen los datos requeridos se inicia el Símbolo del Sistema Elevado desde un usuario Administrador y se intenta el comando con los parámetros requeridos según el contexto que aplique:
sqlcmd 1>
Al iniciar la herramienta sin parámetros, este intenta conectar al Servidor SQL predeterminado instalado en el mismo equipo, sin nombre de instancia, y con las credenciales del usuario de Windows que inició el Símbolo del Sistema. Si las credenciales son válidas y el servidor sin nombre de instancia está Online entonces aparece el simbolo > indicando que la herramienta inició con éxito.
En el caso de las instalaciones de Antare, con el ejemplo anterior debería ser suficiente en los servidores instalados con los ISOS de Windows para Antare.
Si existe un nombre de instancia el ejemplo anterior falla. Entonces se intenta el siguiente comando:
sqlcmd -S (local)\ANTARESYSTEMS 1>
Cuando se especifica el parámetro -S (respetar mayusculas) se indica de manera explícita el servidor al se debe conectar: (local)\ANTARESYSTEMS. La palabra (local) indica que se está apuntando al SQL Server instalado en el mismo equipo, seguido de un \ y luego el nombre de la instancia ANTARESYSTEMS
Al igual que el ejemplo anterior, se asumen las credenciales del usuario de Windows que inició el Símbolo del Sistema.
A veces las credenciales del usuario de Windows que inició el Símbolo del Sistema no sirven para acceder al Servidor SQL o a la base de datos. Esto depende de la forma en que se instaló SQL Server en el equipo. Entonces se deben utilizar las credenciales de algún usuario SQL (Ejemplo el usuario SA)
sqlcmd -S (local)\ANTARESYSTEMS -U SA Contraseña: 1>
En este caso especificamos el usuario con el parámetro -U (respetar mayúsculas) seguido del usuario SQL a autenticar SA. Al pulsar ENTER se introduce la contraseña del usuario SA y luego ENTER nuevamente.
Con ello se accede al Servidor SQL ignorando las credenciales del usuario de Windows que inició el Símbolo del Sistema y utilizando las credenciales del usuario SA registrado en SQL Server.
Si la herramienta está instalada en el equipo local, pero se desea conectar a un Servidor SQL instalado en otro equipo accesible desde la red, se debe sustituir la palabra (local) por la dirección efectiva del servidor (Nombre o IP). Además lo mas probable es que se deba especificar las credenciales del usuario SQL (SA).
Si el servidor remoto tiene como nombre CONTOSO, y la instancia es ANTARESYSTEMSse puede probar:
sqlcmd -S CONTOSO\ANTARESYSTEMS -U SA Contraseña: 1>
Si el servidor remoto tiene como dirección IP 192.168.1.100 y la instancia es ANTARESYSTEMS se puede probar:
sqlcmd -S 192.168.1.100\ANTARESYSTEMS -U SA Contraseña: 1>
Si el servidor remoto tiene como nombre CONTOSO, y no tiene nombre de instancia se puede probar:
sqlcmd -S CONTOSO -U SA Contraseña: 1>
A veces se presenta el caso de que no se tiene a mano el nombre de la instancia, pero sí el numero de puerto de escucha TCP/IP del Servidor SQL.
En este caso, en lugar de utilizar la notación SERVIDOR\INSTANCIA, se debe especificar el nombre o dirección del servidor y luego el número de puerto separados por una coma ,.
Por ejemplo, si la dirección del servidor es 192.168.1.100, el usuario es SA y el número de puerto es 14333, el comando queda de la siguiente manera:
sqlcmd -S 192.168.1.100,14333 -U SA Contraseña: 1>
SQLCMD está disponible a partir de la version 2005 de SQL Server. Si el servidor es SQL Server 2000, solo se tiene disponible la herramienta OSQL.
Los ejemplos arriba señalados tambén funcionarán con OSQL siempre y cuando se agregue el parámetro -E (respetando las mayusculas) únicamente en el caso de que el parámetro -U no esté presente en el comando. Ejemplo:
osql -S (local)\ANTARESYSTEMS -E 1>