Social Icons

twitter facebook google plus linkedin

sábado, 24 de noviembre de 2012

Error Foreach en C# al recorrer un DataSet

Estaba programando en C# para agilizar la mente y al querer recorrer un dataset con un foreach, me encuentro con el siguiente error:
foreach statement cannot operate on variables of type 'System.Data.DataSet' because 'System.Data.DataSet' does not contain a public definition for 'GetEnumerator'

Es un error bastante simple de solucionar.  Solo basta agregar Tables[0].Rows al objeto que se va a recorrer. Por ejemplo

foreach con error:
foreach(DataRow linea in MiDataSet)
{
bla bla
}


foreach corregido:
foreach(DataRow linea in MiDataSet.Tables[0].Rows)
{
bla bla
}


Simple.

¡Chau!

viernes, 23 de noviembre de 2012

¿Que pasa cuando SQL Browser no está arriba?

Puede que para muchos sea un misterio lo que realiza este servicio, ya que es un servicio silencioso.  Pero, ¿A qué se dedica este puerto? Fácil. Se dedica a estar a la escucha de las conexiones entrantes que hacen uso de los recursos de SQL Server. Por ejemplo, si se tiene una instancia nombrada permite que nos podamos conectar a esa instancia nombrada.

¿Qué pasa si el servicio no está arriba? Al momento de entrar por SSMS, nos arrojará un error así:

[caption id="attachment_1508" align="alignnone" width="300"]Error al no estar iniciado SQL Browser Error al no estar iniciado SQL Browser[/caption]

Solo queda iniciarlo y funcionará.

No pretendo explicar todo el funcionamiento de SQL Browser, porque en la documentación ya está todo dicho con mucho detalle. Pueden revisarla desde aquí.

 

¡Chau!

jueves, 22 de noviembre de 2012

SQL Server y Teradata... ¿Cómo conectarlos?

Es prácticamente imposible que en las empresas tengan toda su plataforma de una sola marca. Es por esto que las distintas plataformas y aplicaciones deben ser capaces de trabajar junto a otras de otras marcas y con excelente rendimiento.

Hoy me tocó visitar a un cliente donde tenían un Teradata datawarehouse y toda la capa de análisis la querían levantar con SQL Server Analysis Services.

El principal problema estaba en que de forma nativa ambas plataformas no son capaces de conversar entre si y justamente se precisaba que conversaran.

Por fortuna nuestra existe un componente de Teradata para .NET, que hace posible la conexión de aplicaciones hechas en .NET con Teradata. Se puede descargar gratuitamente desde aquí.

Si quieres rapidez, existen unos conectores fabricados por Attunity y proveen una conexión de alta velocidad, casi a wire-speed. Lamentablemente solo existe para SSIS y no directamente para SSAS. Pero desde SSIS se puede ocupar un componente que se llama Partition Processing y que sirve para cargar una partición de un cubo de SSAS. El conector se puede descargar desde aquí

El conector fabricado por Attunity está disponible para Oracle y para ambas arquitecturas (32 y 64 bits).

 

¡Chau!

viernes, 16 de noviembre de 2012

Maximizando la disponibilidad de las aplicaciones de mision critica

Hola Mundo.

El día 14 de Noviembre del presente año, se realizó un evento en el Hotel W (Santiago) para mostrar los nuevos productos de Microsoft justo en un momento de muchos lanzamientos. Recordar que este año se lanzó Windows Server 2012, SQL Server 2012, System Center 2012, Windows 8, una nueva versión de Office 365, entre otras cosas.

Fue un evento al cual asistieron mas de 900 personas. Estuvo muy rico en cuando a contenido. Me invitaron como expositor y toqué el tema de Alta Disponibilidad con SQL Server 2012 aprovechando la tecnología de Always On.

Les dejo las slides del evento.


jueves, 15 de noviembre de 2012

De Trial a Full en SQL Server

Es de lo más normal del mundo desconocer una tecnología y querer conocerla, testearla y usarla para evaluar su adquisición. Me atrevería a decir que todos los productos tienen una edición de evaluación.

La edición de trial de SQL Server no es más que una edición Enterprise que la puedes usar por un determinado período de tiempo (180 días desde su instalación).

Para pasar de una edicion trial a cualquier otra  edición se puede seguir estos pasos:

Abrir el medio de instalación de SQL Server y seleccionar Maintenance y luego seleccionar Edition Upgrade

[caption id="attachment_1494" align="alignnone" width="300"]Upgrade de edicion. Upgrade de edicion.[/caption]

En el paso 2 se introduce la licencia del producto.

Automáticamente reconoce la edición por la licencia que introduzca. Hay que tener en cuenta si se introduce una licencia Standard, todas las características de Enterprise quedarán desactivadas y si la aplicación que es soportada por SQL Server utiliza características de Enterprise, puede que no funcione bien.

[caption id="attachment_1495" align="alignnone" width="300"]Product Key Product Key[/caption]

El paso 3 no tiene complicación alguna. Solo se aceptan los términos y condiciones. En el paso 4 se selecciona la instancia que se quiere actualizar.

[caption id="attachment_1496" align="alignnone" width="300"]Seleccion de la instancia Seleccion de la instancia[/caption]

El paso 5 es la validación del proceso. Solo basta que una regla se rompa para que no funcione.  Un claro ejemplo de sobre NO debe quedar es este:

[caption id="attachment_1497" align="alignnone" width="300"]Validacion Validacion[/caption]

Luego queda hacer que el asistente ejecute las tareas y cruzar los dedos para que todo salga bien. Es importante reiniciar el servicio de SQL Server para que los cambios se apliquen.



Espero que les haya servido.

 

¡Chau!

 

domingo, 11 de noviembre de 2012

SQL Server 2012 SP1 está aquí

Dentro de la semana anterior fue lanzando SQL Server 2012 Service Pack 1 que incluye los dos cumlative updates hasta la fecha y características nuevas de la plataforma de datos.  Las que más destacan para mi son:

Migracion entre clusters  de AlwaysON para la actualización del sistema operativo
Provee todas las herramientas y las capacidades para poder migrar implementaciones de clúster de AlwaysON en el caso que el sistema operativo que alberga el cluster requiera de reiniciar para actualizar el sistema operativo

Indice XML Selectivo
Un nuevo tipo de indices que mejora el rendimiento de las consultas de datos de tipo de datos xml. Reduce espacio en disco y reduce el tiempo de espera de la ejecucion de las consultas.

SQL Server Management Studio Express con todas las funcionalidades de las versiones avanzadas
Por fin.

Pueden encontrar todas las características de este release: Aqui y pueden descargar el service pack: desde aqui

miércoles, 7 de noviembre de 2012

Error de SQL Server Configuration Manager: Cannot connect to WMI provider – Invalid class [0x80041010]

Hoy quise abrir mi SQL Server Configuration  Manager y me salió el siguiente error:

[caption id="attachment_1483" align="alignnone" width="300"]Error de SQL Server Configuration Manager Error de SQL Server Configuration Manager[/caption]

Nunca había visto este error y tampoco mucha idea tenía de como solucionarlo. Así que me puse a investigar en internet y vi que le había pasado a usuarios que tienen SQL 2005, SQL 2008 y SQL 2008 R2 y a mi me pasó con SQL 2012.

Este link fue bastante referencial: http://support.microsoft.com/kb/956013
Aunque la solución estaba para SQL 2008, la acomodé para SQL 2012 y esta es:

Abrir una ventana del cmd con permisos de administrador y escribir lo siguiente:
mofcomp.exe "C:Program Files (x86)Microsoft SQL Server110Sharedsqlmgmproviderxpsp2up.mof"

Un pantallazo:

[caption id="attachment_1484" align="alignnone" width="300"]Solucion Solucion[/caption]

Luego de esto, volver a abrir SQL Server Configuration Manager y correrá sin problemas.

 

Chau!

 

Navega Anónimo con Tor Browser

Hace un par de años, escribí como usar Tor en Windows . En el post hablaba sobre como configurar tor para poder usarlo en Windows y navegar de forma anónima.

Quizá instalar los componentes por separado sea incómodo y engorroso. Peor aun, configurar el proxy y después dejarlo como estaba cuando lo único que queríamos era navegar de forma anónima o pasar por la red de tor.

Menos mal que hace algún tiempo existe un paquete que contiene  todo listo para llegar y usar.  Contiene un navegador ya configurado y todo corriendo para tenerlo en el equipo o llevarlo en un flash drive a cualquier parte.

Está disponible para Windows, MacOSX y Linux. En este link: https://www.torproject.org/projects/torbrowser.html están todas las opciones de descargas (donde podemos escoger el idioma) y están las instrucciones para cada sistema.

¡Ya no hay excusa para no probar Tor!

Error 1478 en SQL Server Mirroring

Este error es bastante recurrente cuando se quiere levantar Database Mirroring. Puede que al momento de configurarlo no se haya presentando ningún warning y ningún error en el proceso, pero si al momento de echar a andar el mecanismo de mirroring aparece este error, es porque no se realizó un paso previo.

[caption id="attachment_1477" align="alignnone" width="300"]Error 1478 Error 1478[/caption]

Así se ve el error y la solución es re simple. Solo hay que respaldar el log de transacciones de la base de datos primaria y restaurar este respaldo en la base de datos de espejo con la opción de NORECOVERY.
Una vez que esta tarea se ha realizado, ya se puede levantar Mirroring y debiéramos tener problemas.

lunes, 5 de noviembre de 2012

Configurar Mirroring en SQL Server

Database Mirroring aparece en la versión 2005 y  es la evolución de Log Shipping. Tal como su nombre lo indica,  sirve para tener una base de datos "espejada" en otro servidor.  Puede trabajar de 3 Formas:

[caption id="attachment_1459" align="alignnone" width="300"]modos de funcionamiento | Fuente: guillesql.es modos de funcionamiento | Fuente: guillesql.es[/caption]

De foma más simple, la principal diferencia entre la configuración síncrona o asíncrona es:

  • De modo síncrono, el servidor principal espera a que las transacciones hagan commit en el servidor espejo para poder continuar.

  • De modo asíncrono, el servidor principal trabaja sin esperar al secundario.


Algunas diferencias entre LogShipping y Mirroring (Hay muchas más, pero aquí están las que más me llaman la atención):

  • Database Mirroring es capaz de configurar una conexión segura entre ambos puntos.

  • Database Mirroring provee la capacidad de hacer failover automático.


Log Shipping no hace ninguna de las dos anteriores.

Para configurar Database Mirroring se puede hacer a través del asistente o se puede hacer a través de instrucciones en t-sql. En este caso, utilizaremos el asistente para ahorrar tiempo.

Antes de partir la configuración nos debemos asegurar que la base de datos esté en modo de recuperación Full y debemos crear un respaldo de la base de datos del servidor primario y restaurarla con la opción WITH NORECOVERY en el servidor que será espejo.

Esta configuración requiere algunas configuraciones en el firewall de ambos equipos. En el servidor principal y en el espejo se debe abrir el puerto TCP 5022. Ahora, si se decide usar otro puerto, hay que estar seguro que el puerto está disponible y se puede abrir para las conexiones.

Una vez que se tiene la configuración previa lista, se hace el asistente que permitirá configurar el mirroring

[caption id="attachment_1462" align="alignnone" width="256"]Abrir asistente Abrir asistente[/caption]

En la ventana principal se debe iniciar el asistente

[caption id="attachment_1463" align="alignnone" width="300"]Ventana Principal Ventana Principal[/caption]

Se inicia el asistente

[caption id="attachment_1464" align="alignnone" width="300"]Inicio del asistente Inicio del asistente[/caption]

Se puede o no configurar un testigo. El testigo servirá para poder tener un failover automático. En este artículo no configuraré un testigo.

[caption id="attachment_1465" align="alignnone" width="300"]Configuracion del testigo Configuracion del testigo[/caption]

Configuración del equipo principal. Se puede cambiar el puerto (pero recuerden que ya habíamos abierto el puerto 5022). Además, se puede seleccionar si se quiere cifrar o no la conexión.

[caption id="attachment_1466" align="alignnone" width="300"]Configuracion del primario Configuracion del primario[/caption]

Para la configuración del secundario es necesario conectarse antes (recordar abrir el puerto 1422 en el secundario). La ventana de configuración es exactamente igual al primario.

[caption id="attachment_1467" align="alignnone" width="300"]Configuracion del Secundario Configuracion del Secundario[/caption]

El servicio debe estar configurado con una cuenta de dominio. Se debe indicar la cuenta del servicio del servidor primario y del espejo.

[caption id="attachment_1468" align="alignnone" width="300"]Cuentas de servicio Cuentas de servicio[/caption]

Para Finalizar:

[caption id="attachment_1469" align="alignnone" width="300"]Finalizar Finalizar[/caption]

Al momento de finalizar, se inicia el proceso de configuración del mirroring. Si aparece este mensaje, es porque está todo bien

[caption id="attachment_1470" align="alignnone" width="300"]Progreso de Configuracion Progreso de Configuracion[/caption]

Al terminar el asistente, aparecerá una ventana así en la cual nos preguntará si queremos iniciar Mirroring al tiro o no. En mi caso, no  configuré el testigo, por lo que no activaré el mirroring para hacer una configuración antes de partir.

[caption id="attachment_1472" align="alignnone" width="300"]Iniciar mirroring Iniciar mirroring[/caption]

Antes de comenzar el mirroring, lo configuré como asíncrono y luego inicié el mirroring

[caption id="attachment_1474" align="alignnone" width="300"]Mirroring Funcionando Mirroring Funcionando[/caption]

 

Si por algún motivo, te aparece el error 1478 cuando echas a andar el mirroring, es porque debes respaldar el transaction log del servidor primario y luego tienes que hacer un restore with norecovery en el servidor espejo. Luego de eso, ya puedes echar a andar el mirroring.

Chau!

viernes, 2 de noviembre de 2012

Configurando Log Shipping

Log Shipping es una de las formas más rudimentarias de "alta disponibilidad" y recuperación de desastres. Creo que apareció por primera vez en la versión 2000 y que versión tras versión se ha ido mejorando.
Esta configuración consta de tres etapas:

  1. Respaldo del log de transacciones de la instancia primaria

  2. Copia del log de transacciones desde la instancia primaria hacia la segunda instancia

  3. Restauración de las transacciones en la instancia secundaria


Para configurar Log Shipping se necesita

  1. Una instancia primaria con una base de datos con Full Recovery Mode o Bulk-Logged Recovery Mode.

  2. Una instancia secundaria. Esta puede estar en la misma máquina o en otra máquina.

  3. Ambos servicios de SQL Agent deben estar funcionando y con una cuenta de dominio.

  4. Una carpeta donde la cuenta de dominio de SQL Agent pueda leer y escribir.

  5. Solo si ambas instancias están en servidores separados, el servidor primario debe tener la carpeta compartida donde dejará los logs y el servidor secundario debe tener una carpeta donde la cuenta de SQL Agent pueda escribir y leer.

  6. Una tercera instancia para que sea de testigo (Opcional)


Pasos:

1.- Servicios en marcha
Antes de partir, es necesario revisar que el servicio de SQL Agent se encuentra funcionando en ambos servidores (En este caso utilizaré dos máquinas para configurar Log Shipping). Este servicio debe estar configurado con una cuenta de dominio.

2.- Carpetas
En la máquina primaria, crearemos una carpeta compartida donde la cuenta de SQL Agent tenga permisos de lectura y escritura. La pyeden crear donde quieran. Yo la crearé en C:. También crearé una carpeta en el servidor primario donde la cuenta de SQL Agent tenga permisos de lectura y escritura.

3.- Configuración de la administración remota de SQL Server en la máquina secundaria
En una etapa de la configuración se requiere conectarse a la instancia de la instancia secundaria para poder configurar la base de datos en el destino. Nada más hay que permitir las conexiones por el puerto 1433 TCP en el firewall de la máquina secundaria.

4.- Configuración de log shipping en la base de datos primaria
Se escoge la base de datos y en el menú se escoge: "Ship Transaction Logs"

[caption id="attachment_1447" align="alignnone" width="300"]Ship Transaction Logs Ship Transaction Logs[/caption]

Se abrirá una ventana y se debe seleccionar el primer checkbox que aparece. Ese que dice: "Enable this as a primary in a log shipping configuration" y se hace click en el botón Backup Settings.

[caption id="attachment_1449" align="alignnone" width="300"]Configuracion de LogShipping Configuracion de LogShipping[/caption]

En Backup settings se configuran las rutas donde irán a parar los log de transacciones en la instancia primaria. Se debe configurar la ruta del recurso compartido y de la carpeta local. Además, se puede configurar la frecuencia de los respaldos, pero para efectos de este artículo no nos meteremos ahí.

[caption id="attachment_1448" align="alignnone" width="295"]BackUp Settings BackUp Settings[/caption]

Al momento de hacer click en Ok la ventana se cierra y vuelve a la ventana inicial. Aquí se configura los secundarios.
En la ventana, hacer click en Addy se abrirá otra ventana.

[caption id="attachment_1450" align="alignnone" width="300"]Configuracion Secundario Configuracion Secundario[/caption]

Se tienen varias opciones: Respaldar la base de datos automáticamente, copiarla a la otra instancia y restaurarla, restaurar un respaldo ya creado en la segunda instancia, o bien, dejar que todo está OK, siempre y cuando nosotros antes hayamos restaurado la base de datos desde un respaldo.
Para efectos de este artículo, dejaremos que el asistente realice toda la tarea.

[caption id="attachment_1451" align="alignnone" width="300"]Configuracion de Copia de Archvos Configuracion de Copia de Archvos[/caption]

Se configura el directorio donde se copiarán los respaldos desde el primario hacia el secundario. Yo configuré la ruta del directorio compartido del servidor secundario.
Una vez que está todo listo, le damos OK a la ventana actual y a la principal.
Aquí comenzará a configurar el servidor primario y el secundario. Una vez que esté listo, mostrará algo así:

[caption id="attachment_1452" align="alignnone" width="300"]Progreso de la configuracion Progreso de la configuracion[/caption]

En el servidor secundario ya podemos ver una base de datos que está en constante proceso de restauración.

5.- Prueba
Para ver que todo funcione, bajamos los servicios de SQL Server de la instancia primaria y en el servidor secundario ejecutamos la consulta:
RESTORE MiDB WITH RECOVERY
Y podemos hacer una consulta a los datos que tenemos.

Interesantes puntos

  • El failover no es automático

  • Los Jobs que se encargan de respaldar y restaurar tardan, por defecto, 15 minutos


Nos vemos en la próxima entrega