Anuncios

Confio

viernes, 3 de abril de 2009

SQLCMD la línea de comandos para SQL Server

network monitoring
Powershell SQL Server Visualcert Seguridad Herramientas google

Esto esta dedicado a la gente que necesita automatizar tareas de SQL Server y necesita ejecutar sentencias mediante línea de comandos. Para automatizar ahora se usa el SQLCMD, que es muy parecido a su antecesor OSQL.
En este artículo vamos a ver los siguientes ejemplos:


Hasta hace muy poco tiempo la línea de comandos SQL Server llamada sqlcmd era la forma más común de ejecutar consultas usando línea de comandos.
Actualmente, lo más aconsejable es comenzar a usar powershell.
Para una introducción al powershell, pueden acceder a este link:

http://elpaladintecnologico.blogspot.com/2009/02/que-es-powershell-ejemplos-basicos-para.html

Para una introducción de powershell para SQL Server, pueden ver este link:

http://elpaladintecnologico.blogspot.com/2009/02/tutorial-de-powershell-para-sql-server.html

Ahora, los que insisten en usar sqlcmd, acá vamos. Este tutorial permite manejar SQL Server mediante línea de comandos. Personalmente estoy usando SQL Server 2008, pero todo lo que voy a hacer se aplica a SQL Server 2005. Si alguien quiere usar osql, me pide el email de mi abuelito para que les indique.



Origen del sqlcmd

En sql server 2000 se usaba el osql. SQL Server 2005 sigue soportando osql, pero a su vez soporta sqlcmd. Mis bisabuelos llegaron a usar isql que es mucho mas antiguo aún. Antes de eso...creo que era el assembler.

Primeros pasos en sqlcmd
Si tiene una instancia por defecto solo tiene que presionar Inicio>ejecutar escribir sqlcmd.
Si todo sale bien le va aparecer un numerito bonito como este:
1>








Si usted quiere entrar a otra instancia o loguearse con otros usuarios tiene que escribir:
Sqlcmd –S Nombre_instancia. Donde el nombre de su instancia es la que usted instaló. Para saber más sobre comandos, instancias y logueo consulte este link:

http://msdn.microsoft.com/es-es/library/ms162773.aspx

Para crear una base de datos en sqlcmd:
1>create database Daniel
2>go


El famoso go hay que ponerlo siempre al final de cualquier sentencia. Personalmente no me agrada.

Para moverse a una base de datos



1> use Daniel
2> go

Se cambió el contexto de la base de datos a 'daniel'.
Se pone use y el nombre de la base de datos.

Para crear una tabla usando sqlcmd (línea de comandos)
/*crea una tabla llamada table1 con la columna column1*/
1> create table table1
2> (
3> column1 int
4> )
5> go


Para insertar valores en una tabla con sqlcmd (línea de comandos)

1> insert into table1 values (20)
2> go

(1 filas afectadas)

Para mostrar los valores de una tabla mediante línea de comandos (select)
1> select * from table1
2> go

column1
-----------
20

(1 filas afectadas)
Ahora vamos a algo un poco más elaborado.

Para llamar a un script de SQL Server desde la línea de comandos (sqlcmd de SQL Server)

1. Crear un script en el SQL Server Management Studio que se llame insert.sql
2. En el archivo insert.sql escriba esto:
----------------------------------------------------------------------

/*Para crear una base de datos en SQL Server*/
CREATE DATABASE DANIEL2
USE daniel2
go

/*Para crear una tabla en SQL Server*/
create table estudiante
(
nombre varchar(12),
nota int
)

/*Para insertar datos en SQL Server*/
Insert into estudiante values ('Jonas',58)
Insert into estudiante values ('Juan',36)
Insert into estudiante values ('Johny',49)
------------------------------------------------------------------
3. Esto es MUY IMPORTANTE: Salga del SQLCMD (con exit)
4. Ejecute esto:
C:\Documents and Settings\Administrador>sqlcmd -i c:\insert.sql
Asegúrese que su script está en el c:, si no vea la ruta correcta. Es muy común tratar de poner en un path con espacios en el nombre. –i es el imput que en este caso es el script.
Si todo salió bien, se creó una base de datos Daniel2, una tabla estudiante y se insertaron 3 datos en la tabla.

Para pasar parámetros usando sqlcmd (línea de comandos SQL Server)

Vamos a trabajar con la tabla estudiante creada en la sección anterior.
Vamos a hacer un select donde la nota sea la variable. Es decir voy a mostrar los alumnos cuya nota sea una variable:

1. Crear un script llamado consultavar.sql
----------------------------------------------------------------------
/****** Script para el comando Select*/
SELECT [nombre]

FROM [daniel2].[dbo].[estudiante]
/*la variable es la palabra nota con el $ y el paréntisis*/
WHERE nota=$(nota)
GO

2. Poner inicio, ejecutar>cmd
3. En el cmd ejecutar esto:
C:\Documents and Settings\Administrador>sqlcmd -i c:\consultavar.sql -v nota=58
nombre
------------
Jonas

(1 filas afectadas)


Analicemos la línea:
sqlcmd -i c:\consultavar.sql -v nota=58
Es ejecutar la línea de comandos sql server usando como entrada el script consultarvar.sql.
Véa el código del script.
WHERE nota=$(nota)

Nuestra variable se llama nota y tiene una $(nota)
Entonces si vario la nota, me aparecerá otro estudiante.
nombre nota
------------ -----------
Jonas 58
Juan 36
Johny 49
Si yo coloco
sqlcmd -i c:\consultavar.sql -v nota=36
Me aparecerá Juan.
Si tienen más dudas o necesitan ayuda en sqlcmd, no duden en hablarme.
Gracias.

Artículos relacionados


People who read this post also read :