Cambio de rumbo….

Me voy a tomar la libertad de escribir un artículo No-Técnico… Es más, voy a escribir algo personal por primera vez acá.

Cuando partí este blog en diciembre de 2009, mi intención era tener un lugar donde escribir sobre tecnologías Microsoft (principalmente SQL Server) con la idea de aportar contenido en español.

Durante este tiempo, he tratado de publicar contenido de distintos temas y profundidad. Si bien no he podido escribir tanto como me gustaría, creo que al menos lo que he publicado les ha servido…

Siempre me he considerado un ñoño. Y he estado orgulloso de serlo… Es más, una vez una amiga bromeaba sobre mi diciendo que yo me reía de los chistes de la serie The Big Bang Theory porque… DE VERDAD ENTIENDO ESOS CHISTES!!! (Y porque vio que en mi biblioteca hay libros iguales a los que hay en la biblioteca de Sheldon y Leonard…)

Sin embargo, la vida nos da sorpresas (y ahora entenderán el título de este articulo) y me hicieron una oferta que no pude rechazar… Hace un mes, me ofrecieron el puesto de Application Platform Product Marketing Manager en Microsoft Chile, y obviamente lo acepte.

Como el nombre del puesto lo indica, ahora tengo que preocuparme de mucho más que solo la parte técnica… Además, dentro de Application Platform esta no solo SQL Server (que sigue siendo mi producto preferido), sino que Visual Studio y BizTalk Server. Y en mi caso, además tengo a cargo Windows Azure.

Ustedes se preguntaran: ¿Y por qué debiera importarme eso? Muy buena pregunta, es porque de a poco el “y otras hierbas” de este blog va a ir tomando más importancia; a medida que comience a escribir sobre Visual Studio, BizTalk Servery Windows Azure. Además, voy a aprovechar esta plataforma para ir contándoles de actividades presenciales que tengamos acá en Chile y de actividades online que puedan serles de interés.

Esas eran las noticias, ahora a trabajar… Como siempre, sus comentarios y sugerencias sobre temas para escribir son más que bienvenidas.

CPU Affinity Mask y Virtualización de SQL Server

Después de varios meses sin escribir por temas de trabajo, vuelvo con un articulo de Denny Cherry (Twitter/Blog) sobre un tema que cada vez veo mas presente en distintos clientes… La virtualización de SQL Server. Ahí vamos!

Si tienes algún Servidor SQL físico que quieras virtualizar, debieras revisar la configuración de Affinity Mask antes de mover la maquina desde el ambiente físico al virtual usando algún software P2V. La razón para esta precaución es que la Affinity Mask se configura específicamente para la CPU y el numero de núcleos de la CPU no será el correcto y no podrás obtener la configuración correcta usando sp_configure sin obtener un error como el que se muestra a continuación

Msg 5832, Level 16, State 1, Line 1

The affinity mask specified does not match the CPU mask on this system.

Si no se han convertido las maquinas antes, simplemente cambiamos las affinity mask a 0 lo cual las configura para todos los procesadores. Si ya hemos convertido las maquinas, la mejor opción es conectarnos a los SQL Server usando la conexión dedicada y cambiamos manualmente el valor en la tabla de sistema usando la siguiente consulta

UPDATE sys.configurations

SET value = 0

WHERE Name = ‘affinity mask

Ojala nunca tengan este problema, pero si si les ocurre al menos ya saben como solucionarlo.

ACTUALIZACION: Paul Randal me recuerda que la CPU Affinity se deprecio en SQL Server 2008 R2, así que posiblemente no quieran configurar esta propiedad.

Lync 2010 Mobile Client disponible para Windows Phone

Hace poco rato recibí un aviso vía correo de que el cliente Lync 2010 para Windows Phone ya estaba disponible en el Marketplace.

Como soy intruso por naturaleza lo busqué, lo descargué, lo instalé y lo traté de usar… Pero no pude.

¿Por qué? Porque hace un par de días, se realizó una actualización a los servidores de Office 365 y se publicaron los cambios a los registros DNS necesarios para utilizar el cliente. Ese cambio yo no lo había hecho…

Para encontrar los registros, simplemente vayan al Administrador de DNS de su Office 365 y agreguen (o modifiquen) sus registros DNS. A mi me funcionaron los cambios rápidamente y en menos de 5 minutos ya tenía mi cliente Lync 2010 funcionando.

Acá les dejo algunas capturas:

2011-12-12 01-12-33.487

2011-12-12 01-19-22.209

2011-12-12 01-19-28.587

2011-12-12 01-13-58.572

Usar Windows Live Skydrive como unidad de red en Windows 7

A estas alturas, para nadie es desconocido que por tener una casilla de correo Hotmail también tenemos una cuenta en Windows Live Skydrive.

¿Qué es Skydrive? Bueno, es un sistema de almacenamiento online que ofrece 25 GB de espacio para almacenamiento, 5 GB para sincronización de documentos desde el PC, compartir documentos y archivos con quienes queramos, y mi favorita: Integración con Office 2010 que permite acceder, editar y crear documentos desde cualquier computador, sin necesidad de tener instalado Office.

Una característica que yo no había usado hasta ahora (y que no conocía hasta hace un par de días) es la posibilidad de usar Skydrive como una unidad de red. O sea, podemos abrir la carpeta que queramos desde Windows Explorer sin necesidad de usar Internet Explorer.

¿Como se hace? Acá va:

blog1

  • Ese 1a2b3c4d5e6f es el ID único para nuestra cuenta Skydrive.
  • Ahora creamos la unidad de red.

blog2

blog3

  • Ingresamos nuestro LiveId y Contraseña.

blog4

  • Listo! Ya tenemos una unidad de red N: conectada a nuestro SkyDrive, listo para ser usado como una carpeta común y corriente.

blog5

Espero que les sirva tanto como a mi.

Más de 180 mil websites afectados por ataque de SQL Injection

Si, otro ataque masivo por SQL Injection dando vueltas por el mundo… Ya ha afectado a más de 180 mil sitios en ASP .NET. El artículo de referencia tiene información bastante decente acerca del ataque. Sin embargo, no da muchas luces de cómo protegernos de un ataque por SQL Injection.

    “No hay manera sencilla de arreglar la vulnerabilidad en la base de datos atacada, excepto ‘endurecer’ la base de datos aplicando las actualizaciones y que los requerimientos de seguridad sean consistentes. Monitorear la base de datos buscando actividad inusual también es importante”.

Actualizar (o parchar) SQL Server NO PREVENDRÁ un ataque por SQL Injection, para nada. SQL Server no es el vector de ataque para SQL Injection, la aplicación web lo es. Para cuando el ataque llegue a la base de datos SQL Server (o cualquier base de datos) será muy tarde.

En realidad es bastante fácil protegerse de un ataque por SQL Injection. Solo dejen de usar código SQL generado dinámicamente y usen consultas parametrizadas en su lugar. Eso es todo, ese es el GRAN secreto. Si, se entiende que escribir código .NET como consultas parametrizadas es más difícil que hacerlo solo usando concatenación, pero que ataquen el sitio y coloquen malware en los equipos de los clientes porque quisimos ahorrarnos un poco de tiempo… no sé si será buena excusa.

Como este articulo está basado en el Blog de Denny Cherry (con su autorización), y él tiene un libro llamado “Securing SQL Server”. Es lógico que al menos promocione su libro. En el libro (que yo compré para mi Kindle), explica cómo usar consultas parametrizadas. No es tan difícil y hay varios ejemplos de cómo hacerlo. No se necesita usar procedimientos almacenados para usar consultas parametrizadas. Se puede hacer usando SQL dinámico, funciona básicamente igual.

En caso que aún no se convenzan… las consultas parametrizadas son la UNICA FORMA de estar 100% seguros de estar protegidos contra ataques por SQL Injection.

Saludos,

Notas desde el Keynote de SQL PASS Día 2

Este artículo es una traducción del Blog de Denny Cherry. A quien agradezco la autorización para traducir su contenido al español.

Bienvenidos al Keynote del día 2 del SQL PASS Summit. Hoy fue otro día de anuncios a cargo de Quentin Clark, quien es Corporate VP a cargo del SQL Server database Engine.

Quentin comenzó hablando de como SQL Server 2012 mejorará la manera en que SQL Server provee los 9s suficientes de up time, mediante la introducción de Always On. StreamInsight incluye la opción de Alta Disponibilidad lo que permitirá mantener corriendo los procesos de StreamInsight todo el tiempo.

La primera demo del Keynote de hoy fue sobre mi característica favorita de SQL Server 2012: Always On. En la demo se mostró un clúster de 3 nodos que tenía alojadas las aplicaciones de producción, con el clúster en 2 data centers. Durante la demo, el presentador realizó el setup rápida y fácilmente. Luego de configurar un nodo secundario de solo lectura, el Availability Group apareció como de solo lectura en la configuración de enrutamiento de Always On y los servicios de Reporting Services se configuraron para que automáticamente haga enrutamiento al secundario de solo lectura y así mantener la carga de trabajo de los reportes fuera del servidor SQL se producción. (Escribiré más sobre Always On más adelante).

En la segunda parte del Keynote, Quentin habló acerca de los índices ColumnStore y como esta característica permitirá correr reportes y data analysis mucho, mucho más rápido. Quentin también habló acerca de cómo PowerPivot se mejoró, específicamente cuando se implementa con SharePoint, lo que permite que los usuarios generen sus propios reportes dentro de la plataforma SharePoint (lo cual es genial… A menos que no tengas o no puedas pagar por SharePoint).

La siguiente demo fue para un conjunto de características llamadas Data Quality Services (DQS) y Master Data Services (MDS). DQS es una característica bastante atractiva que permite limpiar problemas de datos, como lat/lon incorrectas basadas en una dirección usando datos desde SQL Azure data marketplace. Durante la demo había un par de tiendas ubicadas en el medio del agua alrededor de Seattle. Usando DQS la ubicación de las tiendas fue corregida rápidamente desde el medio del agua a la ubicación correcta en Seattle.

Quentin habló después acerca del programa Fast Track, que permite a los vendors de hardware vender sistemas pre-empaquetados y pre-configurados con SQL Server, lo cual puede hacer más fácil para los clientes adquirir servidores de SQL Server. Otro programa que Microsoft tiene es el de las soluciones de tipo Appliance, donde pueden obtener un servidor desde un vendor, configurarlo y tenerlo andando en un par de horas; listo para realizar la carga de datos.

Microsoft mostró el HP Enterprise Database Consolidation Appliance. Este sistema es básicamente un Appliance para nube privada, en un rack de servidores con 192 núcleos, 400 discos (que soportan hasta 60 mil IOs de SQL Server) y 2 TB de RAM. Se puede comprar como medio rack o full rack appliance. Yo lo entiendo como un Appliance que tiene un clúster Windows Hyper-V donde se pueden configurar Máquinas Virtuales rápida y fácilmente. Donde el sistema realmente te salva es en la capacidad de implementarlo de una sola vez sápida y fácilmente sin tener que probar manualmente cada uno de los componentes, porque HP ya lo habrá hecho y certifica que el hardware funciona correctamente antes de despacharlo. Desde el punto de vista del soporte, tenemos un solo número de teléfono al cual llamar en caso de problemas de software y hardware.

El siguiente anuncio de hoy fue el driver ODBC para plataformas Linux para que así las aplicaciones de plataformas no Microsoft que se conecten a bases de datos SQL Server no tengan que sufrir cambios. Quentin también anunció que Change Data Capture ahora tiene soporte en SSIS y en Oracle (No estoy seguro de que significa o como funciona).

A continuación, se mostró Semantic Search. Esta característica se usa junto a la nueva característica de File Table, que permite cargar archivos a una base de datos a través del sistema de archivos. Luego, Semantic Search se puede utilizar para leer los archivos y no solo realizar búsqueda de esos valores, sino que puede entender los datos dentro de los archivos y así encontrar archivos basado en búsquedas específicas. Así se pueden encontrar documentos relacionados a lo que se encontró no solo usando términos específicos de búsqueda sino que el documento original para realizar búsquedas.

Otro cambio de nombre de esta semana fue para Project Juneau, ahora se llama SQL Server Data Tools.

Desde ahora, se puede hacer clic derecho en una base de datos y migrarla a SQL Azure. Esto se hace creando un DACPAC (v2.0) y haciendo push hacia Azure, con solo unos clics. Otra característica de Azure que ahora está soportada es la capacidad de realizar respaldos de bases de datos locales o en Azure hacia file storage en Azure, creando un bacpac que luego se copia al file storage en Azure. Hasta ahora, no hemos visto una forma de hacer esto mediante T-SQL. Esta tecnología se puede usar también para respaldar las bases de datos Azure al file storage Azure y luego usar SSMS para conectarse a ese storage y restaurar la base de datos a una instancia local para desarrollo y testeo.

SQL Azure ahora soporta federación del lado de las bases de datos de la plataforma Azure para así realizar escalamiento de la plataforma de bases de datos rápida y fácilmente a través del management portal sin cambios a las aplicaciones. A final de año SQL Azure soportara bases de datos de hasta 150 GB así como el uso de diferentes collation.

Desde hoy está disponible el CTP de SQL Azure Reporting y SQL Azure Data Sync. El CTP de Reporting permite ejecutar reportes de SSRS desde la nube SQL Azure. El CTP de Data Sync (que es el CTP final) permite sincronizar fácilmente datos entre una instancia local y una de Azure o desde una instancia Azure a una instancia SQL en otro proveedor en la nube.

Espero que estén tan emocionados como yo lo estoy, algunas de estas características se ven muy, muy entretenidas.

Notas desde el Keynote de SQL PASS

Este artículo es una traducción del Blog de Denny Cherry. A quien agradezco la autorización para traducir su contenido al español.

Hoy fue el primer día del SQL Server PASS Summit. Hubo algunos anuncios que posiblemente no vieron en el stream y que debieran saber.

Durante la parte de PASS del Keynote supimos de la gran cantidad de entrenamiento que SQL PASS entrega a la comunidad. PASS lleva cerca de 430.000 horas de entrenamiento entregadas a sus miembros. Ese número subirá exponencialmente durante los próximos 3 días gracias a las sesiones en el PASS Summit.

Durante el Keynote, había gran expectativa acera del libro “SQL MVP Deep Dives” que fue oficialmente lanzado en el PASS Summit. Este libro, en caso que no lo sepan fue escrito por 55 SQL Server MVP y todas las ganancias irán a Operation Smile.

El primer anuncio, y posiblemente el más importante, fue el nombre oficial de SQL Server “Denali”. Será SQL Server 2012 y se lanzará el primer semestre de 2012. Este anuncio, así como el resto del Keynote, fueron hechos por Ted Kummert Senior VP de la Plataforma de Negocios de SQL Server en Microsoft.

Ted habló bastante sobre la nube Azure, lo cual es un gran cambio de las instalaciones “on premise” que Microsoft ha ofrecido por los últimos 20 años. La razón de esto es que muchos clientes ya están llevando sus datos a Azure. Pero no se preocupen, esto no significa que se acabaron las instalaciones “on site”. Microsoft está trabajando arduo en nuevas características que vendrán en las próximas versiones de SQL Server, el producto que conocemos y amamos. Azure simplemente nos da una opción adicional aparte de construir y ejecutar sistemas “on site”, así podemos ser más flexibles y además no preocuparnos acerca del Hardware y actualizaciones; de eso se encargan en la nube.

Si han usado “Project Crescent”, su nombre oficial es “Power View” (Me pidieron que dejara claro que HAY un espacio en el nombre). Además, dieron algunas pistas de que otras herramientas para BI se verán en SQL Azure el 2012. De qué tipo serán, es otra pregunta; pero serán interesantes de ver.

Ted también habló específicamente de grandes volúmenes de datos y algunas direcciones hacia donde la gente se mueve con estos volúmenes de datos. Las empresas hoy no “botan” sus datos, y algunas veces esos datos son no-estructurados y esa es la mejor forma de usarlos. Microsoft apuntará a este mercado con la plataforma de cómputo distribuido, esto significa que Microsoft soportará Hadoop como parte de su plataforma de datos. Esto significa que podremos ejecutar Hadoop en Windows y en Azure.

Desde la semana pasada, tenemos disponible el conector Apache Hadoop para SQL Server y para la plataforma PDW. Versiones futuras incluirán la distribución de Hadoop que mencioné más arriba así como el driver ODBC y el add-in para Excel para hacer más fácil a los usuarios obtener datos desde Hadoop hacia sus plataformas de negocio. Creo que es un avance importante porque permite el almacenamiento de datos en plataformas distintas a las que están acostumbrados en sus plataformas de bases de datos tradicionales. Microsoft tendrá una versión CTP de su plataforma Hadoop en SQL Azure antes del fin del 2011.

Microsoft anunció “Data Explorer” el cual permite a los usuarios hacer Self Service BI sin darse cuenta de que lo están haciendo. Esto permite que los usuarios vean y lean fácilmente los datos, y más importante aún tomar los datos y transformarlos en información que pueden usar para manejar la empresa más rápida y fácilmente. No los voy a aburrir con información sobre la demostración, porque apestaba. Con eso perdieron bastante de la audiencia en un par de minutos.

No olviden revisar mañana con más anuncios desde Microsoft en el Keynote de mañana.

Posiblemente la Nube no será una buena solución de respaldo

Este artículo es una traducción del Blog de Denny Cherry. A quien agradezco la autorización para traducir su contenido al español.

El 19 de julio, encontré un artículo en un blog que hablaba acerca de la posibilidad de desechar una solución de respaldo y usar la nube en reemplazo. Básicamente, los puntos eran que como alguien mas almacena tus datos, ya no tendrías que preocuparte de planes de recuperación de desastres, mantener múltiples copias, etc. porque alguien mas se preocuparía de esas cosas ahora.

En el papel esto suena genial, pero yo trabajo en el mundo real. Y en el mundo real, como administrador no puedo confiar en que alguien mas maneje mi solución de recuperación de desastres. Cuando las cosas se rompen y perdemos todo y tenemos que restaurar, como administrador yo soy el que esta amarrado con la gerencia a levantar todo y volver a echar a andar la compañía, y no a quien quiera que yo le haya tercerizado los respaldos.

Cuando se trata de mis respaldos (y básicamente de todos los datos) no confío en nadie. Si se los envío a un proveedor en la nube como se que nadie va a intentar revisarlos, modificarlos, venderlos, etc? Si yo no controlo todo de punta a punta, no puedo estar seguro de que mis datos están seguros. Puedo cifrarlos antes de subirlos a la nube, pero eso solo me da cierto nivel de protección. El cifrado puede romperse, solo se requiere tener suficientes equipos destinados a hacerlo.

Existe otro pequeño problema con el usar la nube para respaldar. Las grandes empresas (y las pequeñas también) tienen grandes cantidades de datos, y quiero decir GRANDES cantidades. En estos días, no es extraño que una empresa de unas 10 – 20 personas tenga un par de Terabytes de datos. Si todos esos datos se respaldaran a la nube periódicamente, se necesitaría mucho ancho de banda para poder realizar esos respaldos en un tiempo prudente. El ancho de banda no es gratis, no lo es en Estados Unidos y menos en otros países. Muchos países tienen topes de ancho de banda para subida y debes pagar si lo sobrepasas. Si tienes que subir 100 Gigas de datos a la semana (un 10% de cambio en los datos es bastante normal) podría demorar unas 10 – 12 horas en subirse con una conexión rápida, y costar varios cientos de dólares en cargos de banda ancha.

Ejecutar tus aplicaciones en la nube es algo totalmente distinto. Cuando haces esto, tienes el control de la instalación y puedes controlar en cuantos sitios residen tus datos. Las soluciones de respaldo en la nube que he revisado no tienen este nivel de control. Simplemente tienes que confiar en que la empresa a la que le estás pagando esté haciendo las cosas bien. Después de todo, si almacenan los datos en un lugar cercano para acceso rápido ¿Que pasa si hay un corte de energía por un desastre natural y ellos sufren el mismo problema? ¿A quien llamamos? No puedes despedir a nadie porque el plan era dejar que ellos lo administraran. Y lo peor, no puedes levantar tus sitios porque debes esperar que ellos levanten el de ellos.

En mi mundo, esa no es una solución razonable.

Estar Preparados: Recolectar Datos desde sp_whoisactive a una tabla

Este artículo es una traducción de uno publicado por Kendra Little en su blog. Le agradezco su autorización y si les gusta, los agradecimientos deben ir a ella. / This post was translated from Kendra Little’s blog. I wanna thank her for letting me use this and if you like this, comments and thanks should go to her.

Soy fan del Procedimiento Almacenado sp_whoisactive de Adam Machanic.

Una de las mejores cosas del sp_whoisactive es que es muy rápido al generar una tabla para recolectar los datos necesarios, luego se ejecuta el procedimiento en un ciclo con una cláusula de espera para recolectar regularmente los datos necesarios. Este uso está documentado (ver el artículo de Adam acá), pero he habado con mucha gente q no sabe cómo hacer esto o no tiene un script guardado.

¿Qué es sp_whoisactive?

Sp_whoisactive es un procedimiento escrito por Adam Machanic. Se puede encontrar acá: sp_whoisactiveV10

Que haremos hoy

Hágase un favor: Hoy prepárese para lo siguiente:

· Crear el procedimiento almacenado sp_whoisactive en una base de datos de usuario utilizada solo para administración (Ver artículo de Adam acá)

· Jugar con el script que les entrego más abajo y examinar los parámetros del procedimiento almacenado

· Guardar el script que crea una tabla para su versión preferida de sp_whoisactive, y luego ejecútela en ciclos para almacenar los datos.

¿Por qué haría esto?

Aunque se ejecuten herramientas de monitoreo, usar sp_whoisactive para revisar datos desde las DMVs (incluyendo query plans) puede ser muy valioso.

Cuando las cosas salen mal, terriblemente mal, sería bueno tener este script en reserva para recolectar datos sobre la actividad existente en la instancia SQL mientras uno se enfoca en el problema. Esto nos ayudara a resolver el problema lo más rápido posible, si revisamos periódicamente los datos que recolecta. Como los datos están guardados, podemos usarlos más adelante para explicar las causas del problema y prevenir que suceda otra vez.

Paso 1: crear la tabla @destino

Déjenme dejar esto claro nuevamente: esto no fue mi trabajo. No quiero tomarme el crédito, pero si quiero difundirlo.

Primero, creamos la tabla destino. Sp_whoisactive permite generar una tabla destino fácilmente. Acá hay una versión básica que incluye la fecha actual en el nombre de la tabla, así como tres flags para obtener información de las transacciones, query plans y block leaders.

DECLARE @destination_table VARCHAR(4000) ;
SET @destination_table = ‘WhoIsActive_’ + CONVERT(VARCHAR, GETDATE(), 112) ;

DECLARE @schema VARCHAR(4000) ;
EXEC sp_WhoIsActive
@get_transaction_info = 1,
@get_plans = 1,
@find_block_leaders = 1,
@RETURN_SCHEMA = 1,
@SCHEMA = @schema OUTPUT ;  

SET @schema = REPLACE(@schema, ‘<table_name>’, @destination_table) ;

PRINT @schema
EXEC(@schema) ;

Paso 2: Crear el ciclo para recolectar los datos.

Es necesario asegurarse de especificar los mismos parámetros para el sp_whoisactive en este ciclo, para que los datos de salida encajen en el schema para la tabla creada.

Este ejemplo corre 10 veces con un lapso de 5 segundos entre ejecuciones. Dependiendo de lo que se encuentre, los números se cambian a discreción.

DECLARE
@destination_table VARCHAR(4000) ,
@msg NVARCHAR(1000) ;

SET @destination_table = ‘WhoIsActive_’ + CONVERT(VARCHAR, GETDATE(), 112) ;

DECLARE @numberOfRuns INT ;
SET @numberOfRuns = 10 ;

WHILE @numberOfRuns > 0
BEGIN;
EXEC dbo.sp_WhoIsActive @get_transaction_info = 1, @get_plans = 1,
@find_block_leaders = 1, @DESTINATION_TABLE = @destination_table ;

SET @numberOfRuns = @numberOfRuns – 1 ;

IF @numberOfRuns > 0
BEGIN
SET @msg = CONVERT(CHAR(19), GETDATE(), 121) + ‘: ‘ +
‘Logged info. Waiting…’
RAISERROR(@msg,0,0) WITH nowait ;

WAITFOR DELAY ’00:00:05′
END
ELSE
BEGIN
SET @msg = CONVERT(CHAR(19), GETDATE(), 121) + ‘: ‘ + ‘Done.’
RAISERROR(@msg,0,0) WITH nowait ;
END

END ;

GO

Paso 3: Generar la consulta para revisar los resultados.

Este paso es opcional, pero como la tabla contiene en el nombre un Timestamp, me gusta tener a mano una consulta para revisar los resultados sin tener que copiar y pegar el nombre de la tabla. También prefiero poner la columna collection_time primero y ordenar según ella.

DECLARE @destination_table NVARCHAR(2000), @dSQL NVARCHAR(4000) ;
SET @destination_table = ‘WhoIsActive_’ + CONVERT(VARCHAR, GETDATE(), 112) ;
SET @dSQL = N’SELECT collection_time, * FROM dbo.’ +
QUOTENAME(@destination_table) + N’ order by 1 desc’ ;
print @dSQL
EXEC sp_executesql @dSQL

SQL Server 2008 R2 disponible para descarga

Estimados,

Desde hoy ya está disponible a suscriptores Technet y MSDN la versión final de SQL Server 2008 R2 y de PowerPivot. Esto se suma a la disponibilidad la semana pasada de SharePoint 2010 y Office 2010.

Para quienes no tienen suscripciones a Technet o MSDN, en un artículo de la semana pasada, esta el link para descargar las versiones de evaluación de SQL Server 2008 R2.

Saludos,