====== Revisión y Reparación Base de Datos SQL ======
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.
===== Introducción =====
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.
{{/OSQL/OSQL_LineaComandos.png|Parámetros de las herramientas de lineas de comando de SQL Server}}
Parámetros de las herramientas de lineas de comando de SQL Server
===== Iniciar la herramienta SQLCMD para conectar a un servidor SQL =====
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.
==== Determinar la dirección del Servidor SQL a conectar ====
La información que se debe tener a mano para conectarse a través de SQLCMD es la siguiente:
* Tener el nombre de la instancia en caso de conectarse al servidor local
* Tener la dirección del servidor en caso de conectarse a un servidor remoto (Nombre o IP del servidor, y nombre de la instancia si aplica).
* Tener la contraseña de usuario SA, o en su defecto iniciar el Símbolo de Sistema como Administrador (elevado)
(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:
{{/OSQL/NombreServidorInstancia.png|Ubicación conexión SQL}}
Ubicación conexión SQL
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:
==== Iniciar con los parámetros por defecto ====
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.
==== Iniciar especificando el servidor local y el nombre de instancia ====
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.
==== Iniciar especificando el servidor local, usuario SQL y el nombre de instancia ====
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.
==== Iniciar especificando servidor remoto, usuario SQL y el nombre de instancia ====
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 ''%%ANTARESYSTEMS%%''se 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>
==== Iniciar especificando servidor remoto, usuario SQL y el número de puerto ====
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>
===== Compatibilidad con OSQL =====
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>