Anuncios

miércoles, 21 de octubre de 2015

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

lunes, 12 de octubre de 2015

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 

lunes, 5 de octubre de 2015

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.