lunes, 12 de diciembre de 2011

Procedimientos no documentados sp_MSforeachtable y sp_MSforeachdb. Parte I

Microsoft SQL Server ofrece dos procedimientos almacenados sin documentar que le permiten procesar todas las tablas de una base de datos o bases de datos todo en una instancia de SQL Server. El primer procedimiento almacenado (SP), "sp_MSforeachtable", le permite procesar fácilmente un código contra todas las tablas en una sola base de datos. El SP otro ", sp_MSforeachdb", se ejecutará una instrucción T-SQL contra cualquier base de datos asociada a la instancia actual de SQL Server.

El "sp_MSforeachtable" SP viene con SQL Server, pero no está documentado en Books online. Este SP se pueden encontrar en la BD Master y se utiliza para procesar un solo comando T-SQL o un número de diferentes comandos T-SQL en contra de todas las tablas de una base de datos dada. Para demostrar cómo funciona vamos con un ejemplo.

Digamos que quiero crear una tabla temporal que contendrá una serie de registros, uno para cada tabla en la base de datos y que en cada fila contenga el nombre de la tabla y el número de filas de la tabla dada. Para hacer esto se desea ejecutar un comando como "select '' count (*) from '' where ''" donde por cada tabla en su base de datos se debe insertar los resultados en una tabla temporal. Entonces, vamos a ver cómo podemos hacer esto usando un cursor y luego usar el SP "sp_MSforeachtable":

Con cursor:

use pubs
go
set nocount on
declare @cnt int
declare @table varchar(128)
declare @cmd varchar(500)
create table #rowcount (tablename varchar(128), rowcnt int)
declare tables cursor for
select table_name from information_schema.tables
   where table_type = 'base table'
open tables
fetch next from tables into @table
while @@fetch_status = 0
begin
  set @cmd = 'select ''' + @table + ''', count(*) from ' + @table
  insert into #rowcount exec (@cmd)
  fetch next from tables into @table
end
CLOSE tables
DEALLOCATE tables
select top 5 * from #rowcount
    order by tablename
drop table #rowcount


Con "sp_MSforeachtable":

use pubs
go
create table #rowcount (tablename varchar(128), rowcnt int)
exec sp_MSforeachtable
   'insert into #rowcount select ''?'', count(*) from ?'
select top 5 * from #rowcount
    order by tablename
drop table #rowcount


Ambos tienen salidas similares, pero el segundo es más corto y de mejor rendimiento. Esta es la descripción de sus argumentos:

exec @RETURN_VALUE=sp_MSforeachtable @command1, @replacechar, @command2,
  @command3, @whereand, @precommand, @postcommand


donde

  • @RETURN_VALUE - es el valor de retorno 
  • @command1 - es el primer comando en ser ejecutado por "sp_MSforeachtable" y definido como un nvarchar(2000)
  • @replacechar - es un caracter que podrá ser reemplazado con el nombre de la tabla que esta siendo procesada (valor por omisión es "?")
  • @command2 y @command3 son comando adicionales que puede sercorridos para cada tabla, donde @command2 correo después de @command1, y @command3 correrá luego de @command2
  • @whereand - este argumento puede ser usadopara agregar  constraints adicionales para ayudar a identificar las filas en la tabla sysobjects que será seleccionada, este argumento es un nvarchar(2000)
  • @precommand - es un argumento nvarchar(2000) que especifica un comado para ser ejecutado antes que se procese cualquier tabla.
  • @postcommand - también es un nvarchar(2000) que sirve para identificar un comando que será ejecutado luego de todos los comandos que han sido ejecutados.
Veamos un ejemplo con @whereand donde el nombre de una tabla empiece con "p":

use pubs
go
create table #rowcount (tablename varchar(128), rowcnt int)
exec sp_MSforeachtable
@command1 = 'insert into #rowcount select ''?'',
              count(*) from ?',
@whereand = 'and name like ''p%'''
select top 5 * from #rowcount
    order by tablename
drop table #rowcount


Bueno luego seguimoes este tema, acá los dejo por hoy.

Procedimiento almacenado sp_executesql

Para ejecutar una cadena, se recomienda utilizar el procedimiento almacenado sp_executesql, en lugar de una instrucción EXECUTE: ver aquí

lunes, 8 de agosto de 2011

Oracle VM VirtualBox 4.1

Oracle presentó la nueva versión VM VirtualBox 4.1 el cual mejora la capacidad de uso y la flexibilidad del software de  virtualización y es aplicable a todas las plataformas.

La compañía asegura que las nuevas capacidades de Oracle VM VirtualBox 4.1 aumentan la capacidad de uso y la flexibilidad del producto al incorporar un nuevo recurso de clonación de máquina virtual.

Acá les dejo de donde descargarlo: VirtualBox

miércoles, 13 de julio de 2011

JDK 7... este mes!!

Aca les dejo parte del post original de Oracle, sobre el nuevo release del JDK:

Java 7 (codename Dolphin[48]) is an upcoming major update to Java, releasing on July 28, 2011(07.28.2011).[49] The development period is organized into thirteen milestones; on February 18, 2011, milestone 13, the last milestone was reached.[50][51] Multiple builds, which generally include enhancements and bug fixes, are released per milestone. The Feature list at the Open JDK 7 project lists many of the expected feature changes.
The expected feature additions for Java 7[52]
  • Strings in switch[56]
  • Automatic resource management[57]
  • Improved Type Inference for Generic Instance Creation[58]
  • Simplified Varargs Method Invocation[59]
  • Better integral literals allowing for underscores as digit separators
  • Concurrency utilities under JSR 166[60]
  • New file I/O library to enhance platform independence and add support for metadata and symbolic links. The new packages are java.nio.file and java.nio.file.attribute[61][62]
  • Library-level support for Elliptic curve cryptography algorithms
  • An XRender pipeline for Java 2D, which improves handling of features specific to modern GPUs
  • New platform APIs for the graphics features originally planned for release in Java version 6u10
  • Enhanced library-level support for new network protocols, including SCTP and Sockets Direct Protocol
  • Upstream updates to XML and Unicode
Lambda, Jigsaw, and part of Coin were dropped from Java 7. Java 8 will be implemented with the remaining features in late 2012.

Otros links de interés:

lunes, 11 de julio de 2011

Windows 8... últimos detalles.

Tras varios meses de rumores la compañía tecnológica Microsoft anunciaría esta semana los detalles finales de lo que será su esperado programa Windows 8.

La empresa realiza esta semana su conferencia anual (10-14 de Julio) en la ciudad de Los Ángeles, California (EE UU), y podría dar la sorpresa a sus seguidores, según informó la prensa estadounidense.

Semanas atrás el director ejecutivo de Microsoft, Steve Ballmer, reveló en una conferencia tecnológica en Las Vegas que Windows8 utilizará la tecnología “System on a Chip” (SoC).

“La tecnología SoC –que ya se emplea en tabletas y celulares– permitirá condensar la esencia del sistema operativo en pequeños chips para lograr que Windows esté disponible en cualquier plataforma existente”, manifestó Ballmer.

Este software se encuentra en fase desarrollo por expertos de Intel, AMD, ARM, entre otros.

Acá les dejo un video introductorio:


viernes, 8 de julio de 2011

Sharepoint 2010: desde cero!! Parte II

Hola gente!!

Pues bien, acá estamos de nuevo. Esta vez les mostraré como instalar MSS 2010 sobre la infraestructura virtual que explicamos en el post anterior.
Lo primero y más escencial es: saber que arquitectura vamos a usar; y lo segundo: para qué la vamos a usar. Parece tonto, pero créanme no lo es, ya que les evitará retrabajo y devolver lo andado. Yo lo hice así (gracias a un buen profesor que tuve de MOSS 2007), pasos más pasos menos:
  1. Identificar que tengo de hardware (que para este caso lo virtualicé con VMWare) para saber sus capacidades.
  2. Calcular (basado en número de procesadores, RAM disponible, etc.) cuantas máquinas virtuales puedo construir. Esto es básico!!
  3. Con base a lo anterior, planear el tipo de granja que mi hardware podría soportar, es decir, si voy a crear una granja solamente para colaboración, solamente para servicio de reportes o bien para inteligencia empresarial, para poner unos ejemplos. La granja que administro es para inteligencia empresarial, por cuanto, necesito que posea alta disponibilidad, balanceo de cargas, redundancia en energía, redundancia de red, descentralización de almacenamiento, etc.
  4. Aterrizando ya con Sharepoint, necesito saber si voy a instalar un small farm, medium farm o lo que se conoce como topología con server groups. Cada una lleva sus propias consideraciones, las cuales están muy bien explicadas en estos diagramas técnicos que tuve que leer.
  5. Escogí un small farm de cuatro servidores (escogencia basada en todo lo anterior), que luego escalaré a mediano plazo a un medium farm. Mi distribución es: 2 WFE's en NLB, 1 App Server y 1 DB Server.
  6. También es importante medir de alguna forma la cantidad de usuarios que podría tener tu sitio. En mi caso, el worst case scenario tendría a unos 300 usuarios al mismo tiempo, por lo que el tema del NLB es preponderante para mi. Además, de que tengo una plataforma de reportes (SRSS 2008 R2) que debo administrar, aproveché el NLB hecho para escalar el servicio de reportes también.

Bueno hasta aquí llega el resumen de consideraciones. Vamos al grano. Si usan Windows Server 2008 R2 como yo, pues deberán instalarlo por medio de la sección de consola del vSphere Client. Esto en realidad hay que hacerlo con cualquier SO la primera vez:


Luego instalen el SP1 para Windows Server 2008 R2 (para que no tengan problemas bájenlo por aparte, no dejen que el mismo Windows lo haga, dura demasiado!!). Por razones de confidencialidad, no puedo decirles cuales son las características de hardware de las vMachines (cantidad de RAM, número de procesadores), pero lo que deben tomar en cuenta es lo siguiente:
  • De las 4 vMachines, la más robusta es la que lleva la carga de SQL Server. Es la que tiene más RAM y procesadores, y obviamente, más disco duro.
  • La que lleva la carga del Central Administration es un poco menos robusta que la anterior, puesto que esta se usará más para dar servicios.
  • Y las más livianas (y de igual configuración...) son las de WFE. Eso si, les recomiendo al menos 4 procesadores en cada una. Estas llevarán la carga de los proxys de SRSS, el BLOB chaching y algún otro servicio para cliente final. Les recomiendo que instalen y configuren una, para que la clonen con el VCenter, es más rápido que instalarla de cero.
Y así, mágicamente, luego de muchas reiniciadas... empezamos con Sharepoint. Como ha costado!!

Vuelvo a repetir, no es una receta escrita en piedra, habrá cosas que se pueden hacer a posteriori. Lo primero que hice (luego de leer un par de foros) fue: instalar en forma básica el IIS 7.5 (viene con Windows 2008 R2) en cada servidor de la granja (todo se basa en Web Applications). A diferencia de MOSS 2007, éste se ocupa en cuanto servidor metan a la solución.

Hecho lo anterior, empecemos a instalar SQL Sever 2008 R2 (la versión Denali funciona con Sharepoint luego de instalar el SP1 de éste) en el servidor que está destinado para eso:


Vamos a la sección Installation y escogemos New installation...


Me brinco las imágenes de la instalación (irrelevante mostraralas...) de los support files y vamos a la parte de Feature Installation...


 Luego, escogemos las opciones que se necesiten instalar. En mi caso escogí el Engine Services, Analysis y Reporting Services, por la naturaleza de mi granja.


Deben recordar varias cosas, si van a instalar Reporting Services, dejen la opción "Install, but do not configure the report server" seleccionada para que posteriormente se pueda configurar a la integración desde la instalación de Sharepoint.


Recuerden activar la opción de FILESTREAM, la cual permite soportar el BLOB file storage (igual se puede configurar luego).


Recuerden que las cuentas de servicio deberían ser (en la medida de lo posible) cuentas de dominio.

La cuenta con la que deberías instalar (ojalá de dominio también) SQL Server debe ser parte de los administradores de Windows de ese servidor, además, deberías agregarla a la lista de cuentas del Engine Configuration:


Por lo demás, termina de darle "Next" e instala. Luego de eso, reinicia el servidor. Logueate con la cuenta que instalaste el SQL Server e instala el SP1 de SQL Server 2008 R2. Deberás bajarlo de aquí. Con esto te aseguras de tener la última versión del engine. Verifica en la sección de Updates de Windows si necesitas más actualizaciones, si es así instalalas, reinicias y listo.

Ya tenemos nuestro primer servidor configurado en su primera etapa (todavía falta mucho camino...), el cual nos permitirá albergar las diferentes bases de datos que Sharepoint crea. En nuestro siguiente post, veremos la forma de instalar MSS 2010 usando este servidor de base de datos.

Nos vemos.

miércoles, 6 de julio de 2011

Centro de recursos para Sharepoint

Esta es la URL oficial del Centro de Recursos para Sharepoint 2010, hay bastantes white papers entre otras cosas. Provecho.

BLOB Caching en Sharepoint 2010: Atributo max-age

Hola gente,

En el post pasado recalqué la importancia que tiene el adecuado manejo de los BLOB (Binary Large OBject) en Sharepoint. Muy bien, para cerrar por el momento el tema, quisiera agregar algo más sobre el tiempo que estará disponible ese caché para que el cliente lo acceda.

Es posible especificar el atributo max-age en el archivo web.config, cuanta cantidad de tiempo (dada en segundos) le es permitido a Sharepoint mantener esa cache disponible localmente en los WFE's.

Por ejemplo, si se requiere almacenar esa cache por 6 horas (o sea 21600 segundos) la configuración sería la siguiente:

<BlobCache location="H:\su_directorio" path="\.(png|jpg)$" maxSize="10" max-age="21600" enabled="true" />

De lo anterior se desprende que, los recursos desde la caché de los WFE's (con el atributo max-age configurado) solamente pueden ser re-solicitados (a la BD de contenido) después de que el intervalo establecido en dicho atributo ha pasado o bien, la caché del web-browser haya sido limpiada. En otras palabras, si los recursos del BLOB cache cambian en el servidor antes de que el intervalo de max-age se haya ejecutado, los clientes que están haciendo uso de esos recursos no verán los cambios localmente.

Para poder que los clientes visualicen los cambios antes que el intervalo haya terminado, se necesitará un browser-cache-flush.

La reducción en las solicitudes de los clientes a la caché de los WFE's, ayuda a estos a mejorar su procesamiento y de rebote, hacen que la experiencia de uso del sitio web sea más placentera para el usuario final. Nos vemos.

martes, 5 de julio de 2011

BLOB Caching en Sharepoint 2010

Hola gente, me pareció interesante una configuración que estuve leyendo, por lo cual quisiera comentárselos.

Para mejorar el rendimiento del manejo de BLOB's en una plataforma Sharepoint 2010, existe un mecanismo out-of-the-box en el que se puede configurar en el web.config de los IIS Web Sites de la infraestructura que usa.

El Disk-Based Caching (BLOB Caching) es usado comúnmente para incrementar la velocidad de acceso a recursos almacenados en bases de datos de contenido, tales como imágenes, videos, archivos java script, etc. Estas mejoras en rendimiento se obtienen meediante el almacenamiento en el caché de los WFE's, una vez que han sido solicitados por primera vez por el cliente.

Esto le permite a Sharepoint servir peticiones subsecuentes para tales contenidos, desde los WFE's en lugar de realizar un round-tripping a la base de datos de nuevo. Para la mayoría de los sitios en Sharepoint este tipo de caching aligera significativamente la carga de tráfico sobre la Back-End Network y los servidores SQL.

Como ya lo mencioné, el BLOB Caching se controla a través del web.config, el cual no está habilitado por omisión. Para habilitar esto es tan sencillo como poner en "true" el atributo enabled de la forma:
  1. Habra el web.config de cada WFE que tenga.
  2. Busque la siguiente línea:
    <BlobCache location=H:\su_directorio” path=”\.(gif|jpg|png|css|js)$” maxSize=”10” enabled=true/>
  3. Coloque en "true" el atributo enabled.
  4. Cierre y salve el archivo.
  5. No es necesario reiniciar IIS luego de esto, pero si lo desea hágalo con "iisreset /noforce".
Como notas finales:
  • El maxSize estaá dado en Gigas y puede ser cambiado si así lo desea.
  • El location puede ser cambiado. Si la dirección de disco no tiene suficiente espacio, debería hacerlo.
  • Para agregar (o quitar) nuevos file types, digítelos en path y separelos entre sí con el pipe (|).
Nos vemos.

Sharepoint 2010: desde cero!! Parte I

Hola gente,

Este es el primer post sobre la configuración de una granja en Sharepoint Server 2010. Acá tocare temas muy diversos como NLB, SRSS, virtualización, BIDS, ESX, etc. Quiero dejar claro que todo lo que voy a exponer no es una receta única, existen muchas maneras de configurar Sharepoint Server 2010, por lo que lo único que deseo es guiarlos y evitarles ciertos "dolores de cabeza" que tuve yo. Muy bien, let's roll...

Lo primero es mencionarles la lista de software que utilice en todo el periplo de configuración de la granja, les adjunto el link acá.

Empezaremos por el principio: la virtualización. Es de sobra conocido que Sharepoint 2010 está diseñado para trabajar con un mejor rendimiento sobre un ambiente virtualizado. Por lo que les adjunto tres vertientes:
Yo en lo personal, prefiero la versión sobre VMWare, pero no los quiero coaccionar je je je je... Bueno, el hecho es que he logrado montar un Small Farm de cuatro vMachines en ESX 4.1 licenciados y administrados por un vCenter Server 4.1 licenciado también (que esperaban... es solución corporativa no casera). Les muestro con un esquema reducido, lo que hice:


Por diversas razones he dejado solamente lo escencial que nos compete por el momento. Observen que esta granja tiene la característica primordial de que los servidores WFE's (Web Front Ends) reparten la carga de las peticiones web y gracias a eso más adelante les explicaré como escalar un SRSS 2008 R2 valiéndonos del mismo NLB (Network Load Balancing).

El primer paso (que no es solamente uno :-)), será instalar en nuestros hosts físicos el ESX 4.1 de VMWare y configurarlo para vea discos de una SAN (lo que utilice es un poco más grande que una SAN... pero bueno...). Lo anterior es debido a que en VMWare es necesario que los discos virtuales que contendrán las vMachines no estén dentro de los hosts, sino, en un storage masivo para poder crear back-ups de forma segura y otras configuraciones (como vMotion).

Lo primero fue instalar el SO residente (ESX 4.1) que permite que una máquina física albergue una virtual:


 A partir de aquí se presentan estos pasos (sólo pondré algunos):




Hecho esto, se procedió a instalar en servidor aparte (lo hice en uno físico) de las máquinas virtuales el software llamado vCenter 4.1. Es importante resaltar que en la red corporativa en la que trabajo, tiene un Active Directory en una versión diferente (inferior) a los servidores que administro, así que recomiendo fehacientemente que si utilizan el Windows Server 2008 R2, instalen primero el SP1 de éste antes que el vCenter.

Una vez instalado, deberán conectar por medio del cliente de VMWare llamado vSphere Client, para que creen un pool de vMachines y así consolidar los recursos de hardware de los hosts físicos (este tema es muy largo, por lo que lo vere en otra serie diferente de posts). Si se les presenta el siguiente error durante la conexión por medio del cliente:


Deberán habilitar los servicios VMWare VitualCenter Management Webservices y/o VMWare VirtualCenter Server en el servidor donde se instaló vCenter:


Y listo! a este punto deberíamos tener la arquitectura virtual (mostrada en la primera imagen) para empezar a instalar nuestras vMachines. Nos vemos en el siguiente post. Ciao!!

domingo, 26 de junio de 2011

Instalacion de Sharepoint 2010: desde cero!!

En este post, solamente definire los elementos de software utilizados. La lista es la siguiente:
  • vCenter 4 de VMWare.
  • ESX 4 de VMWare.
  • Windows Server 2008 R2.
  • SQL Server 2008 R2.
  • Sharepont 2010 Server.
Los siguientes posts describire con detalles la instalacion de un small farm (4 vMachines), con los links de ayuda que utilice, los errores encontrados y como superarlos, ademas de la instalacion en si. Bueno, esten atentos ciao!!

lunes, 28 de febrero de 2011