Imagen para determinar la altura de la cabecera

 

Untitled Page

Welcome to Solid Quality FanZone!


In our FanZone you can find the following resources:

-       Sessions that our mentors delivered at various conferences.

-       Articles discussing both technical issues and Solid Quality activities.

-       Blogs maintained by our mentors.

 


Since our mentors are based all around the world and speak various languages, we¹ve divided all these resources according to language. Please choose your preferred language by clicking the buttons above

 

 Last Blogs' Posts

Ken Spencer
3/17/2010 1:43 AM
Silverlight 4: RC Out

Hog dog. Now the RC bits of SL 4 are out! And blend 4 too.

I have been working with VS 2010 RC  and Blend and SL 4 bits for awhile and they totally rock.

Download this and get going now. They really rock. And Blend 4 is totally awesome.

Check out:

http://www.silverlight.net/


BICorner
3/11/2010 11:34 PM
Primer vistazo a Performance Point Services

 

Un paseo rápido por Performance Point Services buscando diferencias con la versión 2007

Desde el punto de vista de arquitectura el cambio es grande, no tanto si lo vemos desde el punto de vista de funcionalidad.

clip_image002

Diagrama de despliegue de arquitectura de Performance Point Services. Absolutamente integrado en SharePoint 2010.

Para llegar de forma rápida a lanzar Dashboard Designer me he creado un colección de sitos con la plantilla de Business Intelligence Center, lo que me permite disparar el instalador de Dashboard Designer por primera vez, aun estoy buscando el equivalente a la pagina central donde se podía hacer la distribución de Dashboard Designer y el acceso directo a la página de Preview, no localizo el sitio de Preview, seguirá existiendo?

clip_image004

Look & Feel  muy similares a la versión 2007, la Jerarquía de objetos de la solución también, los orígenes de datos permanecen, excepto AS 2000 y ODBC tal como se anuncia, echo de menos BW SAP 3.x (Fue un sueño que duró poco).

En la cinta home hay una opción nueva para importar elementos de un Dashboard existente, el nuevo formato del Dashboard ahora se almacena en extensión *.ddwx, he localizado bastante ayuda sobre como migrar soluciones y objetos existentes en PPS Monitoring 2007, pero no para las basadas en OWC 2003, lógico ya que estaban marcadas para morir…, tampoco veo el análisis de tendencia, pero si un “KPI details” que no conocía en los informes.

clip_image006

clip_image008

Al crear un nuevo Scorecard, tengo opción de ponerlo en distintas listas de SPS 2010

clip_image010

Por el resto de cosas por donde he pasado tiene un aspecto muy similar a como estaba, claro pero ahora embebido completamente en SPS2010 con todo lo que eso implica a nivel de seguridad y de control de versionado, de seguridad de acceso a orígenes de datos Etc.

Finalmente la opción de despliegue es muy parecida a la versión anterior.

clip_image012

Despliegue realizado y Dashboard listo para consumir desde Webparts.

También he visto algunos cambios en las propiedades de la columna del actual y target en el Scorecard

clip_image014

Las propiedades de conexión al servidor siguen en el mismo sitio, pero ahora ya sin posibilidad de gestionar los roles de seguridad de servidor, estos se han ido a SharePoint.

clip_image016

Seguiremos buscando novedades que contar.

Más información en:

http://technet.microsoft.com/es-es/library/ee661741(office.14).aspx


Daniel Seara
3/9/2010 10:15 AM
Amigo y colega, en TV se le ve….

Cuando el amigo Guille aparece por el mundo…


El rincón del DBA
2/26/2010 2:14 PM
Table Storage y SQL Azure: Anticipo del Pre-Summit 2010

 

Como anticipo del Pre-Summit 2010 que haremos en 23 y 24 de marzo (más información aquí: https://learning.solidq.com/ib/CourseDetail.aspx?CourseScheduleId=356), os presentamos funcionalidades claves relacionadas con el acceso a datos: Table Storage y SQL Azure de la plataforma Azure.

 

Arquitectura de la aplicación GuestBook.

mms://solidq.com/azure/Azure_0_Storage_vs_SQL.wmv

Introducción a la arquitectura de la aplicación GuestBook del kit de Azure; necesario para comprender el ciclo de la siguiente demostración.

Funcionamiento de la aplicación GuestBook.

mms://solidq.com/azure/Azure_1_usuario_guestbook.wmv

Explicación de funcionamiento de la aplicación Guestbook a nivel de usuario que consume la aplicación. Nada de código de aplicación: solamente información de despliegue, rutas, y funcionamiento. También se muestra como se integra la aplicación con la web pública de Solid Quality.

Funcionamiento de la aplicación GuestBook.

mms://solidq.com/azure/Azure_2_demo_guestbook.wmv

Código de la aplicación: cómo se gestionan Table Storage, Queues y Blobs usando la aplicación de ejemplo.

Integración de SSMS con SQL Azure.

mms://solidq.com/azure/Azure_4_SSMS.wmv

Integración de SQL Server Management Studio con SQL Azure; demostración de cómo habilitar firewalls, configurar conexiones y acceder a las bases de datos de SQL Azure.

Rendimiento de TPCC-personalizado en SQL Azure.

mms://solidq.com/azure/Azure_5_tpcc_personal.wmv

Demostración del rendimiento obtenido con la aplicación personal que hemos desarrollado para simular el comportamiento de las pruebas de TPCC. El reto de la integración fue adaptar la aplicación de consola para funcionar como aplicación web y por otro lado modificar ciertas construcciones del lenguaje TSQL para que fuera compatible con el lenguaje soportado por SQL Azure.


Antonio Soto
2/19/2010 9:53 PM
Master Data Services I

 

Tras la adquisición de Strature en Junio 2007, han sido muchos los rumores acerca de cómo se iba a integrar su tecnología de Master Data Management dentro del Roadmap de productos Microsoft. Al final, se decidió que formase parte de SQL Server 2008 R2, con el nombre de Master Data Services. Además de mantener todas las características del producto, se han hecho esfuerzos por integrarlo dentro de la plataforma Microsoft, creando interfaces compatibles con Windows Communication Foundation, integrando toda la seguridad necesaria y optimizando código y bases de datos.

Master Data Management

Existe mucha confusión sobre lo que realmente significa Master Data Management. No se trata de un proyecto de Business Intelligence o DataWarehousing, no se trata de un proyecto de integración o consolidación de datos ni es un proyecto que pretende centralizar toda la información dentro de la organización. ¿Qué es entonces el Master Data Management? Podríamos definirlo como "El conjunto de procesos, aplicaciones y tecnologías que nos permiten administrar los sistemas de registro y entrada para los datos y metadatos de las entidades claves del negocio". Uno de los puntos clave de una solución de este estilo, radica en el hecho de que debemos de seleccionar cuales son las entidades de negocio clave para nuestra organización, y que serán susceptibles de implementarse dentro de la arquitectura Master Data Management. De este modo, una solución de Master Data Management nos ayudará a resolver básicamente cuatro problemas:

  • Redundancia de Datos. Sin una solución de Master Data Management, tendremos diferentes aplicaciones que manejen diferentes versiones de datos clave para nuestro negocio, como clientes o productos.
  • Inconsistencia de Datos. Debido a la naturaleza de las entidades clave, es habitual que sean procesadas por diferentes aplicaciones, en diferentes orígenes de datos.
  • Ineficiencia de Negocio. La duplicidad e inconsistencia de datos trae consigo la duplicidad de procesos de negocio, y la necesidad de implementar otros procesos especiales para consolidar los datos y tomar decisiones.
  • Cambios del Negocio. El entorno cambiante que nos ha tocado vivir, hace que las organizaciones están continuamente evolucionando, introduciendo nuevos productos o servicios, fusionándose e implementando nuevas tecnologías. Se hace por lo tanto necesario tener un control de estos procesos sobre los datos clave.

Master Data Services

 

Como se comentaba anteriormente, SQL Server 2008 R2 incluirá la primera versión de Master Data Services, la propuesta de Microsoft para las soluciones de Master Data Management. Estos Master Data Services (MDS) constan de los siguientes componentes:

  • Master Data Services Configuration Manager, que es la herramienta de configuración del servicio desde la que se pueden crear las bases de datos y las aplicaciones web necesarias.
  • Master Data Services Database. Es el almacén central de MDS, en el que se almacena la configuración, las tablas intermedias o las vistas de suscripción.
  • Master Data Services Web Application. Es la aplicación web que puede albergar a su vez dos componentes:
    • MDS WCF API. Es el interfaz de comunicación de MDS con las aplicaciones externas que consumen los datos maestros
    • Master Data Manager. Es la herramienta de administración de MDS, desde la que se crearán los modelos, entidades, atributos, reglas de negocio, etc.

Como se puede observar, todos los componentes están basados en tecnologías Microsoft conocidas, tales como bases de datos SQL Server o Aplicaciones Web albergadas en IIS.

Los mentores de Solid Quality son los autores de la mayoría de los artículos de SQL Server Magazine; imparten regularmente cientos de ponencias al año en conferencias alrededor del mundo; han diseñado los cursos oficiales de SQL Server; escrito casi un centenar de libros; son la mayor comunidad de Microsoft MVPs del mundo con más de medio centenar de mentores que ostentan este prestigioso premio en la actualidad; y, lo que es más importante, han ayudado a empresas de todo el mundo a utilizar del modo más eficiente las tecnologías de Microsoft para lograr mejorar tremendamente sus sistemas de información. Escríbenos a lainfo@solidq.com para conocer cómo podemos ayudar a tu compañía a sacar el máximo de provecho de su inversión en la plataforma de datos de Microsoft.


Douglas McDowell
1/14/2010 1:29 AM
2010 Resolution: "To Blog"
Yes, it is 2010… to some it could not come soon enough, to others it is already here.  Every time you write the date do you have to scribble through “09” and replace it with a “10?”  Well, last week was the week to start keeping our New Year’s resolutions. And frankly I am not that big on New Year’s resolutions, I like the concept usually make a few resolutions on my birthday each year, but I just never have been one to participate each New Year.  But this year I have a resolution… To Blog.
 
It is really a little embarrassing. I have been active in the SQL Server and Microsoft BI technical community for over 10 years, have been a user group leader and technical author for a majority of that time and I have managed to survive without ever having a blog.  Of course I have done the easy stuff: LinkedIn, FaceBook, Plaxo… I even tried Twitter twice.  Amazingly these days I author hundreds of emails each week, many of them displaying immense forethought and possessing great readability… but for some reason I am not capturing those types of communication for a wider audience in the form of a blog.
 
Call me inspired or challenged, but one of my colleagues on the PASS Board of Directors is Andy Warren.  Andy is a prolific blogger and I enjoyed and appreciated his commentaries featured in the PASS Community Connector throughout 2009.  Andy is a tireless contributor to the technical community and when it comes to PASS and serving the community he is a strong advocate of transparency.  There is always lots of debate around how much transparency is desirable, but better overall communication is never a bad thing and the core of transparency is communication.  This year I am the PASS Director of Chapters and I have an increased responsibility for communication.  Those of you that know me know that I am very big on communication in general, I like to get on the phone with chapter leaders and community members, I like newsletters and discussion groups… but not all of those are scalable, accessible or durable.  So I will add blogging to my quiver…  I look forward to interacting with you more through this venue in 2010.

La Cueva de Desarrollo y Colaboración
12/11/2009 6:08 PM
Personalizar estilos en SharePoint 2010

Después de haber perdido algo de tiempo buscando como personalizar estilos en MOSS 2010, decidí ponerme a leer el coreV4.css y ver que es lo que tenemos por ahí.

Cuando digo “crear estilos personalizados” me refiero a esos estilos que vienen en el Ribbon cuando nos ponemos a editar texto en una página:

styles

 

En SharePoint 2007 se podían asociar al elemento RichHTLMField de esta forma: http://www.sharepointconfig.com/2007/05/customising-the-richhtmlfield-styles-menu/

 

Ahora en MOSS 2010 para mi gusto lo han mejorado porque estos estilos personalizados no van asociados a un elemento, sino a todos, es decir, que si definimos un estilo en nuestra página css estará disponible para todos los contenedores de texto de nuestro sitio.

Para definir un estilo basta con crearse una clase css con este formato:

.ms-rteStyle-Solid-Normal
{
    -ms-name:"Solid Normal";
    font-family: Arial, Segoe UI, Verdana, sans-serif;
    font-size: 10pt;
    color:black;   
    font-weight:normal;
}

.

- Es muy importante que el inicio de la clase sea “.ms-rteStyle” y luego lo demás ya como queramos, porque de lo contrario no aparecerá en la pestaña de estilos.

- También es importante la etiqueta –ms-name ya que ese nombre es el que se mostrará en el combo para elegirlo.

Si echamos un vistazo en el fichero corev4.css también vemos que existen otros estilos personalizados para componentes como DIVS, TABLAS, H1, H2, etc…:

DIV.ms-rteElement-Callout1
{
-ms-name:"Callout 1";
color:660000;
background-color:#fef4e4;
float:left;
width:25em;
padding:10px;
border:1px solid #FD9F08;
}

 

También podemos crearnos estilos personalizados para estos, pero recordad, siempre respetando el inicio de la clase “.ms-rteElement”, etc…

 

Y esto es todo!

 

Saludos!


Brian Moran
10/14/2009 8:29 PM
What's worse than spending 6 or 7 figures on a SAN that doesn't meet your need?
Being the person in your company who makes the recommendation to buy that really big heather for your server room. :)
 
Not a great move for your carerr. Do your homework. Educate yourself. Don't be afraid to tell your boss that you need more time to make the decision. Even more important, don't be afraid to tell your boss that you need a brilliant, but super expesive SQL expert to help yuo make the right decision. I can help you find someone like that if you want. :)
 

BiztalkCorner
7/27/2009 11:48 AM
Bem Vindo ao Blog do Guilaz

Olá Pessoal, bem vindo ao blog de Guilherme Azevedo, o Guilaz. Aqui você vai encontrar bastante material sobre SQL Server e principalmente sobre Biztalk Server. Sou consultor há algum tempo nestas tecnologias e durante este período acumulei recursos e conhecimentos que procuro compartilhar com vocês agora. Espero que aproveitem, curtam e utilizem o material.

 

Qualquer dúvida, sugestão, reclamação... enfim, enviem e-mail para gazevedo@solidq.com


El blog de Fernando G. Guerrero
4/30/2009 6:29 PM
El Profesor Manuel Chueca Pazos: un excelente mentor de mentores

Estaba buscando algo por Internet, cuando me encontré con una vieja noticia, del año 2006, pero completamente nueva para mí: El ingeniero cartográfico Manuel Chueca ingresa en la Real Acadèmia de Cultura Valenciana (http://www.lasprovincias.es/valencia/prensa/20061024/cultura/ingeniero-cartografico-manuel-chueca_20061024.html)

Mucho de lo que soy, mucho de mis principios vitales, de mi ética de trabajo y social, se debe a este gran ser humano. Aunque fui formalmente alumno suyo durante un curso académico, tuve el privilegio de trabajar en su departamento durante 6 años, durante los cuales aprendí lo que está y lo que no está escrito.

En tiempos en los que, quizá debido a mi juventud e impaciencia por volar independientemente, no encontraba el camino adecuado, en una encrucijada de caminos muy importante para mí, me ofreció una oportunidad que cambiaría mi vida para siempre.

Este hombre de inmensa cultura, y de asombrosa capacidad didáctica, ha sido un luchador imparable durante toda su vida. Con una inspiradora capacidad para fijarse objetivos imposibles, y lograrlos ante el asombro de todos.

Pero lo que más valoro en él es su capacidad para inyectar capacidad de superación en la gente que le rodea. Donde uno se ve impartiendo rutinariamente clases de prácticas, el veía un aclamado catedrático. Al que se ve ingeniero, él le ve como Doctor. Donde hay un par de despachos con unos pocos aparatos topográficos, el veía una Escuela de Ingeniería Cartográfica. Y el caso es que en la mayoría de estos casos, acertó de pleno.

No es fácil propagar ese espíritu de superación entre gente muy heterogénea, y menos aún en empleados de un organismo público, con tendencia a sentirse funcionarios, sin más ilusión que esperar tranquilamente la jubilación. Sin embargo, siempre supo involucrar a todos en una dinámica más propia de una empresa privada que la de un organismo público.

Por otro lado, siempre supo estar detrás de su gente, apoyándola sin excusas, dándoles la mano en los momentos malos, y sirviendo como parapeto de defensa ante ataques externos.

Con él aprendí a detectar talento temprano en la gente que me rodea, a confiar en sus criterios, a defenderles sin reservas, a ayudarles a descubrir su potencial futuro. Con él aprendí a fijarme metas difíciles, a creer en ellas y hacer todo lo posible por conseguirlas. Con él aprendí que nadie regala nada, y que hay que trabajar muy duro para conseguir lo que quieres.

Él creyó en mí cuando nadie más creía, soportó y sufrió mis errores, y me apoyó en la adversidad.

Ahora me llena de orgullo el ver que le han honrado con esta nueva distinción. Espero que podamos disfrutar muchos años de su lúcida mente y de su inmenso valor humano.

 


Dejan Sarka
3/10/2009 8:05 AM
Inside Microsoft SQL Server 2008: T-SQL Querying RTM

The book Inside Microsoft SQL Server 2008: T-SQL Querying RTM'd a few days ago. :-) The main author is Itzik Ben-Gan, and coauthors involved in the book besides myself are Steve Kass and Lubor Kollar. Steve Kass was also the main Technical Editor of the
book, and Umachandar Jayachandran helped by editing a couple of chapters. César Galindo-Legaria wrote the foreword.

The book is being printed these days and should be on the shelves in a matter of a few weeks. Info on the book can be found in the following website: www.InsideTSQL.com.


Javier Loría
1/28/2009 8:31 PM
Visita a Teotihuacán

La gente de Datavisión (partner de Microsoft con experticia en SQL) tuvo la gentileza de llevarme a Teotihuacán el pasado 10 de enero. Teotihuacán es uno de los lugares arqueológicos más importantes de América y lugar de visita obligatoria cuando se está en México. Durante esta visita finalmente pude cumplir mi sueño de subir tanto la pirámide del sol como la de la luna. Antes había estado en Teotihuacán pero siempre subía primero la pirámide del sol, y me quedaba sin fuerzas para subir la pirámide de la luna. Esta vez la hice a la inversa, y con duras penas, pero llegue.

En orden acostumbrado: Héctor Eugenio Jiménez, Javier Loria, Miguel Angel Granados y Jesús Gil Velasco.

Subiendo la pirámide de la Luna

Pirámide del Sol, vista desde la pirámide de la Luna

Arriba, en la pirámide del Sol.

Pirámide de la Luna vista desde la pirámide del Sol

 

 


Aaron Johal
10/25/2008 3:50 PM
Come meet some of our mentors at TechEd Barcelona

Have you ever gone to learn from a presentation, communicate at an ask the experts session or explored an environment through a hands on lab and felt that a little input from you could have turned the information provided into more contextual knowledge for you?

Have you ever felt too intimidated to ask the important question in front of a large crowd?

Well this year Solid Quality Mentors are offering you the chance to schedule a consultancy session with their mentors about anything that you intend to learn, communicate about or explore during the conference. Being Solid Quality Mentors this means that you can ask about just about anything SQL Server that you would like to find out more about.

Just pop over to our stand and book an available session that suits you, for a relaxed chat with one of our mentors present at TechEd.

Come and communicate with us, we can help you explore what you need and learn from what we know.

Look out for our mentors in the Exhibition Hall, B14 the first week and B21 the second week.

Look out for our mentors at ask the expert sessions.

Look out for our mentor' presentation sessions including :-

Maciej Pilecki: Where Is My Memory? Understanding Microsoft SQL Server Memory Usage and Management

 

SQL Server, like any other database, can be very memory-intensive but how is all that memory used. Is it just the data that is cached? What other objects can be chached to make the system more efficient? This session goes deep under the covers of SQL OS to see how SQL Server manages its memory. We will look at the dynamics of memory usage within SQL Server and the competition between different cache types. Special attention will be afforded to the procedure cache and how it is utilised. We will also examine how SQL OS interacts with the host operating system and other applications running on the same machine. After this session you will have a good understanding about the SQL Server memory architecture and how to optimise SQL Server by configuring memory usage optimally. You will also learn how to diagnose and troubleshoot memory related issues.

 

Greg Low: Answering the Queries your users really want to

ask, with Full-Text Search in SQL Server 2008

 

Business users today are less prepared to be constrained by technology than they may have been in the past. They don't want to hear that you cannot search on such and such because it is not in the right field or that it has not been isolated from other elements so it cannot be retrieved fast enough or will have a negative impact on other users. The full-text search capabilities in SQL Server 2008 will give you the power to deal with these loosely constrained queries.

 

This session will familiarise you with the full-text search subsystem. It will show you why it is important, what can be done with it and how to implement and manage it.

 

The subsystem is not new but it has been optimised for delivery within the latest version of SQL Server. The benefits will be communicated during the session as will issues that you may experience if you are upgrading a previous version of the subsystem.

 

Whether you are new to FullText search or you have tried it previously and were frustrated by the limitations of the earlier version, you will gain a full appreciation of why you should be considering it as a new flexible way of meeting your business users needs.

 

Greg Low: Using Dynamic Management Views To Improve Your Development

 

Although Dynamic Management Views have been available as objects in previous releases of SQL Server, they have been extended and made much more Functional in SQL Server 2008. However, it appears that the majority of developers have tended to ignore the fact that they are available.

 

In this session you will be introduced to these management object types, both views and functions, and aquainted with those that are considered most useful to the developer. You will learn how they can be valuable when monitoring and troubleshooting as well as general management of SQL Server, hands up if you have worked on a project without a DBA!. 

 

As well as showing you how you as a developer can benefit from these objects, you will also learn how you can help your team, those that perhaps don't manage to make it to TechEd. To this end you will learn how these objects can be used to develop customised reports which can be run from inside SQL Server Management Studio.

 

Greg Low: Avoiding Stored Procedure Recompiles in SQL Server 2008

 

In this session, Greg will describe the process by which SQL Server executes stored procedures and how it decides whether or not recompilations are necessary. He will discuss how to monitor recompilations and explain in detail the specific triggers that cause recompilation. Greg will then discuss techniques to be used when writing database code to help avoid the need for recompilations and to help keep systems performing well.

 

By the way, we will be giving away copies of Itzik Ben-Gan’s latest book, http://www.sql.co.il/books/tsqlfund2008/, to some of the lucky visitors to our booth within the exhibition hall..


Gustavo Larriera (aka Gux)
9/23/2008 2:09 PM
Bases de datos de ejemplo para SQL Server 2008

Las bases de datos de ejemplo AdventureWorks, en sus distintos sabores, están disponibles para descargar en el sitio Codeplex. Las bases de ejemplo Pubs y Northwind clásicas también pueden usarse en SQL Server 2008, para descargarlas ir al sitio de descargas de Microsoft en este otro link.

Recomiendo tener a mano la base Pubs pues ocupa poco lugar, es simple de entender y además mucha documentación de SQL Server (incluyendo libros y artículos famosos) ejemplifica usando dicha base.


Fernando G. Guerrero's blog
9/8/2008 1:27 PM
Crisis? Recession? Spending wisely to win against the global crisis

Do we or don’t we have a recession? Our politicians are debating largely about this topic since a year ago. In fact, it is interesting to know that the official technical determination of the term “recession” is different in Europe and the USA.

Are we living challenging times? No question about it. However, we see this time as an opportunity time as well. Excellent companies are going to survive this crisis (or recession, if you prefer this term), and they are becoming stronger and stronger. At the same time, weaker companies disappear, leaving market opportunities to the stronger ones, which in turn will make them even stronger.

This is the time to wisely invest in knowledge, analyzing processes, optimizing resources, and preparing each company to be ready by the time the market will get back on track again.

I already passed through this process before. International economy is a recurring wave that makes us going up and down every few years. And I’ve always seen the same type of companies survive and get stronger and the other type of companies disappear.

Is it the time of investing in training? Absolutely! Many of our customers understand that. Training gives them a technical edge that places them beyond the competition. Training encourages their employees to move forward technically, being more productive to their companies, and improving their own professional value (earning a personal market advantage as well).

Is it time to cut staff cost? Is it time to reduce the total cost of the tasks that our technical staff needs to perform? Well, I could not say that this would be the time to increase these costs, while companies are fighting for survival. However, cutting the total cost per task, and the total cost per project, does not mean cutting the hourly rate you pay for these services. Cutting the total cost per project means finishing the project with the minimum cost, using wisely all available resources, achieving or exceeding the expected and contractual quality level.

We see many times that employing the best available professionals, who typically charge the highest rates, results in shorter delivery times, higher quality, and higher benefits overall. Even more, adding just a handful of key professionals (in many cases just one is enough) to a project, can represent the difference between success or failure, between profitability or disaster.  

Because spending wisely just an extra 3%, might represent in many cases the chance to cut down the total cost in more than 20%. And that 20% might be the difference between success or failure of a project, which might mean the difference between life or death of a company, a division or department, in these challenging times.

Remembering the legendary Supertramp title… Crisis, What Crisis?


Erik Veerman
7/14/2008 3:46 PM
Virtual Conference and other happenings...

Here's a quick update on happenings!  I have some great things coming down the pipe for me and also its been a busy 12 months!  But yes, blogging hasn't been my forte, but it's not for a lack of interest.  I hope to catch up a little in the next few months.

 

Looking to the future

  • Check out the SSWUG Business Intelligence Virtual Conference… http://www.vconferenceonline.com/business-intelligence/speakers.asp It looks to be a *great* conference and is September 24-26.  I’m presenting 3 sessions on Designing, Architecting, and Tuning your BI solution.  Don’t miss out!
  • Our new WROX SSIS 2008 Pro book is finished! (http://www.amazon.com/Professional-Microsoft-Server-Integration-Services/dp/0470247959/ref=sr_1_2?ie=UTF8&s=books&qid=1216041624&sr=8-2) Expect it to be on the shelves in a couple months.  We’ve added a lot of great stuff in there… I wrote the Data Warehouse ETL chapter plus there is a new chapter on leveraging the SQL 2008 RDBMS with SSIS that Grant Dickinson from MS authored.
  • We (Solid Quality) has a new seminar series called SQL Directions… it’s like a pre-conference seminars, deep-dive, lots of material without labs.  I am doing a SQL Server 2008 BI seminar in Atlanta from Oct 1-2, http://learning.solidq.com/na/CourseDetail.aspx?CourseScheduleId=302. It’s a lot cheaper and less time than a class. 
  • PASS this year looks to be very exciting, and they are expecting 3000 people!  I was accepted as a pre-conference speaker and will be presenting on Designing, planning, and Tuning a BI solution, http://summit2008.sqlpass.org/precon-erik-veerman.html I’m really looking forward to this and I have some great content to share about overall BI solution architecture.
  • A new Training Kit is in process!  This is the SQL 2008 BI Implementation TK and we just started.  It’s for the 70-448 Exam and we are building upon the TK 70 445 material… as the lead author, I’ve made a lot of decisions on the chapter content and layout to make this TK better for anyone planning on using SQL 2008 BI.  No links yet, but I’ll keep you posted!

 

What I have been doing the last few months?

  • Well, for starters, my wife and I welcomed a new baby into the family in Feb (Caleb James Veerman).  He’s our 4th kid! It’s a little chaotic around the house, as you can imagine.
  • I did a series of SQL Mag road-shows in May… on high-performance BI.  In fact, one week, I was in NYC on Monday, LA on Tuesday, Chicago on Wednesday, and Boston on Thursday.  Look for some future ones this fall!
  • TK 70-445 was released last fall… http://www.amazon.com/MCTS-Self-Paced-Training-Exam-70-445/dp/0735623414/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1216041624&sr=8-1 I was the lead author for the book…  this one really stretched me and boy what a relief it was to get it out the door.
  • Also, if you’ve read some of my earlier posts, I did some ground breaking work with the Many to Many relationships in SSAS and co-authored a White Paper with the SQL CAT team on how to optimize them.  Check out the paper here: http://sqlcat.com/whitepapers/archive/2008/05/03/analysis-services-many-to-many-dimensions-query-performance-optimization-techniques.aspx
  • Wow, last fall was full of conferences… SQL PASS, SQL Connections, and a series of SQL Mag road-shows on Project REAL.
  • Of course, project work and classes.  I’ve taught probably 8 classes in the last 8 months and have been working with a client in Atlanta implement SQL 2005 BI… they love it!  I always hear comments like “Wow, we’ve never had access to data like this before”

I’ve got some more things in the pipeline that I can’t share yet, but stay tuned!

 

Erik

...on practical BI


Randy Dyess
3/13/2008 6:48 AM
SQL Server 2008 Introduces Filtered Indexes

I have been playing around with the latest SQL Server 2008 CTP while trying to keep both my performance tuning and DBA classes updated with the latest changes. When I review new releases of SQL Server, I tend to evaluate the release by determining which features and functionalities that will help me solve problems that I could not solve or could not solve easily in earlier releases.

 

One of the problems that did not have easy solutions in earlier versions was the one faced when dealing with large amounts of data. Many times I have incorporated many different strategies to lessen the impact of large amounts of data on queries by trying to lessen the amount of data contained within the indexes on a table. This often involved partitioning the tables in SQL Server 2005 or archiving data in earlier versions. Any method that worked to create a smaller set of active data to be queried during each SELECT statement and a smaller index to be maintained during data modifications.

 

One of the great new performance improvements in SQL Server 2008 is the new filtered index. Filtered indexes basically allow you to create a filter on an index – think WHERE clause. The index B-Tree will only contain the rows of data that meet the filtering criteria. This allows you to reduce the amount of data contained in an index which means that you are also reducing the data affected in an index by data modifications.

 

I am going to walk through a very small and simple demo that illustrates the impact of filtered indexes.

 

First let’s create a demo table with some demo data

 

SET NOCOUNT ON

 

--Create demo table

IF OBJECT_ID('TestTable','table') IS NOT NULL

DROP TABLE TestTable

GO

 

--Create demo table

CREATE TABLE TestTable

(colID INT IDENTITY(1,1)

,colDate DATETIME

,colSession INT

,colDesc VARCHAR(100)

)

 

--Insert data into table

DECLARE @loop INT

SET @loop = 1000

 

WHILE @loop > 0

BEGIN

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070301',1,'20070301-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070401',1,'20070401-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070501',1,'20070501-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070601',1,'20070601-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070701',1,'20070701-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070801',1,'20070801-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070901',1,'20070901-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20071001',1,'20071001-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20071101',1,'20071101-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20071201',1,'20071201-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20080101',1,'20080101-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20080201',1,'20080201-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20080301',1,'20080301-1' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070301',2,'20070301-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070401',2,'20070401-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070501',2,'20070501-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070601',2,'20070601-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070701',2,'20070701-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070801',2,'20070801-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070901',2,'20070901-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20071001',2,'20071001-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20071101',2,'20071101-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20071201',2,'20071201-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20080101',2,'20080101-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20080201',2,'20080201-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20080301',2,'20080301-2' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070301',3,'20070301-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070401',3,'20070401-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070501',3,'20070501-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070601',3,'20070601-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070701',3,'20070701-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070801',3,'20070801-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20070901',3,'20070901-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20071001',3,'20071001-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20071101',3,'20071101-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20071201',3,'20071201-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20080101',3,'20080101-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20080201',3,'20080201-3' )

      INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20080301',3,'20080301-3' )

 

      SET @loop = @loop - 1

END

 

Next we will create a clustered Index and a non-filtered nonclustered index

 

--Create clustered index on table

CREATE CLUSTERED INDEX cl_TestTable_1 ON TestTable(colID)

 

--Create nonclustered index on table

CREATE NONCLUSTERED INDEX ncl_TestTable_1 ON TestTable(colDate) INCLUDE (colSession)

 

After creating the indexes, let’s take a look at the number of rows in the indexes

 

--View number of rows in indexes

SELECT name, i.index_id, [rows]

FROM sys.partitions p

INNER JOIN sys.indexes i

ON p.[object_id] = i.[object_id]

AND p.index_id = i.index_id

WHERE p.[object_id] = OBJECT_ID('TestTable')

 

You should get an output similar to the one below

/*

name              index_id    rows

cl_TestTable_1    1           39000

ncl_TestTable_1   2           39000

*/

 

Now let’s create a filtered index and look at the number of rows of data

 

--Create filtered index

CREATE NONCLUSTERED INDEX ncl_TestTable_2 ON TestTable(colDate) INCLUDE (colSession)

WHERE colDate > '12/31/2007 23:59:59'

 

--View number of rows in indexes

SELECT name, i.index_id, [rows]

FROM sys.partitions p

INNER JOIN sys.indexes i

ON p.[object_id] = i.[object_id]

AND p.index_id = i.index_id

WHERE p.[object_id] = OBJECT_ID('TestTable')

 

You should get an output similar to the one below

/*

name              index_id    rows

cl_TestTable_1    1           39000

ncl_TestTable_1   2           39000

ncl_TestTable_2   3           9000

*/

 

Once we are done with creating the infrastructure, let’s look at how they affect performance.

 

--How does a filter index help SELECTS

--Clear cache for demo

CHECKPOINT

DBCC DROPCLEANBUFFERS

 

--Get execution plan and IO statistics

SET STATISTICS PROFILE ON

SET STATISTICS IO ON

 

--Select by date

--This has a bookmark lookup

SELECT * FROM TestTable WITH (INDEX = 2) WHERE colDate > '12/31/2007 23:59:59'

--Table 'TestTable'. Scan count 1, logical reads 19692

--TotalSubtreeCost: 2.11023

 

--Use filtered index

--This has a bookmark lookup

SELECT * FROM TestTable WITH (INDEX = 3) WHERE colDate > '12/31/2007 23:59:59'

--Table 'TestTable'. Scan count 1, logical reads 18598

-- TotalSubtreeCost: 2.096156

 

--Select by date

--This does not have a bookmark lookup

SELECT colID, colDate, colSession FROM TestTable WITH (INDEX = 2) WHERE colDate > '12/31/2007 23:59:59'

--Table 'TestTable'. Scan count 1, logical reads 27

-- TotalSubtreeCost: 0.03095978

 

--Use filtered index

--This does not have a bookmark lookup

SELECT colID, colDate, colSession FROM TestTable WITH (INDEX = 3) WHERE colDate > '12/31/2007 23:59:59'

--Table 'TestTable'. Scan count 1, logical reads 27

-- TotalSubtreeCost: 0.0168857

 

--Turn off execution plans

SET STATISTICS PROFILE OFF

SET STATISTICS IO OFF

 

--Clear cache for demo

CHECKPOINT

DBCC DROPCLEANBUFFERS

 

--Insert new rows of data

--Will affect filtered index

INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20080301',3,'20080301-3')

 

--View number of rows in indexes

SELECT name, i.index_id, [rows]

FROM sys.partitions p

INNER JOIN sys.indexes i

ON p.[object_id] = i.[object_id]

AND p.index_id = i.index_id

WHERE p.[object_id] = OBJECT_ID('TestTable')

 

/*

name              index_id    rows

cl_TestTable_1    1           39001

ncl_TestTable_1   2           39001

ncl_TestTable_2   3           9001

*/

 

--Determine which pages have been changed

SELECT DB_NAME(bd.database_id) AS 'Database Name'

,dtab.object_name AS 'Object Name'

,dtab.index_id AS 'Index number with dirty page'

,bd.page_id AS 'Page ID of dirty page'

,bd.page_type AS 'Type of Page'

,bd.page_level AS 'Page Level'

FROM sys.dm_os_buffer_descriptors AS bd

    INNER JOIN

    (

        SELECT OBJECT_NAME([object_id]) AS object_name

            ,index_id ,allocation_unit_id

        FROM sys.allocation_units AS au

            INNER JOIN sys.partitions AS p

                ON au.container_id = p.hobt_id

                    AND (au.type = 1 OR au.type = 3)

        UNION ALL

        SELECT OBJECT_NAME([object_id]) AS object_name  

            ,index_id, allocation_unit_id

        FROM sys.allocation_units AS au

            INNER JOIN sys.partitions AS p

                ON au.container_id = p.partition_id

                    AND au.type = 2

    ) AS dtab

        ON bd.allocation_unit_id = dtab.allocation_unit_id

WHERE bd.is_modified = 1

AND bd.database_id = DB_ID()

AND [object_name]   = 'TestTable'

ORDER BY bd.database_id, [Object Name],index_id, page_type

 

/*

Database Name

Object Name

Index number with dirty page

Page ID of dirty page

Type of Page

Page Level

AdventureWorks2005

TestTable

1

19578

DATA_PAGE

0

AdventureWorks2005

TestTable

2

20033

INDEX_PAGE

0

AdventureWorks2005

TestTable

3

20120

INDEX_PAGE

0

*/

 

--Clear cache for demo

CHECKPOINT

DBCC DROPCLEANBUFFERS

 

--Will not affect filtered index

INSERT INTO TestTable (colDate,colSession,colDesc ) VALUES ('20071101',3,'20071101-3')

 

--View number of rows in indexes

SELECT name, i.index_id, [rows]

FROM sys.partitions p

INNER JOIN sys.indexes i

ON p.[object_id] = i.[object_id]

AND p.index_id = i.index_id

WHERE p.[object_id] = OBJECT_ID('TestTable')

 

/*

name              index_id    rows

cl_TestTable_1    1           39002

ncl_TestTable_1   2           39002

ncl_TestTable_2   3           9001

*/

 

--Determine which pages have been changed

SELECT DB_NAME(bd.database_id) AS 'Database Name'

,dtab.object_name AS 'Object Name'

,dtab.index_id AS 'Index number with dirty page'

,bd.page_id AS 'Page ID of dirty page'

,bd.page_type AS 'Type of Page'

,bd.page_level AS 'Page Level'

FROM sys.dm_os_buffer_descriptors AS bd

    INNER JOIN

    (

        SELECT OBJECT_NAME([object_id]) AS object_name

            ,index_id ,allocation_unit_id

        FROM sys.allocation_units AS au

            INNER JOIN sys.partitions AS p

                ON au.container_id = p.hobt_id

                    AND (au.type = 1 OR au.type = 3)

        UNION ALL

        SELECT OBJECT_NAME([object_id]) AS object_name  

            ,index_id, allocation_unit_id

        FROM sys.allocation_units AS au

            INNER JOIN sys.partitions AS p

                ON au.container_id = p.partition_id

                    AND au.type = 2

    ) AS dtab

        ON bd.allocation_unit_id = dtab.allocation_unit_id

WHERE bd.is_modified = 1

AND bd.database_id = DB_ID()

AND [object_name]   = 'TestTable'

ORDER BY bd.database_id, [Object Name],index_id, page_type

 

/*

Database Name

Object Name

Index number with dirty page

Page ID of dirty page

Type of Page

Page Level

AdventureWorks2005

TestTable

1

19578

DATA_PAGE

0

AdventureWorks2005

TestTable

2

3012

IAM_PAGE

0

AdventureWorks2005

TestTable

2

19928

INDEX_PAGE

1

AdventureWorks2005

TestTable

2

3398

INDEX_PAGE

0

AdventureWorks2005

TestTable

2

20002

INDEX_PAGE

0

AdventureWorks2005

TestTable

2

20001

INDEX_PAGE

0

*/

 

As you can see, having a filtered index makes a little difference in this small table. The difference you would see will grow as the size of the data grows and as the data distribution changes. Redo the demo but change the filtered index to only include the last month of data instead of the last three months. Redo the demo by adding 1,000,000 rows of data before 12/31/2007. How do these two tests differ from the one I created?

 

Randy Dyess

We still have spots left in our May SQL Server DBA Bootcamp being delivered in Dallas. Jump on over to our website as sign up today.

 

We still spots open for Solid Quality Mentor’s SQL Server Performance Tuning Bootcamp to be delivered in Dallas in April.

 

If you enjoyed this post and want to know more about SQL Server, make sure you sign up for one of Solid Quality Mentor’s SQL Server classes today.

 

Make sure you sign up for our newsletter.


Developer Cave
1/29/2008 11:58 AM
Performance & optimization tips for Visual Studio 2008
There's no development tool which cannot be optimized in performance. VS 2008 is not an exception, and the same is valid for the kind of applications you can build with it. Since we all have to make demos in our presentations, its interesting to review some of the most relevant performance & optimization tips, from both points of view: the tool itself, and the applications you can build with it. Besides, in order to let you dig into further research for each topic, I'll give some recommendations in the way of links to articles for different optimization and performance scenarios, or -otherwise- this could become a whole book, and not a "Developer Cave" article.
 
Under the point of view of VS 2008, I've seen several interesting tips:
 
About conditions of your hard-drives: Scott Guthrie suggests some interesting ones at: "Tip/Trick: Hard Drive Speed and Visual Studio Performance" and the Chief of Development at Ms-Redmond, Soma Somasegar, also suggests the following:
 

·      Rebuilding a Visual Basic project and running a background compiler is 3x faster and uses 3x less memory.  More about this topic here.

·      Scrolling large C# files in the Editor is 100% faster, while typing in new text is 50% faster

·      The response time of IntelliSense with large types in C# is up to 10 times faster

·      Incremental build time runs up to 90% faster on C++/CLI project solutions. More about this topic here.

·      Office Word and Excel files are processed 20x faster on the server

·       TFS Version Control command processing was re-written to support unlimited sized operations on key commands without being memory bound on the server. In our measurements, key Commands also run 10% - 60% faster, with the larger improvements associated with bigger projects.  More about the work to improve TFS scalability here and here.

 

Also, there are performance improvements that exploit multi-core hardware. For example,multi-threaded support to MSBuild. In addition, using the /MP switch, you can significantly improve C++ projects' build time – they claim improvements of up to 30% when building the C++ Frontend compiler on dual-core hardware-. Other significant performance improvements were also made in the .NET Framework 3.5 runtime to streamline the CLR thread pool to help multithreaded applications of all kinds. These architectural changes, when combined with socket API changes, improve asynchronous socket I/O throughput up to 70% when a 2nd processor core is available, for example.The full scope of this work is discussed in more detail here
 
On the other side, i.e, the application optimization side,
there numerous references of interest, depending of the kind of application to build. The very best I've seen on this topic is a page at dotnetslackers.com entitled "Performance". It's full of links (including some of the above), on many different optimization tips & techniques. 
 
Hope this helps.
 
Marino Posadas
Solid Quality Mentors' Development Division
(Spain & Portugal)
January 2008

Miguel Egea
11/21/2007 9:30 PM
Presentación en la I Microsoft Bussines Intelligence Conference en madrid
Buenas noches
 
Ya estoy de vuelta en casita, con un principio de gripe que he mitigado algo pegandole la mitad de los virus a mi compañero Antonio Soto e intentando cumplir con parte de la promesa que hice a los valientes que atendieron mi presentación en el día de hoy.
 
Espero que la presentación les gustase, yo desde luego disfruté dandola. Se me hizo algo corta, porque intenté contar en demasiado detalle alguna de las demos del principio, no quería dejar pasar ningún fundamento, pero bueno, solo me salté una demostración :)
 
Sobre las demos, tengo aún que ver como lo voy a resolver desde el punto de vista técnico, voy a consultar si podemos colgarlas como videos y si es así entre mi compañero Francisco Gonzalez y yo las grabaremos y las pondremos a disposición de todos (Por cierto muchas gracias Paco por ayudarme con las demos, no me habría dado tiempo tiempo a hacerlas si tí) y Gracias también a Rubén por que la que enseñe de Workload es de un post del blog del rincón del DBA que él mismo hizo
 
Bueno, sin más rollos, pinchad aquí para descargar la presentación.
 
Un abrazo
Miguel Egea

Dusan Zupancic
10/23/2007 1:58 PM
SmartCards technology for .NET developers (workshop)
Two weeks ago we (Bostjan Kolar, Marko Zdouc, Marko Dorn and Me) held first workshop "Smart cards for .NET Developers" in Varazdin (Croatia). We covered major types of Smart Cards and how to develop solutions in .NET environment. In practical part participant had an oportunity to put hands on solutions with GemClub Memo (Memory Smart card), FlashCOS (processor smart card), JCOP (Java Card) and Gemalto .NET Smartcard.
 
It was great experiemce to talk about this interresting subject so we will work also on simillar courses related to this subject.

Eladio Rincón Herrera
10/22/2007 7:11 PM
De mudanzas...
Hola,
 
que estoy de mudanzas... me cambio de blog; a partir de ahora, publicaré con Carlos Sacristán, Rubén Garrigós en:
 
 
Nada, nos vemos aquí al lado...
 
Eladio

Rubén Garrigós
10/20/2007 12:50 AM
De mudanzas...
Me mudo de blog por lo que a partir de ahora publicaré junto a Carlos Sacristán y Eladio Rincón en:

 

¿Problemas técnicos? Contáctenos en webmaster@solidq.com o al 800 300 800 (desde España) o al +34 91 414 8950 (desde fuera de España)