La vida de un Microsoft Most Valuable Professional


Esta fue una conferencia que la hice en Santa Cruz. Ya que solo era voz y Powerpoint desde la comodidad del hogar, pude dar la conferencia desde una laptop usando solamente un short.

Ahí también habla mi colega Fabian Imaz de Uruguay. Un experto en SharePoint. La verdad, es muy difícil ser buen padre, buen esposo, buen hijo y buen profesional al mismo tiempo.  Pero uno hace lo mejor que puede y la clave del éxito para tener más tiempo es:


  • Rodearte de  gente capaz.
  • Confiar en los demás y saber delegar.
Si sabes hacer eso, el mundo es tuyo. Esa vez dimos la conferencia para los Microsoft Students, pero en esta charla no hemos incluído información confidencial que no pueda ser divulgada al público en general.


Voten por mí


Hola, estoy representando a Bolivia en un concurso de votos a nivel mundial sobre escritores de bases de datos SQL Server.

Soy el único representante de Bolivia.

Puedes votar haciendo click ACÁ.

Cuando voten les va a salir un mensaje diciendo: check at least one rookie of the year. Esto significa que también tienen que votar por los nuevos que están en la columna de la derecha.


La mayoría de los otros candidatos son de Estados Unidos y Asia.



Para los que no me conocen, pueden ver mi trayectoria profesional ACÁ.

El sitio que promueve esto es MSSQLTIPS. Una prestigiosa revista de SQL Server que es una de las bases de datos más populares a nivel mundial.

Espero que me puedan ayudar con su voto.
Muchas gracias de antemano y ¡viva Bolivia!

Digital Harbor en Cochabamba - Una nueva empresa de software




Estaba tranquilo trabajando en casa cuando recibí una inesperado email ofreciéndome trabajo como consultor en SQL Server.

Yo supuse que no iba a poder colmar mis expectativas salariales ya que en Bolivia los sueldos son medio bajos, pero igual fui.

No tenía muchas ilusiones ya que el email de la persona era un gmail. Cuando fui, me encontré con una casa. La empresa era una casa de 2 pisos bastante grande. No había ningún letrero lo cual me pareció raro.

Al final quedamos en capacitaciones sobre SQL Server Performance and Tuning. El equipo era bueno. El nivel era avanzado y la complejidad de su software programado era muy respetable. El grupo respondió muy bien. Pagaban bien y el jefe de la empresa (Valentín Laime) era bastante práctico, pragmático, simple. Un estilo de liderazco totalmente compatible con mi personalidad.

Trabajan duramente con SQL Server y Java usando aplicaciones Web.


La página web de Digital Harbor es:

http://www.dharbor.com/

Entiendo que la central es en Vancouver, USA.
También tengo entendido que tienen sucursales en la India. En la página web oficial no figuran las oficinas de Cochabamba, Bolivia.

La gente de la oficina trabaja duro. En la parte económica pagan a tiempo y hay sueldos buenos y malos de acuerdo a la capacidad de la gente.

A mi me pagaron con 1 día de retraso por mis capacitaciones y se disculparon indicándose que eran motivos de fuerza mayor lo que les impidió hacerlo a tiempo.

Me ofrecieron trabajo de planta con AFPs y seguro de salud. Lo que indica que es una empresa registrada y legal con un buen margen de ganancia ya que hay varias empresas en la ciudad que evaden impuestos y las obligaciones con sus empleados.

Por ser Microsoft Most Valuable professional, tengo muchas obligaciones y compromisos por lo cual no pude trabajar con ellos en contrato permanente, pero si les ayudo algunas horas de vez en cuando.

En resumen, parece una empresa confiable donde vale la pena entrar a trabajar.




Vectores o matrices en SQL Server


Si bien en SQL Server no hay vectores, hay una alternativa denominada parámetros de valores de tabla.
Básicamente es una variable que se comporta como tabla en SQL Server y que acepta insert, delete, update como una tabla normal, pero es una variable.

Para crearla, se define el tipo de dato:

CREATE TYPE Departamento AS TABLE
(
ID INT, Nombre VARCHAR(30)
);
GO

Estamos creando una variable llamada departamento que es una tabla con los campos ID y Nombre.

El resto es declarar la nueva variable creada:

DECLARE @miDepa AS Departamento

Y se puede insertar valores en esta variable:

INSERT INTO @miDepa VALUES
(1,'IT'),
(2,'Ventas'),
(3,'Finanzas')

O hacer un select:

SELECT * FROM @miDepa


Y ahora como llamo a esta variable en SQL Server?

El procedimiento almacenado recibe como entrada una variable del tipo tabla. El resto es llenar la tabla X.

CREATE PROCEDURE llenatabla
@table departamento READONLY
AS
INSERT INTO dbo.Departamento
SELECT ID,Nombre

FROM @table

Finalmente es simplemente pasar el parámetro al procedimiento almacenado.

EXEC dbo.llenatabla @miDepa

Apuntes sobre cursores y recomendaciones en SQL Server


En SQL Server los cursores son muy lentos. Prácticamente nunca es recomendable y es bueno buscar otras alternativas de acuerdo a la necesidad.

De forma general se podría decir que:

Si la consulta es veloz y toma pocos segundos y no va a cambiar esa velocidad a medida que aumente el tamaño la base de datos (al menos no de forma repentina), se podría mantener los cursores.

Sin embargo, si usted cree que los datos que manejan los cursores van a aumentar a miles o peor a millones de filas, vale la pena reemplazar el cursor.


Los cursores en general son utilizados por gente que se siente cómodo con el manejo secuencial, pero el cursor en sí es lento. Bloquea datos y consume muchos recursos.

Si no tiene otra alternativa a cursores, recomendamos usar la opción FAST_FORWARD (si es aplicable) y READ_ONLY para optimizar los cursores.


Alternativas a cursores

Paso de parámetros vía linea de comandos en SSIS


En SQL Server Integration Services (SSIS), mucha gente aprende, pero le cuesta llegar a poder recibir parámetros. En este ejemplo voy a copiar datos de una tabla origen a una tabla destino especificando el ID como parámetro. Luego voy a llamar al paquete desde el cmd (la línea de comandos y pasarle el parámetro).

Para este ejemplo, estoy usando la base de datos adventureworks, pero usted puede adaptar el ejemplo a cualquier tabla de cualquier base de datos. 

El paquete es un simple Data Flow y dentro del Data Flow se tiene un OLE DB Source y un OLE DB Destination:





Vamos a tener una variable con el valor del ID a especificar y la otra variable contendrá la expresión con la sentencia..



La expresión adjuntará la consulta a un parámetro. En este caso la consulta es la siguiente:
"SELECT [BusinessEntityID]       ,[NationalIDNumber]       
FROM [HumanResources].[Employee] 
where [BusinessEntityID]= "+ @[User::Variable1]

Donde User Variable es la otra variable que contiene el ID. Estamos mostrando el BusinessEntityID y el NationalIDNumber de la tabla Employee cuyo BusinessEntityID es igual a una variable.


En el source hay que utilizar, SQL command from variable para recibir variables en los comandos. Es decir que el comando o la sentencia select permita recibir parámetros. Para eso se usa una variable.


El resto es crear la tabla destino. 


Finalmente, para ejecutar el paquete en la línea de comandos le vamos a pasar el valor de 9 al parámetro creado. Hay que tener extremado cuidado con las mayúsculas y minúsculas. Esta línea de comandos es extremadamente sencilla.

dtexec /F "c:\script2\Package.dtsx" /set \package.variables[Variable1].Value;9 

6to año que Microsoft me nombra Microsoft Most Valuable Professional





A mi linda esposita y a mi hijita por apoyarme siempre en todos mis proyectos de Microsoft.

Quiero agradecer a mis padres por haberme dado ese apoyo incondicional para estudiar sistemas y apoyarme en el fascinante mundo de las computadoras.

A Microsoft por confiar en mí y nombrarme por 6to año consecutivo un Profesional más valioso.

A Jorge Lopez, el dueño de Jalasoft por definir mi área de especialización que sería el área que me daría tantas satisfacciones por el resto de mi carrera. Comencé SQL Server gracias a él y no me separo de esa tecnología nunca.

El programa de MVP incluye varios regalos:



  • Licencias a miles de productos Microsoft como ser Windows, SQL Server, Exchange, Office, SharePoint y varios otros miles de productos.
  • Permite manejar a Visual Studio Online.
  • Se tiene permiso para manejar Azure (la nube). Se puede crear máquinas virtuales, sitios web, se pueden subir aplicaciones móviles, reportes, Machine Learning y mucho más.
  • Pluralinsight son fascinantes cursos e-learing.
  • También puedes subir aplicaciones Windows Phone.
  • Se tiene licencias para Office 365.




  • También se tiene acceso a reportes Power BI.
  • Se tiene soporte técnico especial de incidentes.
  • Prioridad en los foros MSDN.
  • Cursos de Microsoft E-Learning.
  • Ofertas especiales.
  • Subscripción a la revista MSDN.
En fin, las posibilidades son múltiples, los recursos increíbles. Gracias Microsoft.
Si tu deseas ser MVP, escríbeme en los comentarios para que te asesore.