Asesinar todos los procesos asociados a una base de datos


Everyday hay un pequeño problema que nos da satisfacciones cuando lo podemos solucionar, el del dia de ayer, estuvo centrado en la creación dinámica de bases de datos sin utilizar ISQL y Sql scripts. Una solución fue usar SqlCommand, y ejecutar un script para el DROP y el CREATE de la Base de datos

 

DROP DATABASE MyDBPrueba

CREATE DATABASE MyDBPrueba

 

 

Sin embargo, uno de los problemas que tiene la ejecución de este script se da cuando hay algún usuario conectado a la Base de Datos; en este caso no se puede DROPPEAR la misma.

La solución a este problema puede ser este SQL script que elimina todos los procesos asociados a una base de datos.

 

USE master;

DECLARE curkillproc

CURSOR FOR SELECT

   spid,dbs.name AS dbname

 FROM

master..sysprocesses pro,

 master..sysdatabases dbs

 WHERE

 pro.dbid = dbs.dbid AND

 dbs.name = ‘MyDBPrueba’

 FOR READ ONLY

 

 DECLARE @varspid AS integer

 DECLARE @vardbname AS varchar(256)

 DECLARE @numUsers AS integer

SET @numUsers = 0

 OPEN curkillproc

 FETCH NEXT FROM

 curkillproc

 INTO @varspid, @vardbname

WHILE @@fetch_status = 0

BEGIN

 EXEC(‘kill ‘ + @varspid)

 SET @numUsers = @numUsers + 1

 FETCH NEXT FROM curkillproc

 INTO @varspid, @vardbname

 END

CLOSE curkillproc

DEALLOCATE curkillproc

 SELECT @numUsers as NumUsersDisconnected

 

Si lo traducimos a una function C#, puede quedar de la siguiente manera

 

/// <summary>

/// Disconnects the users from data base.

/// </summary>

/// <param name="sqlConnection">The SQL connection.</param>

/// <param name="databaseName">Name of the database.</param>

/// <param name="commandTimeout">The command timeout.</param>

/// <returns>The number of users disconected.</returns>

private int DisconnectUsers(SqlConnection sqlConnection, string databaseName, int commandTimeout)

{

  string query = string.Format(CultureInfo.InvariantCulture, "USE master; \r\nDECLARE curkillproc \r\nCURSOR FOR SELECT \r\n   spid,dbs.name AS dbname \r\n FROM \r\nmaster..sysprocesses pro, \r\n master..sysdatabases dbs \r\n WHERE \r\n pro.dbid = dbs.dbid AND \r\n dbs.name = ‘{0}’ \r\n FOR READ ONLY \r\n \r\n DECLARE @varspid AS integer \r\n DECLARE @vardbname AS varchar(256) \r\n DECLARE @numUsers AS integer \r\nSET @numUsers = 0 \r\n OPEN curkillproc \r\n FETCH NEXT FROM \r\n curkillproc \r\n INTO @varspid, @vardbname \r\nWHILE @@fetch_status = 0 \r\nBEGIN \r\n EXEC(‘kill ‘ + @varspid) \r\n SET @numUsers = @numUsers + 1 \r\n FETCH NEXT FROM curkillproc \r\n INTO @varspid, @vardbname \r\n END \r\nCLOSE curkillproc \r\nDEALLOCATE curkillproc \r\n SELECT @numUsers as NumUsersDisconnected \r\n", databaseName);

  SqlCommand cmd = new SqlCommand(query, sqlConnection);

  cmd.CommandTimeout = commandTimeout;

  try

  {

    return (int)cmd.ExecuteScalar();

  }

  catch

  {

    throw;

  }

}

 

 

Espero que les sea útil.

 

Saludos

El Bruno

 

PD: No hace falta que recuerde que en el caso de eliminar todas las conexiones abiertas contra una base de datos, debemos tener un cuidado especial para no reventar algún proceso importante contra la misma. Y que este codigo es un rejunte de conocimiento recolectado de diferentes artículos leidos en la Web, si puedo reuno a todas las "sources" :D .

 

CodeCamp 2006



VIC 2006

Sábado 17 desde 9:00 hasta domingo 18 de junio del 2006 hasta las 14:00

Edificio del Sucre

Historiador Ramon d’Abadal i de Vinyals
Vic Barcelona 08500

 

Información general

 

Productos: .NET,SQL Server,Visual Studio.

Audiencia recomendada: Developer.

 

MSDN y Spain.NET patrocinan el CodeCamp, un evento de fin de semana dirigido a
desarrolladores de software. Si eres inquieto, emprendedor, te gusta lo que haces y
además quieres vivir de ello, te proponemos pasar un fin de semana en Vic, y
compartir con gente como tú dos días donde sólo se hará una cosa: ¡escribir código!

Tendrás la oportunidad de aprender las últimas tecnologías que más se demandan en
la actualidad, con ponentes muy cualificados y con carácter 100% práctico, sin
transparencias ni adornos, sólo código.

Además si tienes alguna idea que quieras poner en práctica te ayudaremos a hacerlo.
Hablaremos de las distintas posibilidades para escribir software por tu cuenta, y
tendrás a expertos que te podrán asesorar en tus primeros pasos. Y por supuesto
cuenta con pasar un fin de semana divertido, con actividades y en un entorno
privilegiado.

Code Camp intenta concentrarse en seis puntos fundamentales : (1) de y para la comunidad de
Desarrolladores; (2) Gratuito; (3) Máximo aporte del contenido por miembros de la comunidad ; (4) no
comercial, solo técnica; (5) Contenidos definidos y organizados por la comunidad; (6) Se realiza fuera de
horas de trabajo.

Inscripción:

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032300511&Culture=es-ES


IMPORTANTE:
Dispondremos de autobuses para el traslado a Vic desde Barcelona, volviendo el
domingo al mismo punto de partida. Recuerda revisar tus datos de registro e incluir tu
número de móvil para ponernos en contacto contigo.
Contamos también con un número reducido de plazas para alojarte.
Tanto el transporte como el alojamiento son gratuitos, así como las comidas y el
acceso a las sesiones.


Más información aquí.

 

Saludos

El Bruno

Mails : Visual Studio, Prerequisitos


Otro par de mails de preguntas. En este caso, prerrequisitos para Visual Studio 2003.

 

 

 

Bruno, eres muy amable… Gracias.

Ha sido de gran ayuda esta información que desconocía, por ser novato en el tema.

 

Hasta Pronto.

Rodolfo.

 


De: Bruno Capuano [mailto:bcapuano [ at ] gmail [ dot ] com]
Enviado el: Sábado, 13 de Mayo de 2006 05:28 a.m.
Para: ‘J Rodolfo’
Asunto: RE: Saludo y Pregunta

 

Rodolfo,

 

Mira si te fijas en los prerrequisitos de VS2003, http://www.microsoft [ dot ] com/spanish/msdn/vstudio/productinfo/vstudio03/sysreqs/default.asp

Puedes ver q el Sistema Operativo Windows XP Media Center no está soportado, deberías actualizar a Windows XP Professional, o Windows 2003. Esto se debe a que la versión XP Media Center no posee todas las funcionalidades de SO que tiene XP.

 

Saludos y si tienes alguna otra duda, no dudes en preguntar.

 

Bruno

 

 


From: J Rodolfo [mailto:jrodolfobv1 [ at ] yahoo.es]
Sent: sábado, 13 de mayo de 2006 0:17
To: bcapuano [ at ] gmail [ dot ] com
Subject: Saludo y Pregunta
Importance: High

 

Hola Bruno, deseando estés bien.

Necesito pedirte un favor.

Adquirí el año pasado, a finales, un paquete de Software para profesores de una institución educativa, es decir Licencias.

El paquete incluyó un sobre marcado o titulado así:

 

VStudio .NET Pro 2003 Win32 Spanish Disk Kit MVL CD

 

Este Sobre contiene una bolsa plástica con 11 (once) CD’s que abarcan:

 

1. Spanish Microsoft Visual Studio .NET 2003 Professional (Windows Prerequisites)

June 2003 Aplications

Developer Tools.

 

2. Disco 1

 

3. Disco 2

 

4. Disco 3… y así otros más hasta los que están marcados con Septiembre 2004.

 

El caso es que no se dejó instalar en mi computador. Poseo un Dell Dimension 950 con Windows XP Media Center.

 

Por favor, ¿Qué debo hacer? ¿Cómo actualizo el programa o los archivos que me permitan instalar este programa?

 

Agradezco cualquier ayuda que puedas brindar, como para no perder la inversión.

 

Hasta pronto,

 

Atte. Rodolfo Bossa.

Chía, Bogotá.

E-mail: jrodolfobv1 [ at ] yahoo.es

 

Mails – Obteniendo directorios del sistema


Nuevo mail de preguntas y respuestas …

 

Saludos

El Bruno

 

 

 

Hola

 

El codigo para la variables de entorno de Archivos de programa en smartdevice es

 

Public programFiles As String = OpenNETCF.EnvironmentEx.GetFolderPath(OpenNETCF.EnvironmentEx.SpecialFolder.ProgramFiles)

 

Bernardo

 


De: Bruno Capuano [mailto:bcapuano [ at ] gmail [ dot ] com]
Enviado el: Miércoles, 03 de Mayo de 2006 12:48
Para: ‘Bernardo Cisternas’
Asunto: RE: variable de entorno

 

Si …

Es para Vb.Net

 

Saludos

 

Bruno

 


From: Bernardo Cisternas [mailto:bcisternas [ at ] disc.cl]
Sent: miércoles, 03 de mayo de 2006 18:22
To: ‘Bruno Capuano’
Subject: RE: variable de entorno

 

Esto es para VB.net?

Me sale que GetFolderPath y SpecialFolder no es miembro de System.Environment.

Bernardo

 

 

 


De: Bruno Capuano [mailto:bcapuano [ at ] gmail [ dot ] com]
Enviado el: Miércoles, 03 de Mayo de 2006 12:00
Para: ‘Bernardo Cisternas’
Asunto: RE: variable de entorno

 

Bernardo buenos días.

 

Puedes utilizar la clase System.Enviroment, por ejemplo

 

 

Dim programFiles As String = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

MsgBox(programFiles)

 

 

Saludos

 

 

Bruno Capuano
Sr. Solution Developer SD
Avanade, Inc. |  Madrid Development Center
This mail was sent using Office 12 beta.

 


From: Bernardo Cisternas [mailto:bcisternas [ at ] disc.cl]
Sent: martes, 02 de mayo de 2006 21:08
To: bcapuano [ at ] gmail [ dot ] com
Subject: variable de entorno

 

Hola

 

Usted sabe cual es la variable para obtener “program files” o “archivos de programa”?

 

Bernardo

 

Mails – Instalando Enterprise Library sin Visual Studio


Hace un tiempo que me llegan diferentes consultas a mi mail relacionadas con diversos temas, como por ejemplo, Enterprise Library, Microsoft CRM, .Net, Visual Studio, etc. Casi siempre trato de responder, o ayudar a la persona siempre a cambio de una pizza y un par de cervezas desinteresadamente, pero ahora q se han empezado a repetir algunos temas, comenzaré a dejar el contenido de los mails en el blog, así sirve como futura referencia y mis amigos google y msn se encargan de indexar contenido útil.

 

En este caso, un mail referido a la instalación de Enterprise Library, en un entorno de producción sin Visual Studio.

 

Saludos

Bruno

 

Gabriel, no hay problema.

 

El problema efectivamente es de permisos al momento de “inicializar” los contadores internos de EntLib, por lo que la solución debería ser utilizar el bat de ejemplo que yo he puesto en la Web.

Un par de datos para que tengas en cuenta:

 

1.         Te aconsejo copiar todo el contenido del directorio Bin de EntLib, desde tu pc de desarrollo al server de producción y también el bat.

2.         El archivo bat debe estar copiado en el mismo lugar donde estén los assemblies de EntLib.

3.         Desde esta ubicación debes ejecutar el Bat y el mismo debería funcionar sin problemas (me parece recordar que tiene puesto en duro el path del .Net Framework, deberías revisar este punto)

 

Saludos

 

Bruno

 

________________________________________

From: Gabriel D’Intino [mailto:gdintino[ arroba ]gmail[ dot ] com]

Sent: miércoles, 26 de abril de 2006 2:16

To: Bruno Capuano

Subject: Re: Sobre enterprise library…

 

Te cuento Bruno, creo que no fui muy explicito.

Ya tengo instalada la Enterprise Library en un entorno de desarrollo que cuenta con VS 2003 y no he tenido ningun problema.

Los incovenientes surguieron a la hora de ejecutar la aplicacion desplegada en un entorno de producción que no tiene instalado VS 2003.

El error que arroja la aplicación es el siguiente:

Server Error in ‘/CRM’ Application.

——————————————————————————–

System.TypeInitializationException: The type initializer for "Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataConnectionFailedEvent" threw an exception. —> System.Security.SecurityException : Requested registry access is not allowed. at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable) at System.Diagnostics.EventLog.CreateEventSource(String source, String logName, String machineName, Boolean useMutex) at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData) at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category) at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID) at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type) at Microsoft.Practices.EnterpriseLibrary[ dot ] common.Instrumentation.PerformanceCounterInstances.ReportCounterFailure (String message) at Microsoft.Practices.EnterpriseLibrary.common.Instrumentation.PerformanceCounterInstances..ctor(String categoryName, String counterName, Boolean createNewInstance) at Microsoft.Practices.EnterpriseLibrary[ dot ] common.Instrumentation.InstrumentedEvent.AddPerformanceCounter (String category, String[] counterNames, Boolean createNewInstance) at Microsoft.Practices.EnterpriseLibrary[ dot ] common.Instrumentation.InstrumentedEvent.Initialize(String counterCategory, String[] counterNames, Boolean createNewInstance, String eventLogSource, EventLogIdentifier[] eventIds) at Microsoft.Practices.EnterpriseLibrary.common.Instrumentation.InstrumentedEvent..ctor(String counterCategory, String[] counterNames, Boolean createNewInstance, String eventLogSource, EventLogIdentifier[] eventIds) at Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataServiceEvent..ctor (String[] counterNames, EventLogIdentifier[] eventLogIds) at Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataConnectionFailedEvent..ctor(String[] counterNames, EventLogIdentifier[] eventLogIDs) at Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataConnectionFailedEvent..cctor () — End of inner exception stack trace — at Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataConnectionFailedEvent.Fire(String connectionString) at Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataInstrumentationFacade.ConnectionFailed (String connectionString) at Microsoft.Practices.EnterpriseLibrary.Data.Database.OpenConnection() at Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteReader(DBCommandWrapper command) at ColumbusTechnology.Datos.BD.SQLServer.EstadoSS.obtenerPaginaVenta (Int32 est_codigo) in c:\documents and settings\gdintino\mis documentos\visual studio projects\columnbustechnology.g-call\columbustechnology\datos\bd\sqlserver\estadoss.cs:line 276

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

……………

despues de este error intente instalar la EL y me surjieron varios problemas (el bat que las genera no funciona correctamente por que dice que necesita la ruta de VS2003 y mucho menos puedo instalar los servicios) Entonces intente tocando el bat por dentro como vos mostrar en tu articulo, instalando el SDK, y demas.

Espero haberme explicado :)

Desde ya muchas gracias por tu tiempo

Saludos

Gabriel

 

 

 

2006/4/25, Bruno Capuano <bcapuano [ at ] gmail [ dot ] com>:

Hola Gabriel

 

Te comento un par de cosas para q las tengas en cuenta

 

1.       Si tenes el VS2003 instalado, ya tenes el .Net Framework 1.1 y todo lo necesario para poder empezar a desarrollar. No tendrías que instalar nada mas para poder utilizar Enterprise Library.

2.       Cuando me decis que no pudiste instalar EntLib, que tipo de error te dio ?

3.       El articulo que escribí yo está pensado para entornos donde no haya instalado VS, pero =mente funciona si tenes VS.

 

Tomando todo esto en cuenta, yo trataría de ver que tipo de error te da al instalar, para poder ver como t ayudo.

 

Saludos

 

Bruno

 

________________________________________

From: Gabriel D’Intino [mailto: gdintino[ at ] gmail [ dot ] com]

Sent: martes, 25 de abril de 2006 22:27

To: bcapuano [ at ] gmail [ dot ] com

Subject: Sobre enterprise library…

 

Hola, mi nombre es Gabriel, soy de Cordoba, Argentina y me tome la libertad de molestarte por lo siguiente.

Resulta que estuve tratando de instalar Enterprise Library de Junio del 2005 en un equipo que no tiene instalado VS 2003.

Este equipo al principio tenia solo el framework 1.1 y despues de agregue el SDK 1.1 y lo mismo no pude instalar la EL.

Probe modicando el .bat como dice tu articulo de: http://www.elguille.info/colabora/NET2005/bcapuano_Enterprise_Library_Install_Services_without_Visual_Studio.htm

pero tampoco funcionó. Luego copie el .bat que esta en ese articulo y nada.

Quisiera saber si conoces algun link o documento donde pueda leer y solucionar dicha situación.

Desde ya muchas gracias.

Saludos

 

Gabriel

 

 

Hugo, the Agilist Programmer


Microsoft ha preparado las nuevas herramientas de desarrollo con las que trabajamos en estos días, pensando en 3 personajes principales Mort, Elvis y Einstein. Cada uno de ellos posee sus caracteristicas personales, y cada uno de ellos representa un area de desarrollo, en pocas palabras:

 

Mort, the opportunistic developer, likes to create quick-working solutions for immediate problems and focuses on productivity and learn as needed. Elvis, the pragmatic programmer, likes to create long-lasting solutions addressing the problem domain, and learn while working on the solution. Einstein, the paranoid programmer, likes to create the most efficient solution to a given problem, and typically learn in advance before working on the solution. In a way, these personas have helped guide the design of features during the Whidbey product cycle

 

El mapeo original que haciamos hace un tiempo era Mort VB.Net, Elvis C# y Einstein C++. Sin embargo, Scott Bellware nos ha presentado un nuevo desarrollador con caracteristicas de los 3 anteriores y new features muy interesantes; Hugo.

 

El planteo que hace Scott, es bastante interesante ya que plantea conceptos como que Hugo desestima VSTS por herramientas Open Source, ya que la relación costo-beneficio no justifica la inversion inicial; el concepto de desarrollo de Hugo es 100% test-first programming utilizando tecnicas como TDD, etc; Hugo no cree en RAD, ya que la utilización incorrecta de este tipo de herramientas tienden a complicar el codigo y los componentes del mismo; etc.

 

Finalmente, Scott predice que tal vez Hugo sea el próximo eslabon en la cadena evolutiva de los desarrolladores.

 

Si tienen un tiempo, les recomiendo leerlo.

 

Saludos

Google CodeJam – India


No creo que mucha gente de la India revise este blog, pero como la convocatoria es para todos, apunto el dato. Desde el 20 de marzo, queda inaugurada otra edición del Google CodeJam, esta vez en la India. 

Para los interesados, pueden encontrar más informacion aquí.

 

Saludos

 

 

Hello elbruno,

 

As a participant of past Code Jams, we thought you would be interested in hearing about Google Code Jam India, Powered by TopCoder.  This exciting competition puts you head-to-head with some of the best coders. Take this opportunity to contend for prize money galore, because Google is giving away Rs. 1,500,000 in cash and prizes. You may not only win money, but a prospect to land a job for the future.

 

Registration is now open for the competition and will remain open through March 20, 2006 at 9AM IST (GMT +5:30).  Anyone intending to compete in this competition must register for the event through the registration path that has been set up exclusively for the tournament: www.google.com/Indiacodejam

FxCop 1.35 Beta


Entre pruebas, betas y otros proyectos, he estado utilizando mucho .Net 2.0. Y después de escribir bastante código se me ocurrió ver la consistencia del mismo. Para mi sorpresa, hace unos días que ya salió la versión 1.35 Beta 1 de FXCop para .Net 2.0. Se puede bajar desde aquí.

Luego de las pruebas, veremos los resultados.

Saludos

Programar vs Programar


Cuando hay que afrontar un nuevo trabajo en equipo, los que me conocen saben que no soy un fanático de las metodologías y también saben lo que me cuesta adaptarme a las mismas. Esto no quiere decir, que el trabajo diario sea siempre diferente, sino que hay pautas que son demasiado estrictas y que, personalmente, pienso que no aportan mucho dentro del proceso de desarrollo. Creo que el resultado final de un proyecto, es tratar de terminarlo en tiempo y forma, agregar un valor agregado a nuestro cliente, respetando siempre las necesidades y capacidades del mismo (aquí rescato una frase del blog de RamonB: … quien va a pagar los salarios no es esta empresa, sino los clientes de esta empresa. El trabajo que hacemos para nuestros clientes es nuestra única fuente de ingresos…)

Si estoy en un pequeño proyecto, donde se me solicita el desarrollo de un portal (por ejemplo), el proyecto está estimado en un par de meses y posee un presupuesto muy limitado. Lo más probable es que no le ofrezca herramientas de ultima generación, de alto coste, ni que tampoco implemente un gran proceso de desarrollo, gestionaré esos pocos recursos para obtener el mejor producto que satisfaga al cliente y que me ofrezca el mejor beneficio posible. Sin embargo, una cosa que no haré es bajar la calidad del producto final.

Para facilitar el proceso de desarrollo tengo a mi alcance muchas buenas herramientas. Un ejemplo, si miramos la nueva generación de .Net, Visual Studio 2005. Podemos apreciar que el mismo, ya incluye muchos componentes que antes debíamos incluir y configurar "a mano" dentro del IDE en Visual Studio 2003. Como por ejemplo, NUnit. Partiendo de esta base, no puedo aceptar la no utilización de estas herramientas. El no utilizarlas es casi como demostrar un total desinterés y desconocimiento sobre un proceso "ágil" de desarrollo. Y cuando hablo de un proceso Ágil, no me refiero a una metodología 100% Agile Programming, sino a saber aprovechar las ventajas que nos brinda la utilización de las pruebas unitarias. (Es muy fácil pasar de "ágil" a "frágil")

Volviendo al caso anterior, por más limitado que sea el presupuesto de mi proyecto, siempre mantendré un nivel de calidad aceptable en el producto final. Para lograrlo, se han desarrollado muchas variantes basadas en TDD, por ejemplo, que podemos implementar. Podemos incluir herramientas gratis y lograr resultados increíbles. Podemos utilizar aprovechar diferentes Frameworks que nos facilitan muchísimo el diseño y la codificación de la aplicación.

Si tenemos acceso a Internet, no tenemos excusas para no brindar un buen resultado final. El MSDN, Google, GotDotNet y algunos blogs, son una fuente inagotable de recursos.

Saludos.

 

PD: Por lo general enfoques de este tipo conllevan un retraso en los proyectos y cuando los proyectos se atrasan o se complican, por lo general hay tres opciones para elegir:

Reproyectar el trabajo a realizar y eliminar una serie de funcionalidades del proyecto (restar funcionalidad, pero mantener la calidad del producto final)

  • Terminar el proyecto, a coste de bajar la calidad del mismo. (terminamos el trabajo, pero no aseguramos la buena calidad del producto final)
  • Crear días de 49 horas y terminar lo que se pueda cuando se pueda (una de las opciones más conocidas, en la que trabajando más horas, por lo general no sabemos hasta donde llegaremos y mucho menos de que manera llegaremos)

    Ninguna es agradable.

    Outlook Security Warning


    Hace un tiempo comentaba como durante el desarrollo de FlowRuler, Microsoft decidió "securizar" un poco más el modelo de objetos de Outlook y casi nos arruina el proyecto. Cuando una aplicación que utilizaba este modelo de objetos, aparecía el siguiente mensaje de Outlook.

     

    Como la base de nuestra aplicación, era la integración con Outlook, tuvimos que buscar una solución. Después de leer bastante, mi amigo Mario encontró un set de componentes que brindaban la misma funcionalidad de Outlook, pero sin mostrar el mensaje de seguridad. Este producto se llama Outlook Redemption e internamente utiliza MAPI y recrea un modelo de objetos semejante al de Outlook. Pero a nivel programación el trabajo es casi igual.

    Hace unos días encontré otra empresa que brinda la misma funcionalidad. MapiLab proporciona un set de componentes que evitan el molesto modelo de objetos de Outlook, ademas de otros productos interesantes, como pueden ser Add-Ins para Outlook, Office e inclusive Outlook Express. Probando algunos de estos productos, veo que son de una calidad muy buena y un precio más que razonable. (Inclusive regalan sus productos a los MVPs, como una campaña promocional supongo )

    Saludos