Buscar en este blog

sábado, 2 de octubre de 2010

Procedimientos almacenados

Los Stored procedures o procedimientos almacenados son un conjunto de operaciones, instrucciones o como su nombre lo dice procedimientos que estan almacenados en una base de datos.

Un solo stored procedure puede contener desde una hasta varias instrucciones.


Estos se ejecutan directamente en el motor de la base de datos. La ventaja de estos, es cuando con unos parametros se ejecuta multiples operaciones, de las cuales el servidor se encargaria y a nosotros solo nos retorna los resultados finales. En estos casos en vez de nosotros hacer multiples cnosultas y transacciones al servidor generando trafico en la red, solo le mandamos los parametros necesarios y nos devuelve una respuesta final (ya sea unica o en forma de tabla).




La estructura para crear un SP (Stored procedure) es muy simple.


CREATE [PROCEDURE] [DBO].[nombre] <parametro_1 tipo_de_dato>[,<parametro_N tipo_de_dato>]
as
begin
<instrucciones>
end



Ejemplo: Suponiendo que tenemos las dos tablas "empleados" y "ventas" siguiente y queremos sacar diferentes datos como cantidades vendidas por en unidades y en pesos (por ahorita solo esas dos formas) en un solo sp, quedaria de la forma siguiente:


----table empleados----
|    cve_emp int,         |
|    nombre char(25),   |
|    app char(20),        |
|    apm char(20)        |
-----------------------

------table ventas-----
|    emp int,               |
|    fec char(8),          |
|    uds double,           |
|    monto money        |
-----------------------



-------------------------
-------PROCEDURE-------
-------------------------
create procedure dbo.consulta_empleados
@tipo char(1)
as
begin
if @tipo='1' begin
   select v.fec,e.nombre+' '+e.app+' '+e.apm, count(v.monto)
   from empleados e, ventas v
   where e.cve_emp=v.emp
   group by v.fec,e.nombre,e.app,e.apm
end else @tipo='2' begin if begin
   select v.fec,e.nombre+' '+e.app+' '+e.apm, sum(v.monto)
   from empleados e, ventas v
   where e.cve_emp=v.emp
   group by v.fec,e.nombre,e.app,e.apm
end else
   select 'OPCION NO VALIDA'
end
end




Y para ejecutarlo se puede hacer de las siguientes formas.

--Consulta las unidades que cada empleado (agrupado por fecha y empleado)
exec cnsulta_empleados "1"
--Consulta el total de valor vendido de cada empleado (agrupado por fecha y empleado)
exec cnsulta_empleados "2"

Bueno pues asi de facil es, y complicado como se lo pongan, ustedes pueden hacer que les haga unir con tablas hasta con las que era imposible con uniones en querys de SQL unicos (o que eran muy dificiles, tambien pueden crear variables de tabla que funcionan como una tabla temporal solo que estas se destruyen inmediatamente se termina de ejecutar el procedimiento almacenado, todo esto lo veremos mas adelante.

Saludos y espero les sea de utilidad esta informacion.

Leer post completo...

miércoles, 29 de septiembre de 2010

Creacion de usuarios desde CMD

Buenas tardes, no se si habran tenido la necesidad de crear un usuario o quitarle la contraseña a este usuario pero sin tener que abrir el panel de control.

Bien, pues es muy fácil desde el simbolo del sistema (CMD) como veremos a continuacion...


Precionamos la tecla de windows + r (con esto nos aparecera la ventana de ejecutar)
Escribimos "CMD" (no importa si son mayusculas o minusculas o combinadas)

Ahora, en esa pantallita negra, podemos ver todos los usuarios de nuestra equipo con tan solo escribir en ella lo siguiente "NET USER". Asi listara los usuarios.

Para ver el estado de un usuario podemos especificarlo, por ejemplo el Administrador, de la siguiente manera: "NET USER ADMINISTRADOR".

Para activar un usuario o desactivarlo solo escriba:
"NET USER ADMINISTRADOR /ACTIVE:YES" (Para activar) ó
"NET USER ADMINISTRADOR /ACTIVE:NO" (Para desactivar).
Estos comandos solo desactican al usuario, no lo eliminan.

Para crear un nuevo usuario solo ejecute de la siguiente manera:
"NET USER JUAN /ADD" (Crea el usuario JUAN sin contraseña)
"NET USER JUAN 123456 /ADD" (Crea el usuario JUAN con contraseña 123456)
"NET USER JUAN /DELETE" (Borra el usuario JUAN)

Ahora si queremos que nuestro usuario sea administrador, tenemos que agregarlo a ese grupo de la siguiente manera.
"NET LOCALGROUP ADMINISTRADORES JUAN /ADD" (Agrega el usuario "JUAN" al grupo de Administradores)

Y para quitarlo del grupo de administradores es:
"NET LOCALGROUP ADMINISTRADORES JUAN /DELETE" (Elimina al usuario JUAN del grupo de Administradores)

Y ahora el comando esperado. Como establecer, cambiar o quitar una contraseña a un usuario. Tomando el ejemplo del usuario JUAN ,solo necesitan ejecutar este comando:
"NET USER JUAN * "
Y despues, les pedira la nueva contraseña, si quieren colocarle una, solo escribanla, si quieren borrar la contraseña solo tecleen un enter. Despues les pedira confirmar la contraseña, de igualmanera, vuelvan a escribirla y den enter o simplenteme den enter si estan eliminando la contraseña.

Parece que esto es todo por hoy.

Espero sus comentarios. Saludos.

Leer post completo...

viernes, 24 de septiembre de 2010

Tareas en Windows Server 2008 (BAT)



No sé si les ha pasado que colocan una tarea programada, la cual ejecuta un archivo BAT, que este asu vez, genera archivos, ya sea un log, un zip u otro, y aparentemente el bat se ejecuta sin problemas pero cuando consultamos si el archivo que genera el bat existe... sorpresa!!!, no existe, jamás fue generado.

Eso es lo que pasa en el S.O. Windows server 2008 R2, sin embargo descubri la forma de programarlos y que trabajen como debe ser.

Les mostraré como deben colocar una tarea programada en el sistema operativo Microsoft Windows 2008 server R2 que ejecuta un queridisimo y muchas veces necesario archivo de ejecucion por lotes (BAT).


Teniendo el archivo BAT listo. (En este ejemplo el archivo bat despliega un "dir" y el resultado almacena en un arhivo de texto dentro de la misma ruta donde esta el bat)

Paso 1.- Abrir el programador de tareas de Windows.

Paso 2.- Crear nueva tarea.




Paso 3.- En la pestaña "General" colocar el nombre y descripcion de la tarea programada y en la parte inferior escoger la opcion "Ejecutar tanto si un usuario inicio sesion como si no" y palomear "Ejecutar con los mas altos privilegios" y por ultimo en "Configurar para" escoger "Windows server 2003, Windows XP o Windows 2000", este ultimo es muy importante para que funcione correctamente nuestro BAT.





Paso 4.- En la pestaña "Desencadenadores" escoger el momento en que uno busca se ejecute la tarea, ya sea una hora especifica en un dia especifico, un fecha diaria, por semana, por mes, al iniciar windows, etc.







Paso 5.- En la pestaña "Acciones" elegir "nueva.." y en esa nueva ventana, seleccionar el BAT que queremos que se ejecute y en donde dice "Iniciar en (opcional)" se coloca la ruta donde esta nuestro BAT , es muy importante que se ponga la ruta, porque aunque dice (opcional) no lo es, ya que si no la colocamos, el bat jamas se ejecuta correctamente.







Paso 6.- En la pestaña "Condiciones" deseleccionaremos todo.





Paso 7.- En la pestaña "Configuración" tambien deseleccionaremos todo, este y el anterior paso son opcionales, queda a disposicion del usuario configurar estas dos pestañas.





Paso 8.- Aceptar. Aqui le pedira el usuario y contraseña que usara la tarea para ejecutarse. Debe ser un usuario con privilegios para ejecutar un archivo de ejecucion por lotes.





Y esos son los pasos a seguir.

Ahora podemos ver que ya nos aparece esta tarea.





Si nos vamos a la ruta donde esta el bat, podemos ver que es el unico archivo que existe.

Procedemos a ejecutar la tarea y nos volvemos a fijar en la ruta del archivo bat.

Y efectivamente, nuestro archivo bat genero un archivo txt, que si lo revisamos contiene el listado de este mismo directorio

Nuestra tarea programada ya fue probada y si funciona.

Saludos.

Espero sus comentarios. Cualquier duda o aclaracion seran contestadas.

Leer post completo...