Monitor de procesos SQL Server 2000


Estuve buscando en la red un Monitor de procesos de SQL Server para poder monitorear los procesos que se ejecutan en mi servidor SQL Server 2000, encontré un software llamado Embarcadero Artisan, el cual tenia la funcionalidad que buscaba, pero desafortunadamente el software era de prueba, así que seguí buscando otra solución pero ninguna satisfacía mis expectativas. Así que decidí crear mi propio Monitor de procesos para mi Base de Datos.

El monitor es bastante simple, tiene las siguientes funcionalidades.
  • Permite ver todas las conexiones en el servidor de Base de Datos.
     
  • Permite visualizar el estado de la conexión; si esta en espera, ejecutando alguna consulta, procedimiento almacenado, etc.

  • Permite ver los procesos que están generando bloqueos, así como la instrucción SQL que esta ejecutando, y los recursos que bloquea, como, tablas, indice, pagina, etc.

  • Permite ver los procesos que están en modo espera a que un recurso se libere para continuar con su ejecución.

  • Permite eliminar un proceso mediante un KILL.

  • Para aquellos que deseen descargar las fuentes, aquí les dejo el enlace y espero me dejen sus comentarios para ver puntos a mejorar.


Descargar Fuente Monitor SQL Server


Monitor SQL - Lista Procesos

Monitor SQL - Lista Bloqueo

Las fuentes están desarrolladas en PowerBuilder 9.0, y el monitor solo es compatible con SQL Server 2000.




Tutorial PowerBuilder Fundation Class - Parte 2


Programación orientada a objetos

La programación orientada a objetos se basa en tres principios fundamentales:

Herencia

La herencia hace posible que se pueda crear objetos que deriven de objetos existentes, con acceso a sus componentes visuales, data y código. La herencia mejora la codificación, maximiza la reutilización de código y mejora la consistencia.

Encapsulación

Encapsulación, también llamado ocultación de información. Esto significa que un objeto contiene sus propios datos, permitiendo el acceso desde el exterior, según corresponda. PFC implementa encapsulación de la siguiente manera:

  • PFC instancias variables como publico o protegido, dependiendo el grado de acceso desde el exterior. El acceso de lectura a estas variables se realiza mediante funciones de objetos, PFC generalmente provee estas funciones como of_GetVariableName()
  • Para variables de tipo Boolean, PFC provee funciones of_Isvariablename().
  • Para modificar variables, PFC provee funciones of_Setvariablename().
  • En ciertos casos, PFC define variables como públicas, en estos casos el acceso es directo. 

Polimorfismo


Polimorfismo, son funciones que tienen el mismo nombre pero argumentos diferentes.


  



Nivel de extensión PFC y PFE

PFC implementa un nivel de extensión en todas su jerarquía de herencia, este nivel de extensión se encuentran en las librerías PFE. Cuando haya una actualización a la última versión de PFC solo se actualizara el nivel ancestro PFC.


Contenido
Nivel Ancestro (PFC)
Nivel Extensión(PFE)
Aplicación y servicios globales.
PFCAPSRV.PBL
PFEAPSRV.PBL
Servicios DataWindow
PFCDWSRV.PBL
PFEDWSRV.PBL
Objetos visuales y objetos estándar de usuario.
PFCMAIN.PBL
PFEMAIN.PBL
Servicios de utilitarios
PFCUTIL.PBL
PFEUTIL.PBL
Servicios de ventana
PFCWNSRV.PBL
PFEWNSRV.PBL


Cualquier modificación de la aplicación PFC se debe realizar en el nivel de extensión. No modifique ningún objeto del nivel ancestro.



Convención de nombres de objetos PFC 

PFC usa la siguiente convención de nombres:  

Nivel
Nombre
Objetos Ancestro
Usa el prefijo pfc_
Objetos Extensión
Tiene el mismo nombre como su ancestro, pero  sin el prefijo pfc_
  
Por ejemplo, el objeto ancestro para el servicio DataWindow es pfc_n_cst_dwsrv; el objeto descendiente es n_cst_dwsrv. 




Obtener la ultima sentencia ejecutada en SQL Server mediante instrucciones DBCC


¿Que es una instrucción DBCC?

El lenguaje de programación  Transact-SQL proporciona instrucciones DBCC que se ejecutan como comandos de consola para Microsoft SQL Server, existe una gran variedad de instrucciones DBCC que sirven para obtener información vital de SQL Server, así como corregir problemas.

DBCC  INPUTBUFFER

Para obtener la ultima sentencia ejecutada en SQL Server, hacemos uso de la instrucción DBCC INPUTBUFFER, el cual presenta la ultima instrucción enviada desde un cliente hacia el Servidor SQL Server.

Parámetros

     SPID, Id otorgado al cliente cuando realiza una conexión.
     WITH NO_INFOMSGS,  elimina los mensajes informativos.

Uso:

     DBCC INPUTBUFFER(50) WITH NO_INFOMSGS




Tutorial PowerBuilder Fundation Class PFC - Parte 1


Hoy empezaremos con el tutorial de PowerBuilder Fundation Class, el cual tiene el propósito de ir conociendo esta nueva arquitectura de librerías llamada PowerBuilder Fundation Class que por sus siglas se conoce como PFC.

En cada post se irá tratando temas acerca de estas librerías y sus objetos e ir avanzando gradualmente hasta poder construir aplicaciones basadas en PFC.

Antes que nada revisemos el artículo sobre ¿qué es PFC?.

Ahora que sabemos que es PFC hablemos sobre las librerías y objetos.

PFC esta liberado como una conjunto de librerías PowerBuilder (PBLs). Estas librerías contienen los objetos ancestros y descendientes que podemos usar para construir aplicaciones con PFC.
 
Librerias PowerBuilder
 
Antes de usar algún objeto PFC, debemos añadir las librerías PFC a nuestras librerías de aplicación, en nuestro PATH donde estamos trabajando. 

Objetos PowerBuilder
 
Estos son los principales objetos que se usa con PFC:

Objetos
Propósito
Windows
La interfaz entre el usuario y la aplicación PowerBuilder.
Menus
Lista de opciones que se usara para seleccionar o abrir alguna ventana.
Objeto DataWindow
Usado para recuperar, presentar y manipular los datos.
Objetos de Usuario
Componentes reusables que se definen una sola vez y se puede usar muchas veces.


Hay dos tipos de objetos de usuario:

- Objeto de usuario visual
- Objeto de usuario de clase (no visual)

       
Objeto de usuario visual 
    Un objeto de usuario visual es un control visual reusable que contiene un comportamiento predefinido. PFC incluye dos tipos de objetos de usuario visual:  
    • Objeto de usuario visual estándar, PFC proporciona un completo conjunto de objetos visuales estándar, estos objetos incluyen comportamientos pre definido y una completa integración con los servicios PFC. Por ejemplo el objeto de usuario visual u_dw es un objeto DataWindow el cual ofrece una extensa funcionalidad e integración con los servicios PFC.
       
    • Objeto de usuario visual Personalizado, PFC también utiliza objetos de usuario visual personalizados que contienen un grupo de controles. Estos objetos proporcionan funcionalidades avanzadas para usarlas en situaciones específicas.  
    
           Objeto de usuario de clase (no visual) 

          Estos objetos heredan las definiciones del PowerBuilder NonVisualObject class, estos objetos                     encapsulan datos y código. Este tipo de objeto de usuario le permite definir un objeto de cero.
          PFC usa estos tipo de objetos para implementar muchos de sus servicios.
 





PowerBuilder Fundation Class - PFC


Muchos de nosotros que programamos en PowerBuilder y pensamos utilizarlo para desarrollar aplicaciones empresariales, debemos conocer el conjunto de librerías que pone a disposición Sybase para que nuestro desarrollo sea más productivo y eficiente. Estas librerías son conocidas como PowerBuilder Fundation Class (PFC).

Aquel que domine el uso adecuado y eficiente de estas librerías contara con un abanico de características y utilidades para desarrollar aplicaciones de calidad, ya que estas librerías han sido creadas por expertos, usando las técnicas más avanzadas en el uso de objetos.

Pero, ¿qué es PowerBuilder Fundation Class?

El PowerBuilder Fundation Class (PFC), es un conjunto de objetos PowerBuilder que usted puede personalizar y usar para desarrollar bibliotecas de clases.

PFC está escrito en PowerBuilder y entregados como objetos de PowerBuilder con soporte de código PowerScript. Utiliza técnicas avanzadas de codificación orientado a objetos, y asegura que la aplicación utiliza la mínima cantidad de recursos de la computadora.

Las PFC están liberadas como un conjunto de librerías PowerBuilder (PBL). Estas librerías contienen los objetos ancestros (Padre) y los objetos descendientes (Hijo) que se utilizara para escribir una aplicación con PFC. Antes de usar algún objeto PFC se debe copiar las librerías PFC (PBL) a la ruta de nuestra aplicación y agregarle a nuestro Workspace.

La arquitectura interna PFC se basa en dos capas, PFC y PFE, donde cada objeto en la capa PFC tiene un descendiente en la capa PFE. La capa PFC contiene toda la funcionalidad, y la capa PFE es donde podemos escribir nuevo código para ampliar las funcionalidades de un objeto para una necesidad determinada.

A continuación las librerías PFC.


Librería
Contenido
PFCAPSRV.PBL
PFEAPSRV.PBL
Administrador de Aplicación, Servicio de objetos Aplicación y otros servicios de objetos globales
PFCDWSRV.PBL
PFEDWSRV.PBL
Servicios de DataWindow, objetos de usuario y utilidades de ventana.
PFCMAIN.PBL
PFEMAIN.PBL
Objetos visuales estándar, Objetos visuales personalizados.
PFCUTIL.PBL
PFEUTIL.PBL
Objetos de utilidades y servicios.
PFCWNSRV.PBL
PFEWNSRV.PBL
Servicios de ventana, objetos de usuario y utilidades de ventana




Abrir archivos desde PowerBuilder usando la API de Windows


Muestro el código usado para abrir cualquier archivo usando la API de Windows.

Para empezar declaramos la función API ShellExecuteA() que se utilizara, esta funcion se declarara en la sección Global External Functions


FUNCTION long ShellExecuteA( ulong hWnd, string Operation, string lpFile, string  lpParameters, string lpDirectory, int nShowCmd ) LIBRARY "shell32.dll"


El código para invocar al API es:


Long
 hwnd

//w_principal viene a ser la ventana padre donde se ejecuta la función.
hwnd = handle(w_principal)

ShellExecuteA(hwnd,"open",
"c:\archivo_abrir.doc","","c:\",1)


A modo ejemplo se abre el archivo "c:\archivo_abrir.doc"