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.

jueves, 19 de febrero de 2009

Que es powershell ?. Ejemplos básicos para familiarizarse con la herramienta.



Al terminar de leer este artículo, el lector será capaz de:

Muchos me preguntan. Y ahora que es este powershell ?. Es un cmd más potente ?. Me dicen que es un poderoso entorno de programación, pero parece ser una consola de comandos rústica. Me sirve ?. En que me va afectar a mi que estoy con mi Windows 2003 o en que mejoraría mi vida si cambio al Windows 2008 ?.
Para los que hemos trabajado con UNIX y Linux nos parecía obvia la llegada de un lenguaje similar a PERL. Es decir, un lenguaje potente para manejar variables, ciclos, etc, etc.
Actualmente el cmd era muy limitado para la programación. El Visual Script surgió como una alternativa para automatizar tareas, pero es relativamente lento y se necesitan muchas líneas de código para tareas sencillas que en otros lenguajes como PERL se harían mas fácilmente.
No se asusten los que no saben nada de PERL. Voy a resumir lo que hace powershell. Powershell permite automatizar tareas de administración de servidores de una manera rápida, sencilla y eficiente.
Por ejemplo, se puede navegar y cambiar el registro fácilmente, apagar servicios, manejar listas, etc.
Para gente que le gusta UNIX/Linux esto les va a hacer gustar más del sistema operativo Windows. Trata de hacer que se pueda navegar a registros, procesos. Lo vuelve al Windows mucho más fácil de manipular mediante comandos.
Si usted usa scripts para automatizar tareas de Windows aprender powershell será de gran utilidad. Si usted es un usuario simple y rupestre que nunca programó nada de tareas (ni lo piensa hacer), powershell es una porquería que no tiene ninguna utilidad.

Instalación.
El Windows 2008 y el SQL Server 2008 vienen con el powershell incorporado. También se lo puede bajar de la página oficial de Microsoft.
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx
Tal vez necesiten bajarse el .net framework 2 o superior que en síntesis son librerías requeridas.
http://www.microsoft.com/downloads/details.aspx?familyid=0856eacb-4362-4b0d-8edd-aab15c5e04f5&displaylang=en




Comenzando mis primeros comandos.
Una vez instalado, puede comenzar a jugar con el programa.
Voy a mostrar cómo crear alias de comandos (poner mi propio nombre a los comandos). Por defecto ya hay varios aliases. Por ejemplo yo use en vez del comando get-help para tener ayuda el comando man y también se puede usar el comando help. Entonces uno puede cambiar el nombre a sus comandos y crear nuevos ¡!.
Posteriormente mostrare como crear registros, apagar servicios, procesos.

Como hacer hola mundo
PS C:\> echo ¨hola mundo¨

Como hacer usar variables en powershell
PS C:\>$var=hola mundo
PS C:\>echo $var

Como obtener la ayuda de un comando (ejemplo dir)
Existen tres maneras
PS C:\>get-help dir
PS C:\>man dir
PS C:\>help dir

Para obtener una lista de todos los comandos powershell
PS C:\>get-help *

Para obtener ayuda y ejemplos de todos los comandos powershell
http://technet.microsoft.com/en-us/library/dd347701.aspx


Mostrar los drives del sistema
Get-PSDrive.
Este comando permite mostrar todos los drives. En esta sección la novedad es que podemos navegar en el registro de Windows.

>Uso del alias
Para cambiar de nombre a diferentes comandos: Powershell utiliza lo que llamamos alias. Un alias es un sobrenombre que le podemos poner al comando. Por ejemplo:

PS C:\> set-alias get-drive get-psdrive

Esto transforma al comando get-psdrive a get-drive. De ahora en adelante si corremos el comando:

PS C:\> get-drive

Drives realizará la misma función del comando get-psdrive. Parece lindo no ?. Estaba emocionado hasta que me di cuenta que al cerrar el powershell (con exit) y al abrirlo de nuevo ya no funcionaba mi nuevo comando.
La forma más fácil de solucionar esto es usando el profile. En el profile se escribe el comando y listo. Sin embargo si no tenemos profile hay que crearlo y agregar nuestro set-alias get-drive get-psdrive.
Para ver si existe el profile:

PS C:\> test-path $profile

Si sale false hay que crearlo con:

PS C:\> New-Item -Path $Profile -ItemType file –Force

Luego editamos el profile:

PS C:\> Notepad $profile

Ahora en el archivo notepad colocamos esto:

set-alias get-drive get-psdrive

Finalmente, salvamos el archivo y cerramos y abrimos el powershell


>REGISTROS


· Para navegar en el registro se pone:

PS C:\> cd hklm:

Para regresar al drive c y dejar de navegar en el registro:

· PS C:\> c:

Para limpiar la pantalla en powershell

· PS C:\> cls

· Para ver ir al registro hkey local machine

PS C:\> cd hklm:

· Para ir al registro software\clients\Calendar\Microsoft Outlook\protocols

· PS HKLM:\> cd software\clients\Calendar\Microsoft*\
Protocols

Algo que no me agrada es que no funciona el cd.. para volver atrás tiene que ser cd .. (con el espacio como en UNIX/LINUX)
Para crear un registro:

· PS HKLM:\software\clients\Calendar\Microsoft Outlook\Protocols>mkdir reg_nuevo

Para volver a la raíz en powershell:
PS HKLM:\software\clients\Calendar\Microsoft Outlook\Protocols>cd /
Para listar los registros dentro de registros (existen varias formas. Get-ChildItem, ls, dir,gci. Las 4 dan los mismos resultados).

PS HKLM:\>Get-ChildItem
PS HKLM:\>ls
PS HKLM:\>gci
PS HKLM:\>dir


Para volver al disco c
PS HKLM:\> c:











PROCESOS

Para mostrar una lista de procesos:
PS C:\> Get-Process
Para detener un proceso:

PS C:\> Stop-Process -processname [process]
Para listar servicios:

>Servicios

PS C:\>Get-service

Para iniciar un servicio:

PS C:\>start-service [service_name]

Para detener un servicio:

PS C:\>stop-service [service_name]






EJECUCION DE SCRIPTS

Para ejecutar y habilitar un script en powershell
Primero cree un archivo que se llame prueba.ps1 con el siguiente contenido:

/*Este programa muestra el mensaje hola mundo*/
Echo “hola mundo”

Por defecto le va a salir un mensaje de error cuando trate de ejecutarlo:

PS C:\> ./prueba.ps1
Para habilitar la ejecución de scripts y que no salga un mensaje de error:

PS C:\> set-executionpolicy unrestricted
Una vez habilitado, la ejecución en powershell funciona:

PS C:\> ./prueba.ps1

Para ejecutar un archivo de powershell ps1 con doble click.
Este es un poquito más difícil de lo que pensé.
Los archivos de powershell (Ps1) no funcionan con doble click así que hay que invocarlo desde el cmd.
Esto por razones de seguridad .

Paso 1.
Tener un archivo con extensión ps1. Mi archivo se va a llamar creardir.ps1. Este ejemplo crea un directorio que se llama Daniel.

Archivo: creardir.ps1
Contenido: mkdir Daniel

Paso 2. Crear un archivo con extensión cmd que llame al archivo creardir.ps1.
Archivo: createdir.cmd
Contenido: powershell.exe -command .\creardir.ps1

Lo único que queda es hacer doble click en el cmd.

Para crear un evento en el visor de eventos:


PS C:\Documents and Settings\user> EVENTCREATE /T ERROR /ID 1000 /L APPLICATION /D "Test Error"

Este mensaje le permitirá generar un evento de error con ID 100 en la categoria de aplicaciones.

Para ver los eventos del visor de eventos en powershell:
PS C:\Documents and Settings\user> Get-EventLog -logName "Application"

Espero que les haya gustado. Si tienen dudas escriban a este blog. Cualquier duda se las aclaro.

Listo para la parte II ?:




martes, 17 de febrero de 2009

Destronará Chrome a Internet Explorer?

Para ver la lista todos los artículos escritos haga click AQUI








Muchas personas me preguntan si vale la pena cambiarse y dejar internet explorer.
Será que Microsoft pagará el pecado de haber matado a Abel ?(Netscape).
Para averiguar esto me baje la versión de Chrome. Este artículo actualmente está basado en la versión 1.0.154.48.
Ustedes pueden bajarlo de la web. Solo pongan dowload chrome en google.
Definitivamente Chrome sigue los lineamientos de Google. Sencillo, simple y práctico. Varios me dijeron que les falla Hotmail, yahoo. Yo personalmente he manejado sin problemas mis blogs, facebook, Hotmail, youtube.
También se reportaron varios problemas donde el explorador se colgaba. Otros se quejaron que para transacciones bancarias pedían bajarse componentes de java para instalar.
Personalmente a mi me falló cuando quise utilizar para ver mis páginas de e-learing y de Test director. En esos sitios no me respondió el explorador. Por lo tanto, yo creo que Chrome no está al nivel de internet explorer, pero es sin lugar a dudas una seria amenaza que molesta a Microsoft.

Para ver el historial en Chrome:
Presiona el icono de la llave > historial
Para eliminar historial:

Presiona el icono de la llave >Eliminar datos de navegación>Eliminar historial de navagación

Para agregar a mis favoritos >Presiona el icono de la estrellita.

lunes, 16 de febrero de 2009

Creador y calificador de exámenes automático


Para ver la lista todos los artículos escritos haga click AQUI

Muchos instructores quieren crear sus exámenes y que automáticamente se califiquen.
Soy instructor de tecnologías de Microsoft. Existen varios programas para hacer aquello. Sin embargo la que más me gusto fue Visual Cert Exam.
Extremadamente intuitivo y fácil de configurar.
http://www.visualcertexam.com/
Se pueden crear preguntas de diferente tipo (selección multiple, múltiples selecciones, etc, ect), figuras.
Estoy incluyendo un video con una demostración.
DEMO (descomprima el archivo zip y abra el html)
Este video incluye 2 partes. Uno es el visualcert Designer que permite crear el examen.
La siguiente sección del video es el visualcert Manager que permite configurar tiempo de examen, numero de preguntas y nombre de candidato.

Espero que les guste.

Lo nuevo de SQL Server 2008 respecto a SQL Server 2005

network monitoring
Muchas empresas me preguntan. Cual es la ventaja de SQL Server 2008 ?
Vale la pena actualizar el SQL 2005 a 2008 o SQL 2000 a 2008 ?.


Para una más detallada descripción de las novedades, puede visitar este link:

http://technet.microsoft.com/es-bo/magazine/2008.04.overview.aspx


La nueva versión de SQL Server 2008 es más segura, tiene un buen formato de compresión y ocupa menos espacio. Tiene nuevos tipos de datos satelitales, corrector de sintaxis y mensajes de errores al programar sentencias SQL, sistema de encriptación de copias de respaldo. Más funciones de encriptación y seguridad.


Si su base de datos contiene importante información financiera, será mayor la emergencia de actualizar sus datos. Existen políticas de seguridad incorporadas a SQL Server 2008. Lo mismo si usted ocupa mucho espacio en su disco duro con copias de seguridad. SQL Server 2008, tiene excelentes características de compresión de datos.

A simple vista se aprecia bastante la interacción con powershell. Hoy se puede programar muy facilmente en sql server.

Para ver más sobre powershell y sql server vea este enlace:

Powershell para sql server

También es mas fácil programar. Tiene lo que se llama en ingles intellisense. Es decir, una característica para que detecte y se anticipe inteligentemente a lo que uno escribe.

Otra característica notable es que tiene un corrector de sintaxis interactiva. Muy parecida a la de visual studio.

Muchas personas me preguntan que sucedio con el SURFACE AREA CONFIGURATION.
Este fue incorporado en el management studio.

Para ver más información:

Donde esta el surface area configuration

También se incorporaron:
  1. Nuevos tipos de datos espaciales (geometry, geography).
  2. Replicaciones Peer to Peer (poder replicar los datos entre varios servidores para aumentar disponibilidad de servidores y redundancia de datos)
  3. Un gobernador de recursos (Resource Governor) para poder administrar y priorizar tareas.
  4. Encripción transparente de datos (la versión anterior usaba funciones T-SQL para la encriptación.
  5. Soporte de Hot Add CPUs (Poder agregar CPUs sin apagar la maquina).
  6. Compresión de datos al hacer espejos de base de datos (database mirroring)
  7. Lo que varios querían el Change Data Capture, un capturador de cambios que registra los cambios realizados en tablas (monitorea datos de la tabla y cambios en la estructura de la tabla).
  8. El SQL Data collector, para monitorear los datos de SQL Server
  9. Nuevas características del SQL Server Profiler para sincronizar el monitorea de consultas de SQL con los contadores del data collector de Windows.
  10. Indices en los tipos de datos espaciales.
  11. Ahora usted puede crear índices con la sentencia where para restringir los datos en los cuales desea índices. Por ejemplo si hay un sector poco consultado de sus datos, usted preferirá no incluir los índices en ese sector y así consumir menos espacio reduciendo tiempo de ejecución de consultas.
Consejo importante antes de hacer upgrade a SQL Server 2008:
La mayor parte de las características nuevas vienen en SQL Server Enterprise Edition. Si su edición es SQL Server Standar o inferior, tal vez se pueda decepcionar de que no incluyen varias de las características deseadas.

Para saber más sobre las características según la edición de SQL Server 2008, le recomiendo que vea esta página antes de realizar su compra:


Cursos sobre SQL Server 2008
Si usted ya tiene experiencia en SQL Server 2005, le recomiendo tomar el siguiente curso:


Si usted no tiene experiencia o sólo trabajo con SQL Server 2000 o inferior le recomiendo este curso:

Donde tomar clases de sql server 2008 ?.
Depende del país en que estés. En Bolivia un centro especializado con el cual trabajo es Tekhne

Cuanto cuesta comprar un instalador de bases de datos SQL 2008 Server Enterprise Standard Workgroup Edition ?

La lista completa de precios está en este link:
http://www.microsoft.com/sqlserver/2008/en/us/pricing.aspx



Tienes más dudas ?
Si tiene alguna duda, no dude en escribir a este blog.

Instalando Microsoft SQL Server 2008 por primera vez


Para ver la lista todos los artículos escritos haga click AQUI


Introducción. Este articulo es tanto para gente que ya manejó bases de datos SQL Server 2005 como para personas que están comenzando a ver SQL Server 2008 de 0.

Personalmente, no me parece muy intuitiva la nueva instalación. Microsoft se preocupó en que este instalador por defecto no sea muy inseguro. Lo malo es que ahora instalar es un poco más difícil y no es como a todos los usuarios de Microsoft nos gusta (presionar siguiente, siguiente y siguiente) :-).


Lo que si les puedo asegurar es que hay muchas mejoras de seguridad. Si la versión SQL SERVER 2005 era segura, esta última versión es mucho mas.


Estoy incluyendo un video en el tutorial de SQL Server para que sea más bonita la instalación installsql2k8.swf.

Instalador

Requerimientos del sistema



Si su máquina contiene el sistema Windows XP x86, va a tener problemas para instalar el producto.

Personalmente uso las Maquinas Virtuales (VMWare) dentro de una maquina Windows XP SP2.
En mi máquina estoy usando Windows 2003 server sp2.
El video que voy a mostrar está hecho en un Windows 2003 server con Service Pack 2 (SP2).



Lo más sencillo es instalar en una maquina con Windows Vista. Para más datos sobre sistemas operativos visite el sitio de Microsoft:



http://technet.microsoft.com/es-es/library/ms143506.aspx



Si usted no sabe mucho de SPs (Service Packs), son parches que usted va a necesitar para poder instalar la base de datos SQL Server.



La mayoría de las personas que tratan de instalar por primera vez, reciben un mensaje raro de que el sistema operativo es incorrecto y no aprenden SQL Server por ese motivo. Instalar es un poco moroso. Especialmente si no se tienen los últimos SPs llamados también parches de seguridad.



Yo animo a todos a no bajar los brazos, una vez que está instalado, es la base de datos más amigable que existe.



Recomiendo una buena maquina con varios Gigas de disco duro (por lo menos 3 sería ideal):



http://msdn.microsoft.com/en-us/library/ms143506.aspx#HardDiskSpace


Otros artículos:

Instalación silenciosa o desatendida de SQL Server...
Promocionando software
Manejo de SQL Server mediante osql
Obtener certificaciones Microsoft
Todos mis artículos