Anuncios

jueves, 26 de febrero de 2009

Tutorial de powershell para SQL Server 2008

network monitoring

En mi artículo anterior, mostré algunos ejemplos básicos de powershell.

Powershell es la nueva y poderosa línea de comandos de microsoft para manipular SQL Server y muchas otras tecnologías de Microsoft.

Al final de este artículo el lector podrá:




Si usted no conoce el powershell, le recomiendo ver mi artículo inicial:

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

Ahora voy a tocar el tema de powershell para SQL Server. El requisito es tener instalado SQL Server.
http://elpaladintecnologico.blogspot.com/2009/02/instalando-microsoft-sql-server-2008.html

Es un requisito para entender este artículo, experiencia en SQL Server. Personas que usaron el sqlcmd o el osql van a entender más fácilmente todo lo que voy a explicar. Pero esencialmente lo que necesito es gente que ya tenga sql server instalado y algo de experiencia en SQL Server Management studio.

Voy a hacer una introducción al powershell en sql server. Voy a mostrar ejemplos practicos de cómo ejecutar líneas de comandos, ejecutar scripts, guardar resultados de powershell en un archivo de texto y manejo de variables.
Los que ya manejan SQL Server con línea de comandos utilizando cmd siempre me preguntan: Yo tengo scripts que automáticamente hacen mis tareas.

Para que necesito powershell ?.
SQLCMD permite automatizar varias tareas, pero no es tan potente ni tiene tanta interacción con Windows como powershell. Powershell integra todos los componentes de Windows en un entorno de programación. Es decir, de ahora en adelante, los administradores de sistemas podrán administrar su base de datos, su servidor de correo, su servidor web y su sistema operativo con powershell.

La gente que programa en SQLCMD va a comenzar a migrar sus scripts a powershell. Como veremos a continuación powershell llama al SQLCMD internamente.

A quienes les sirve powershell ?.
A todos los administradores de sistemas que quieran automatizar tareas administrativas mediante scripts.
Bueno, mucha charla poca práctica.

Navegar a diferendes objetos de la base de datos usando línea de comandos (powershell)

Primero vamos a navegar en SQL Server.
Entre el management studio, seleccione el servidor y apreté el botón derecho del mouse y seleccione iniciar powershell.

Ahora coloque el comando get-psdrives:

PS SQLSERVER:\SQL\DANVIRT\DEFAULT> get-psdrive

Como puede ver, el comando muestra registros, los diferentes drives del sistema. Es decir, usted puede manipular desde aquí tanto a sql server, como al disco c como al registro. TODO SE PUEDE MANIPULAR EN POWERSHELL.

Ahora naveguemos dentro del servidor:
En mi ejemplo estoy en: PS SQLSERVER:\SQL\DANVIRT\DEFAULT> PS significa powershell
SQLSERVER significa que estoy en el drive de SQLServer (si, SQLSERVER es un drive ¡!).
DANVIRT es el nombre de mi servidor
DEFAULT es el nombre de mi instancia (en este caso es la instancia por defecto).

Usted puede moverse al drive c con el siguiente comando: PS SQLSERVER:\SQL\DANVIRT\DEFAULT> c:

Para volver a sqlserver ponga sqlserver: PS C:\Documents and Settings\Administrador> sqlserver:

Para ver los objetos dentro de SQL server ponemos ls o dir
Existen vaaaaaarios objetos. En este caso voy a ver las bases de datos PS C:\Documents and Settings\Administrador>cd databases Lo triste es que mkdir base1 no crea una nueva base de datos.

Para crear una base de datos llamada daniel1 en powershell:
PS SQLSERVER:\SQL\DANVIRT\DEFAULT\Databases> Invoke-Sqlcmd -Query "Create database daniel1;"
Para crear una base de datos llamada daniel2 en powershell utilizando parámetros.
Esto requiere 2 pasos:

Paso 1. Crear una variable con el nombre de la base de datos (en este caso daniel2) $database ="daniel2"

Paso 2. Crear la base de datos usando el parámetro $database Invoke-Sqlcmd -Query "Create database $database;"

Existen muuuuuuuuuuuchas formas para comunicarse con la base de datos desde powershell.
Pero esta es la más sencilla que conozco.

Para hacer una consulta en powershell.

Para esto nos vamos a

1. Crear una tabla en database1 llamada Estudiante con columnas

Nombre,Nota

/*Crea una tabla llamada estudiante*/

create table estudiante
(
nombre varchar(12),
nota int
)


/*inserta datos*/


Insert into estudiante values ('Jonas',58)


Insert into estudiante values ('Juan',36)


Insert into estudiante values ('Johny',49)

Para hacer una consulta a una tabla en powershell :

Invoke-Sqlcmd -Query "select * from estudiante;"


Usar variables en powershell

A muchos les gustan esas variables que reciben input de usuario en powershell.

Es decir, el usuario especifica el valor de la variable.

En este ejemplo voy a crear una base de datos llamada daniel3.

Este valor puede ser cualquier otro ya que el usuario lo especifica. Esto requiere 2 pasos:

Paso 1.

Crear una variable con mensaje de input:

PS SQLSERVER:\SQL\DANVIRT\DEFAULT\Databases> $a = read-host "Escriba el nombre de la Base de datos"


Esto crea en la variable la posibilidad de escribir mediante teclado el valor de la variable.

Paso 2 Una vez que se haya especificado el valor de a, el resto es lo mismo:

PS SQLSERVER:\SQL\DANVIRT\DEFAULT\Databases> Invoke-Sqlcmd -Query "Create database $a;"


Espero que les sirvan estos ejemplos. Cualquier duda, escriban a este blog.

People who read this post also read :