<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4852212637002301532</id><updated>2011-07-29T01:05:29.483-07:00</updated><category term='SSIS 2008'/><category term='SQL Server 2005'/><category term='OLTP Database'/><category term='T_SQL'/><category term='SQL Server 2008'/><category term='SQL'/><category term='SSIS'/><category term='MDX'/><category term='SSIS 2005'/><category term='SSAS'/><category term='PL/SQL'/><category term='SSRS'/><title type='text'>Hocus Pocus with Microsoft BI Tools</title><subtitle type='html'>By discovering the Microsoft BI Tools and implementing BI platform, I'm improving my technical and design BI knowledge. Sometime, I took a lot of time to find what I searched. On a real project, Time is money. That's the reason why I would like to share these knowledge with you.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-8916826951531170228</id><published>2010-05-12T07:26:00.000-07:00</published><updated>2010-05-12T07:31:26.462-07:00</updated><title type='text'>SSIS - Tinyint datatype issue</title><content type='html'>The stage I prefer is the design of the database. Using the most appropriate datatype, creating triggers, indexes, etc. I like that!&lt;br /&gt;&lt;br /&gt;Recently I encountered an issue with SSIS where a field having the TINYINT SQL datatype was converted by SSIS in unsigned unicode data type. Of course, the destination field and this field did not match anymore.&lt;br /&gt;&lt;br /&gt;The solution is to use a Derived Column component to convert back the data type to the signed unicode data type.&lt;br /&gt;&lt;br /&gt;Thanks to the post of Simons, I was able to find the workaround:&lt;br /&gt;http://sqlblogcasts.com/blogs/simons/archive/2006/02/24/SSIS-data-flows-and-tinyint.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-8916826951531170228?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/8916826951531170228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=8916826951531170228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/8916826951531170228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/8916826951531170228'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2010/05/ssis-tinyint-datatype-issue.html' title='SSIS - Tinyint datatype issue'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-5293408765289387142</id><published>2010-01-27T22:54:00.000-08:00</published><updated>2010-01-27T23:58:42.979-08:00</updated><title type='text'>Time dimension in SSAS</title><content type='html'>In SSAS 2005 and 2008, it exists 4 types of built-in time dimensions. All are based on the server time.&lt;br /&gt;&lt;br /&gt;The problem with these server time dimension is the flexibility. Indeed no way to customize the members name or change the name of these. You will always have something like 'Friday 1 January 2010' as day.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To have a more usable time dimension, you will have to create a physical time dimension and import it into your datasource view.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This time dimension will contain then the naming you want.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here the code I built to fill in my Calendar table which is the source table to my time dimension.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--Creation of the table&lt;br /&gt;&lt;br /&gt;CREATE TABLE [dbo].[Dim_Calendar](&lt;br /&gt;[DateKey] [int] NOT NULL, --Surrogate key&lt;br /&gt;[FullDate] [datetime] NULL, --DD/MM/YYYY 00:00:00.000&lt;br /&gt;[WeekNumInYear] [tinyint] NULL, -- The order number of the week in the year (gregorian calendar)&lt;br /&gt;[Month] [tinyint] NULL, -- Month number (1--&gt;12)&lt;br /&gt;[MonthAbbrev] [char](3) NULL, -- Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Spe,Oct,Nov,Dec&lt;br /&gt;[MonthBeginDateKey] [int] NULL, -- The surrogate Key of the first day in the month&lt;br /&gt;[Quarter] [tinyint] NULL, -- Quarter number (1,2,3,4)&lt;br /&gt;[QuarterName] [char](2) NULL, -- Q1,Q2,Q3,Q4&lt;br /&gt;[QuarterYear] [char](7) NULL, -- Q1 2009,Q2 2009,etc.&lt;br /&gt;[Year] [smallint] NULL, -- Year&lt;br /&gt;[WeekNumOverall] [smallint] NULL, -- key identifier of the week&lt;br /&gt;[WeekName_W] [char](4) NULL,&lt;br /&gt;[ISOWeek] [smallint] NULL,&lt;br /&gt;CONSTRAINT [PK_Dim_Calendar] PRIMARY KEY NONCLUSTERED&lt;br /&gt;(&lt;br /&gt;[DateKey] ASC&lt;br /&gt;)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]&lt;br /&gt;) ON [PRIMARY]&lt;br /&gt;&lt;br /&gt;-- Create function to get the ISO Week&lt;br /&gt;CREATE FUNCTION [dbo].[fn_Get_ISO_Week_Number](&lt;br /&gt;&lt;br /&gt;    @date DATETIME )&lt;br /&gt;&lt;br /&gt;RETURNS INT&lt;br /&gt;&lt;br /&gt;AS&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;/***&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;    The code here is from the article http://www.sqlservercentral.com/articles/Advanced+Querying/onthetrailoftheisoweek/1675/ by Christoffer Hedgate 20 Jan 2005.&lt;br /&gt;&lt;br /&gt;    Note, change 01-04 in Christoffer's article because dates need to be passed as YYYYMMDD in SQL Server to avoid any inconsistency.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;****/&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;    RETURN&lt;br /&gt;      ( CASE&lt;br /&gt;&lt;br /&gt;     -- Exception where @date is part of week 52 (or 53) of the previous year&lt;br /&gt;&lt;br /&gt;     WHEN @date &lt; CASE (DATEPART(dw, CAST(YEAR(@date) AS CHAR(4)) + '0104') + @@DATEFIRST - 1) % 7&lt;br /&gt;&lt;br /&gt;      WHEN 1 THEN CAST(YEAR(@date) AS CHAR(4)) + '0104'&lt;br /&gt;&lt;br /&gt;      WHEN 2 THEN DATEADD(d, -1, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 3 THEN DATEADD(d, -2, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 4 THEN DATEADD(d, -3, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 5 THEN DATEADD(d, -4, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 6 THEN DATEADD(d, -5, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      ELSE DATEADD(d, -6, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      END&lt;br /&gt;&lt;br /&gt;     THEN&lt;br /&gt;&lt;br /&gt;      (DATEDIFF(d,&lt;br /&gt;&lt;br /&gt;       CASE (DATEPART(dw, CAST(YEAR(@date) - 1 AS CHAR(4)) + '0104') + @@DATEFIRST - 1) % 7&lt;br /&gt;&lt;br /&gt;       WHEN 1 THEN CAST(YEAR(@date) - 1 AS CHAR(4)) + '0104'&lt;br /&gt;&lt;br /&gt;       WHEN 2 THEN DATEADD(d, -1, CAST(YEAR(@date) - 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;       WHEN 3 THEN DATEADD(d, -2, CAST(YEAR(@date) - 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;       WHEN 4 THEN DATEADD(d, -3, CAST(YEAR(@date) - 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;       WHEN 5 THEN DATEADD(d, -4, CAST(YEAR(@date) - 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;       WHEN 6 THEN DATEADD(d, -5, CAST(YEAR(@date) - 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;       ELSE DATEADD(d, -6, CAST(YEAR(@date) - 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;       END,&lt;br /&gt;&lt;br /&gt;       @date&lt;br /&gt;&lt;br /&gt;      ) / 7) + 1&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;     -- Exception where @date is part of week 1 of the following year&lt;br /&gt;&lt;br /&gt;     WHEN @date &gt;= CASE (DATEPART(dw, CAST(YEAR(@date) + 1 AS CHAR(4)) + '0104') + @@DATEFIRST - 1) % 7&lt;br /&gt;&lt;br /&gt;      WHEN 1 THEN CAST(YEAR(@date) + 1 AS CHAR(4)) + '0104'&lt;br /&gt;&lt;br /&gt;      WHEN 2 THEN DATEADD(d, -1, CAST(YEAR(@date) + 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 3 THEN DATEADD(d, -2, CAST(YEAR(@date) + 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 4 THEN DATEADD(d, -3, CAST(YEAR(@date) + 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 5 THEN DATEADD(d, -4, CAST(YEAR(@date) + 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 6 THEN DATEADD(d, -5, CAST(YEAR(@date) + 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      ELSE DATEADD(d, -6, CAST(YEAR(@date) + 1 AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      END&lt;br /&gt;&lt;br /&gt;     THEN 1&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;     ELSE&lt;br /&gt;&lt;br /&gt;      -- Calculate the ISO week number for all dates that are not part of the exceptions above&lt;br /&gt;&lt;br /&gt;      (DATEDIFF(d,&lt;br /&gt;&lt;br /&gt;      CASE (DATEPART(dw, CAST(YEAR(@date) AS CHAR(4)) + '0104') + @@DATEFIRST - 1) % 7&lt;br /&gt;&lt;br /&gt;      WHEN 1 THEN CAST(YEAR(@date) AS CHAR(4)) + '0104'&lt;br /&gt;&lt;br /&gt;      WHEN 2 THEN DATEADD(d, -1, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 3 THEN DATEADD(d, -2, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 4 THEN DATEADD(d, -3, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 5 THEN DATEADD(d, -4, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      WHEN 6 THEN DATEADD(d, -5, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      ELSE DATEADD(d, -6, CAST(YEAR(@date) AS CHAR(4)) + '0104')&lt;br /&gt;&lt;br /&gt;      END,&lt;br /&gt;&lt;br /&gt;      @date&lt;br /&gt;&lt;br /&gt;      ) / 7) + 1&lt;br /&gt;&lt;br /&gt;     END&lt;br /&gt;&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- Create the stored procedure to fill the calendar table&lt;br /&gt;CREATE PROCEDURE [dbo].[Dim_Calendar_Generation] &lt;br /&gt;      &lt;br /&gt;      @StartDate Datetime, &lt;br /&gt;      @EndDate Datetime&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;      -- SET NOCOUNT ON added to prevent extra result sets from&lt;br /&gt;      -- interfering with SELECT statements.&lt;br /&gt;      SET NOCOUNT ON;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;      SET DATEFIRST 1&lt;br /&gt;&lt;br /&gt;      DECLARE &lt;br /&gt;            @DateKey int,&lt;br /&gt;            @WeekNumInYear tinyint,&lt;br /&gt;            @Month tinyint,&lt;br /&gt;            @MonthAbbrev char(3),&lt;br /&gt;            @MonthBeginDateKey int,&lt;br /&gt;            @Quarter tinyint,&lt;br /&gt;            @QuarterName char(2),&lt;br /&gt;            @QuarterYear char(7),   &lt;br /&gt;            @Year smallint,&lt;br /&gt;            @WeekNumOverall smallint ,&lt;br /&gt;            @WeekName_W char(4),&lt;br /&gt;            @ISOWeek smallint&lt;br /&gt;&lt;br /&gt;      WHILE @StartDate &lt;= @EndDate&lt;br /&gt;      BEGIN&lt;br /&gt;            SET @DateKey = CASE &lt;br /&gt;                              WHEN (SELECT COUNT(*) FROM Dim_Calendar) &gt; 0) THEN (SELECT MAX(DateKey) FROM Dim_Calendar) + 1&lt;br /&gt;                              ELSE 1 -- Dim_calendar is empty&lt;br /&gt;                           END      &lt;br /&gt;            SET @WeekNumInYear = DATEPART(week,@StartDate)&lt;br /&gt;            SET @Month = MONTH(@StartDate)&lt;br /&gt;            SET @MonthAbbrev = SUBSTRING(DATENAME(month,@StartDate),1,3)&lt;br /&gt;            SET @MonthBeginDateKey =  &lt;br /&gt;                        CASE&lt;br /&gt;                              WHEN &lt;br /&gt;                              (&lt;br /&gt;                                    SELECT COUNT(MonthBeginDateKey) &lt;br /&gt;                                    FROM dbo.Dim_Calendar &lt;br /&gt;                                    WHERE MONTH(@StartDate) = MONTH(FullDate)&lt;br /&gt;                                    AND YEAR(@StartDate) = YEAR(FullDate)&lt;br /&gt;                                    AND DAY(FullDate) = 1&lt;br /&gt;                              ) &gt; 0&lt;br /&gt;                                    THEN &lt;br /&gt;                                    (&lt;br /&gt;                                          SELECT DISTINCT MonthBeginDateKey &lt;br /&gt;                                          FROM dbo.Dim_Calendar &lt;br /&gt;                                          WHERE MONTH(@StartDate) = MONTH(FullDate)&lt;br /&gt;                                          AND YEAR(@StartDate) = YEAR(FullDate)&lt;br /&gt;                                          AND DAY(FullDate) = 1&lt;br /&gt;                                    ) -- @StartDate is not the first date in the month&lt;br /&gt;                              ELSE @DateKey -- @StartDate is the first day of the month&lt;br /&gt;                        END&lt;br /&gt;&lt;br /&gt;            SET @Quarter = DATEPART(quarter,@StartDate)&lt;br /&gt;            SET @QuarterName = 'Q' + DATENAME(quarter,@StartDate)&lt;br /&gt;            SET @QuarterYear = 'Q' + DATENAME(quarter,@StartDate) + ' ' + CAST(YEAR(@StartDate) AS VARCHAR(4))&lt;br /&gt;            &lt;br /&gt;            SET @Year = YEAR(@StartDate)&lt;br /&gt;            SET @WeekNumOverall = &lt;br /&gt;                  CASE &lt;br /&gt;                        WHEN &lt;br /&gt;                        (&lt;br /&gt;                              SELECT COUNT(WeekNumOverall)&lt;br /&gt;                              FROM Dim_Calendar&lt;br /&gt;                              WHERE YEAR(@StartDate) = YEAR(FullDate)&lt;br /&gt;                              AND MONTH(@StartDate) = MONTH(FullDate)&lt;br /&gt;                              AND @WeekNumInYear = WeekNumInYear&lt;br /&gt;                        ) &gt; 0&lt;br /&gt;                              THEN&lt;br /&gt;                              (&lt;br /&gt;                                    SELECT DISTINCT WeekNumOverall &lt;br /&gt;                                    FROM Dim_Calendar&lt;br /&gt;                                    WHERE YEAR(@StartDate) = YEAR(FullDate)&lt;br /&gt;                                    AND MONTH(@StartDate) = MONTH(FullDate)&lt;br /&gt;                                    AND @WeekNumInYear = WeekNumInYear&lt;br /&gt;                              )&lt;br /&gt;                        WHEN (SELECT COUNT(*)FROM Dim_Calendar) = 0 THEN 1 -- Dim_Calendar is empty&lt;br /&gt;                        ELSE (SELECT MAX(WeekNumOverall) FROM Dim_Calendar) + 1 -- First week of the month&lt;br /&gt;                  END&lt;br /&gt;            SET @WeekName = &lt;br /&gt;                  CASE &lt;br /&gt;                        WHEN DATEPART(week,@StartDate) &lt; 10&lt;br /&gt;                              THEN 'W 0'+ CAST(@WeekNumInYear AS VARCHAR(4))  &lt;br /&gt;                        ELSE 'W ' + CAST(@WeekNumInYear AS VARCHAR(4))&lt;br /&gt;                  END&lt;br /&gt;            &lt;br /&gt;            SET @ISOWeek = (SELECT dbo.fn_Get_ISO_Week_Number(@StartDate))&lt;br /&gt;&lt;br /&gt;            INSERT INTO Dim_Calendar&lt;br /&gt;            (&lt;br /&gt;                  [DateKey]&lt;br /&gt;                  ,[FullDate]&lt;br /&gt;                  ,[WeekNumInYear]&lt;br /&gt;                  ,[Month]&lt;br /&gt;                  ,[MonthAbbrev]&lt;br /&gt;                  ,[MonthBeginDateKey]&lt;br /&gt;                  ,[Quarter]&lt;br /&gt;                  ,[QuarterName]&lt;br /&gt;                  ,[QuarterYear]&lt;br /&gt;                  ,[Year]&lt;br /&gt;                  ,[WeekNumOverall]&lt;br /&gt;                  ,[WeekName_W]&lt;br /&gt;                  ,[ISOWeek]&lt;br /&gt;            )&lt;br /&gt;            VALUES&lt;br /&gt;            (&lt;br /&gt;                  @DateKey&lt;br /&gt;                  ,@StartDate&lt;br /&gt;                  ,@WeekNumInYear&lt;br /&gt;                  ,@Month&lt;br /&gt;                  ,@MonthAbbrev&lt;br /&gt;                  ,@MonthBeginDateKey&lt;br /&gt;                  ,@Quarter&lt;br /&gt;                  ,@QuarterName&lt;br /&gt;                  ,@QuarterYear&lt;br /&gt;                  ,@Year&lt;br /&gt;                  ,@WeekNumOverall&lt;br /&gt;                  ,@WeekName_W&lt;br /&gt;                  ,@ISOWeek&lt;br /&gt;            )&lt;br /&gt;                  &lt;br /&gt;                  SET @StartDate = @StartDate + 1&lt;br /&gt;      END&lt;br /&gt;&lt;br /&gt;END&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-5293408765289387142?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/5293408765289387142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=5293408765289387142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/5293408765289387142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/5293408765289387142'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2010/01/time-dimension-in-ssas.html' title='Time dimension in SSAS'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-3112121521854804781</id><published>2009-09-02T07:24:00.000-07:00</published><updated>2009-09-02T07:26:07.092-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T_SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Get the date without the time</title><content type='html'>PL/SQL&lt;br /&gt;SELECT TRUNC(SYSDATE) --That should get you today's date&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;T-SQL&lt;br /&gt;SELECT DATEADD(d,DATEDIFF(d,0,GETDATE()),0) --That should get you today's date&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-3112121521854804781?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/3112121521854804781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=3112121521854804781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/3112121521854804781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/3112121521854804781'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2009/09/get-date-without-time.html' title='Get the date without the time'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-2805214565374434880</id><published>2009-09-02T07:21:00.000-07:00</published><updated>2009-09-02T07:23:00.808-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS 2008'/><title type='text'>SSIS - Kimball SCD Component vs. SCD Component</title><content type='html'>Some of you certainly know the performance issue of using the Slowly Changing Dimension (SCD) SSIS component.&lt;br /&gt;With a small or medium amount of records, this component works fine but with a bigger amount of data, I’m speaking here about more than 10000 records (which is not huge J), this component “sucks”.&lt;br /&gt;&lt;br /&gt;Here at Mobistar I encountered this kind of issue because I had to import more or less 80000 records per day.&lt;br /&gt;&lt;br /&gt;By using the SCD component, after 40 minutes I decided to stop the loading and starting to find another solution.&lt;br /&gt;By using the Kimball SCD component, the loading takes a bit more than 2 minutes.&lt;br /&gt;&lt;br /&gt;The Kimball SCD component receives input from 2 sorted sources, compares the data and updates, inserts or deletes the records into the destination table. Furthermore, the Kimball SCD applies an insert or update against all rows at the same time. The normal SCD applies the update or the insert against a single row at the time. This is why the normal SCD is slower than the Kimball SCD.&lt;br /&gt;&lt;br /&gt;I guess this component could interesting you a lot in your future developments.&lt;br /&gt;&lt;br /&gt;Feel free to send me your experience with this component.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kimballscd.codeplex.com/"&gt;http://kimballscd.codeplex.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kind regards,&lt;br /&gt;Jérémie&lt;br /&gt; PS: you can also have a look to &lt;a href="http://www.sqlbi.eu/Projects/TableDifference/tabid/74/language/en-US/Default.aspx"&gt;http://www.sqlbi.eu/Projects/TableDifference/tabid/74/language/en-US/Default.aspx&lt;/a&gt; for information about another improved SCD component&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-2805214565374434880?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/2805214565374434880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=2805214565374434880' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/2805214565374434880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/2805214565374434880'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2009/09/ssis-kimball-scd-component-vs-scd.html' title='SSIS - Kimball SCD Component vs. SCD Component'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-4481581123318299829</id><published>2008-06-19T00:48:00.000-07:00</published><updated>2008-08-21T03:51:58.702-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>SQL Server 2005 :Insert a flat file in a OLTP table</title><content type='html'>&lt;div align="left"&gt;&lt;span style="font-size:130%;"&gt;This article will show you 4 different ways to import a flat file in a SQL Server table. &lt;/span&gt;&lt;/div&gt;&lt;p align="left"&gt;&lt;span style="font-size:130%;"&gt;The first question that you must have is:" Have I to manipulate some of my data?"&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size:130%;"&gt;If no, you can use the following methods:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;em&gt;&lt;strong&gt;BULK INSERT&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p align="left"&gt;BULK INSERT is a T-SQL command that allows to import data from a flat file into a table.&lt;/p&gt;&lt;p align="left"&gt;Here an example:&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size:85%;"&gt;BULK INSERT &lt;databasename&gt;.dbo.[TheDestinationTableName]&lt;tablename&gt; FROM 'FullPathToTheFlatFile'&lt;br /&gt;WITH&lt;br /&gt;(&lt;br /&gt;FIELDTERMINATOR = '',&lt;br /&gt;ROWTERMINATOR = '\n'&lt;br /&gt;)&lt;/span&gt; &lt;/p&gt;Here the end character between each column is '' and the final character to pass to the next record is '\n'&lt;br /&gt;&lt;br /&gt;&lt;p align="left"&gt;&lt;em&gt;&lt;strong&gt;bcp&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p align="left"&gt;bcp can copy Microsoft® SQL Server™ data to or from a data file. bcp is a command prompt utility and not a T-SQL command. bcp is used in a batch file or in your .NET application, for instance. The bcp utility is written using the ODBC bulk copy application programming interface (API). &lt;/p&gt;&lt;p align="left"&gt;&lt;em&gt;&lt;strong&gt;Import/Export Tasks &lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;/p&gt;&lt;p&gt;As the Copy tool of SQL Server 2005, it exists also an import tool in it.&lt;/p&gt;&lt;p&gt;From SSMS, connect you on your destination database (which one that contains the destination table). Right click on this database and select Tasks --&gt; Import Data... The &lt;em&gt;Sql Server Import and Export Wizard &lt;/em&gt;window&lt;em&gt; &lt;/em&gt;opens itself. &lt;/p&gt;&lt;p&gt;Select &lt;em&gt;Flat File Source&lt;/em&gt;  as Datasource. Specify the File path and the formatting. You can preview the result in the &lt;em&gt;Columns&lt;/em&gt; tab for the columns name and the data in the &lt;em&gt;Preview&lt;/em&gt; tab.&lt;/p&gt;&lt;p&gt;Click&lt;em&gt;  Next&lt;/em&gt; and follow the steps.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;if you have a manipulation:&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;em&gt;In this case, you will need to use a tool that will make the changes. This tool is SSIS. SSIS is provided with the Developer and Enterprise version of SQL Server 2005.&lt;/em&gt;&lt;em&gt;With SSIS you can create a connection to your flat file, make some changes on the values in your DataFlow and importing them in a table thanks to an OLE DB connection.&lt;/em&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;em&gt;&lt;/em&gt; &lt;/p&gt;&lt;p align="left"&gt;&lt;em&gt;I hope that this post will help you ...&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-4481581123318299829?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/4481581123318299829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=4481581123318299829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/4481581123318299829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/4481581123318299829'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2008/06/sql-server-2005-insert-flat-file-in.html' title='SQL Server 2005 :Insert a flat file in a OLTP table'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-8135190031107338876</id><published>2008-05-21T05:02:00.000-07:00</published><updated>2008-08-22T02:36:28.069-07:00</updated><title type='text'>SSAS 2005 : My Best Practices</title><content type='html'>&lt;p&gt;1. OLTP database&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Use physical table instead of physical view to build your dimension&lt;/li&gt;&lt;li&gt;Set index on these tables the following articles is very useful to chose which column indexing (&lt;a href="http://sqlblogcasts.com/blogs/ssqanet/archive/2008/02/19/sql-server-2005-index-optimization-best-practices.aspx"&gt;http://sqlblogcasts.com/blogs/ssqanet/archive/2008/02/19/sql-server-2005-index-optimization-best-practices.aspx&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;2. OLAP database&lt;/p&gt;&lt;ul&gt;&lt;li&gt;for query performance, use user defined hierarchy as much as possible except if you use custom rollup. In this case, Parent-Child hierarchies are more performant.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Case When&lt;/em&gt; mdx has been more performant than IIF in some case. When I used the C&lt;em&gt;ase When&lt;/em&gt; in a calculation of my cubes the time query was faster. Personaly, I don't hesitate to compare the response time of my query with an IIF statement and with a case when in the cube calculations part.&lt;/li&gt;&lt;li&gt;Decrease the number of cube calculation. Cause these calculations are evaluated on the fly.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In plus of my best practices, you can find more on the microsoft website (&lt;a href="http://www.microsoft.com/technet/prodtechnol/sql/bestpractice/olapdbpssas2005.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/sql/bestpractice/olapdbpssas2005.mspx&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-8135190031107338876?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/8135190031107338876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=8135190031107338876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/8135190031107338876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/8135190031107338876'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2008/05/ssas-2005-my-best-practices.html' title='SSAS 2005 : My Best Practices'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-3780608507631298300</id><published>2008-05-19T04:18:00.001-07:00</published><updated>2008-12-10T07:37:20.833-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSAS'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>SSAS 2005 : Aggregation...Important thing to know!</title><content type='html'>Aggregations are pre-calculated summaries of data. Specifically, an aggregation contains the summarized values of all measures in a measure group by a combination of different attributes.&lt;br /&gt;&lt;br /&gt;&lt;a name="633"&gt;&lt;/a&gt;&lt;a name="ch08lev3sec9"&gt;&lt;/a&gt;&lt;strong&gt;How aggregations are used ?&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;To understand aggregations, consider the cube shown in Figure.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5202047991225928994" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_BuU4FHVh0nQ/SDFjFh2OTSI/AAAAAAAACd4/_jfZJX3UlFo/s320/fig8-11_0.jpg" border="0" /&gt;&lt;br /&gt;This is a small cube consisting of two dimensions, Date and Product, and one measure, Sales Amount.&lt;br /&gt;&lt;a name="634"&gt;&lt;/a&gt;&lt;a name="CH08FIG11DB522B69-E974-4415-BA75-994F9EFBD036"&gt;&lt;/a&gt;&lt;a href="javascript:PopImage(" target="_self" name="img_92"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a name="635"&gt;&lt;/a&gt;&lt;a name="page222DB522B69-E974-4415-BA75-994F9EFBD036"&gt;&lt;/a&gt;The cube has &lt;strong&gt;three aggregations&lt;/strong&gt; contributed by different combinations of attribute hierarchies.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &lt;strong&gt;all-level &lt;/strong&gt;aggregation&lt;strong&gt; &lt;/strong&gt;stores the grand total Sales Amount. &lt;/li&gt;&lt;li&gt;The &lt;strong&gt;intermediate&lt;/strong&gt; aggregation stores the total Sales Amount for the year 2004 and Road Bikes product subcategories. &lt;/li&gt;&lt;li&gt;Finally, assuming that the fact table references Month and Product dimensions, there is also a &lt;strong&gt;fact-level&lt;/strong&gt; aggregation for July 2004 and product Road-42. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;Suppose a query asks for the overall Sales Amount value. The server discovers that this query can be satisfied by the all-level aggregation alone. Rather than having to scan the partition data, the server promptly returns the result from the pre-calculated Sales Amount value taken from this aggregation. Even if there isn't a direct aggregation hit, the server may be able to use intermediate aggregations to derive the result. For example, if the query asks for Sales Amount by product category, the server could use the intermediate aggregation, Year 2004 and Subcategory Road Bikes, to derive the total. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a name="636"&gt;&lt;/a&gt;&lt;a name="CH08LEV3SEC10"&gt;&lt;/a&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Why not create all possible aggregations?&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;The short answer is that this will be counter-productive because all those aggregations will require &lt;em&gt;enormous&lt;/em&gt; storage space and &lt;em&gt;long &lt;/em&gt;processing times. The reason is that aggregations are created when the cube is processed. &lt;/p&gt;&lt;p&gt;Last thing, to help the Aggregation Design Wizard make a correct cost/benefit analysis, be sure to keep the EstimatedCount (attribute property) and EstimatedRows (Measure group property) counts up to date.&lt;/p&gt;&lt;p&gt;To make the good estimation you can use a very useful tool named &lt;a href="http://www.codeplex.com/bidshelper"&gt;BIDSHelper&lt;/a&gt; .&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-3780608507631298300?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/3780608507631298300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=3780608507631298300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/3780608507631298300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/3780608507631298300'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2008/05/ssas-aggregationimportant-thing-to-know.html' title='SSAS 2005 : Aggregation...Important thing to know!'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_BuU4FHVh0nQ/SDFjFh2OTSI/AAAAAAAACd4/_jfZJX3UlFo/s72-c/fig8-11_0.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-6287612820626924903</id><published>2008-05-13T03:08:00.000-07:00</published><updated>2008-12-10T07:37:21.004-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='OLTP Database'/><title type='text'>SQL Server 2005 : How to copy a database using SQL Server 2005?</title><content type='html'>&lt;div align="left"&gt;To do this manipulation, you have a lot of way.&lt;br /&gt;&lt;br /&gt;Backup-Restore? too long&lt;br /&gt;&lt;br /&gt;Create an SSIS package using BIDS? too much manipulation&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;br /&gt;The solution is ... &lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;the integrated copy tool of SQL Server 2005.&lt;/strong&gt; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;This tool can copy one or several OLTP database and "paste" them on a server. It creates a package and launch the SQL server Agent that executes this one. &lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;You can find it by right-clicking on a database in your SSMS. &lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;img id="BLOGGER_PHOTO_ID_5202039190837939474" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_BuU4FHVh0nQ/SDFbFR2OTRI/AAAAAAAACdw/vNwbtqTucyc/s320/Copy+DB+1.bmp" border="0" /&gt;&lt;br /&gt;After click on Copy Database.&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;The Copy Database Wizard opens. &lt;/div&gt;&lt;div align="left"&gt;1st step: select the source server and the authentification mode&lt;/div&gt;&lt;div align="left"&gt;2nd step: select the destination server and the authentification mode&lt;/div&gt;&lt;div align="left"&gt;3rd step: choose the transfer method (Detach-Attach or the SQL Management object method to keep the source db online)&lt;/div&gt;&lt;div align="left"&gt;4th step: choose the database to move/copy&lt;/div&gt;&lt;div align="left"&gt;5th step: specify file names and wether to overwrite database(s) at the destination &lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;... creation of the package that will copy/move the database&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;Easy and useful!&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-6287612820626924903?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/6287612820626924903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=6287612820626924903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/6287612820626924903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/6287612820626924903'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2008/05/how-to-copy-database-using-sql-server.html' title='SQL Server 2005 : How to copy a database using SQL Server 2005?'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_BuU4FHVh0nQ/SDFbFR2OTRI/AAAAAAAACdw/vNwbtqTucyc/s72-c/Copy+DB+1.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-7606974122580436621</id><published>2008-05-09T05:41:00.001-07:00</published><updated>2008-05-21T07:56:44.118-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>SSIS 2005 : How to write annotations in a package?</title><content type='html'>In the SSIS Designer, right-click on the design surface of your Control Flow, Data Flow or Event Handler tab and then click &lt;em&gt;Add annotation.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;After you have created your annotation, you can either change the &lt;strong&gt;font formatting&lt;/strong&gt; or &lt;strong&gt;group&lt;/strong&gt; it to an object of your design surface. How to do it? --&gt; right-click on it :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-7606974122580436621?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/7606974122580436621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=7606974122580436621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/7606974122580436621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/7606974122580436621'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2008/05/ssis-how-to-write-annotations-in.html' title='SSIS 2005 : How to write annotations in a package?'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-8313817665993957627</id><published>2008-04-30T02:43:00.000-07:00</published><updated>2008-12-10T07:37:21.357-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MDX'/><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>SSRS 2005 : How to create a dataset of member from an OLAP database</title><content type='html'>&lt;em&gt;&lt;span style="font-family:trebuchet ms;"&gt;Requirements: &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:trebuchet ms;"&gt;Having a knowledge of MDX&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:trebuchet ms;"&gt;Having a knowledge of SSRS (being able to create a report, a datasource and a report parameter)&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="font-family:trebuchet ms;"&gt;Having an OLAP database with at least one cube and one dimension&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Creating the dataset&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Name = your dataset name&lt;/li&gt;&lt;li&gt;Datasource = your OLAP datasource&lt;/li&gt;&lt;li&gt;Command type = Text&lt;/li&gt;&lt;li&gt;Query string =&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;WITH&lt;br /&gt;MEMBER [MEASURES].[ParameterValue]&lt;br /&gt;AS Axis(1).Item(0).Item(0).Dimension.CurrentMember.UNIQUE_NAME &lt;/p&gt;&lt;p&gt;&lt;br /&gt;MEMBER [MEASURES].[ParameterCaption]&lt;br /&gt;AS String( Axis(1).Item(0).Item(0).Dimension.CurrentMember.Level.Ordinal * 1 , ' ' ) + Axis(1).Item(0).Item(0).Dimension.CurrentMember.Member_Caption&lt;/p&gt;&lt;p&gt;&lt;br /&gt;--the 5 last members&lt;br /&gt;Set [theSet] as Order( Tail( [&lt;em&gt;DimensionName&lt;/em&gt;].[&lt;em&gt;HierarchyName&lt;/em&gt;].Members, 5), [DimensionName].[HierarchyName].CurrentMember.UniqueName, Asc)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;SELECT&lt;br /&gt;{ [ParameterCaption]&lt;br /&gt;, [ParameterValue]&lt;br /&gt;} ON COLUMNS&lt;br /&gt;, Non Empty [theSet]&lt;br /&gt;DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME on ROWS&lt;br /&gt;from [&lt;em&gt;CubeName&lt;/em&gt;] &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Click on the OK button to validate&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To use this list of member, you have to create a new Report Parameters. &lt;/p&gt;&lt;p&gt;You can use the following picture as example&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5194976895810220802" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_BuU4FHVh0nQ/SBhD9mshMwI/AAAAAAAACdo/TIBqRoqs_-I/s320/ReportParameter.JPG" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Good Luck!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-8313817665993957627?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/8313817665993957627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=8313817665993957627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/8313817665993957627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/8313817665993957627'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2008/04/ssrs-how-to-create-listset-of-member.html' title='SSRS 2005 : How to create a dataset of member from an OLAP database'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_BuU4FHVh0nQ/SBhD9mshMwI/AAAAAAAACdo/TIBqRoqs_-I/s72-c/ReportParameter.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-4577334318441507578</id><published>2008-04-30T00:53:00.000-07:00</published><updated>2008-12-10T07:37:21.586-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>SSRS 2005 : Using Stored Procedure with Report Parameters</title><content type='html'>&lt;em&gt;&lt;span style="font-family:trebuchet ms;"&gt;Requirements: &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:Trebuchet MS;"&gt;Having a knowledge of T-SQL&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Having a knowledge of SSRS (being able to create a report, a datasource and a dataset)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; &lt;strong&gt;Creating the stored procedure.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The following example receives 2 input variables (a month and a 2-digit year) and returns a set of the previous month until the month of the previous year.&lt;br /&gt;&lt;br /&gt;A picture is better than 1000 words!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;a href="http://3.bp.blogspot.com/_BuU4FHVh0nQ/SBgm92shMsI/AAAAAAAACdE/63-Hdq8W_rk/s1600-h/Stp_Result.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5194945014267982530" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_BuU4FHVh0nQ/SBgm92shMsI/AAAAAAAACdE/63-Hdq8W_rk/s400/Stp_Result.bmp" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="left"&gt;So now the code.&lt;/p&gt;&lt;p align="left"&gt;CREATE PROCEDURE [dbo].[STP Name]&lt;br /&gt;@ActMonth varchar(15),@ActYear varchar(4)&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;DECLARE @id_Selected_Month tinyint&lt;br /&gt;&lt;br /&gt;CREATE TABLE #Tmp_Table&lt;br /&gt;(&lt;br /&gt;[id_Month] [tinyint] NOT NULL,&lt;br /&gt;[Month_Name] [varchar](3) NOT NULL&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (1,'Jan')&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (2,'Feb')&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (3,'Mar')&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (4,'Apr')&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (5,'May')&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (6,'Jun')&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (7,'Jul')&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (8,'Aug')&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (9,'Sep')&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (10,'Oct')&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (11,'Nov')&lt;br /&gt;INSERT INTO #Tmp_Table VALUES (12,'Dec')&lt;br /&gt;&lt;br /&gt;SET @id_Selected_Month = (SELECT [id_Month] FROM #Tmp_Table WHERE [Month_Name] = LEFT(@ActMonth,3))&lt;br /&gt;&lt;br /&gt;CREATE TABLE #Tmp_OrderdedTable&lt;br /&gt;(&lt;br /&gt;[id_Act_Month] [tinyint] IDENTITY(1,1) NOT NULL,&lt;br /&gt;[Month_Name] [varchar](10) NOT NULL&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;INSERT INTO #Tmp_OrderdedTable SELECT [Month_Name] FROM #Tmp_Table WHERE id_Month &gt; @id_Selected_Month&lt;br /&gt;&lt;br /&gt;INSERT INTO #Tmp_OrderdedTable SELECT [Month_Name] FROM #Tmp_Table WHERE id_Month &lt;= @id_Selected_Month CREATE TABLE #Tmp_ActMonthTable ( ActMonth_1 [varchar](6) NULL, ActMonth_2 [varchar](6) NULL, ActMonth_3 [varchar](6) NULL, ActMonth_4 [varchar](6) NULL, ActMonth_5 [varchar](6) NULL, ActMonth_6 [varchar](6) NULL, ActMonth_7 [varchar](6) NULL, ActMonth_8 [varchar](6) NULL, ActMonth_9 [varchar](6) NULL, ActMonth_10 [varchar](6) NULL, ActMonth_11 [varchar](6) NULL, ActMonth_12 [varchar](6) NULL ) DECLARE @First_Month_ShortName varchar(6), @Month_ShortName varchar(6), @counter tinyint, @idMonth tinyint, @Output varchar(100), @ColumnName varchar(11) /* Act Month - 1 */ IF(@id_Selected_Month = 1)--if equal to January SET @First_Month_ShortName = (SELECT Month_Name FROM #Tmp_OrderdedTable WHERE [id_Act_Month] = 11)+ ' 0' + CAST((@ActYear - 1)AS varchar(2)) ELSE SET @First_Month_ShortName = (SELECT Month_Name FROM #Tmp_OrderdedTable WHERE [id_Act_Month] = 11)+ ' ' + @ActYear INSERT INTO #Tmp_ActMonthTable (ActMonth_1) VALUES(@First_Month_ShortName) /* Act Month - 2 to Act Month - 11 */ SET @counter = 1 SET @idMonth = 10 WHILE @counter &lt;= 10 BEGIN SET @counter = @counter + 1 SET @ColumnName = 'ActMonth_' + CAST(@counter AS varchar(2)) IF((SELECT [id_Month] FROM #Tmp_Table WHERE [Month_Name] in(SELECT Month_Name FROM #Tmp_OrderdedTable WHERE [id_Act_Month] = @idMonth)) &gt; @id_Selected_Month )&lt;br /&gt;SET @Month_ShortName = (SELECT Month_Name FROM #Tmp_OrderdedTable WHERE [id_Act_Month] = @idMonth) + ' 0' + CAST((@ActYear - 1)AS varchar(2))&lt;br /&gt;ELSE&lt;br /&gt;SET @Month_ShortName = (SELECT Month_Name FROM #Tmp_OrderdedTable WHERE [id_Act_Month] = @idMonth) + ' ' + @ActYear&lt;br /&gt;&lt;br /&gt;SET @Output = 'UPDATE #Tmp_ActMonthTable SET ' + @ColumnName + ' = ' + '''' +@Month_ShortName + ''' WHERE ActMonth_1 = ''' + @First_Month_ShortName + ''''&lt;br /&gt;EXEC(@OutPut)&lt;br /&gt;&lt;br /&gt;SET @idMonth = @idMonth - 1&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* Act Month - 12 */&lt;br /&gt;SET @Month_ShortName = LEFT(@ActMonth,3) + ' 0' + CAST((@ActYear - 1)AS varchar(2))&lt;br /&gt;UPDATE #Tmp_ActMonthTable SET ActMonth_12= @Month_ShortName WHERE ActMonth_1 = @First_Month_ShortName&lt;br /&gt;&lt;br /&gt;/* Result */&lt;br /&gt;SELECT * FROM #Tmp_ActMonthTable&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* Free space */&lt;br /&gt;DROP TABLE #Tmp_ActMonthTable&lt;br /&gt;DROP TABLE #Tmp_OrderdedTable&lt;br /&gt;DROP TABLE #Tmp_Table&lt;br /&gt;&lt;br /&gt;END&lt;/p&gt;&lt;p align="left"&gt;&lt;strong&gt;2. Configuring the dataset&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;In the Data tab of your report, create a new dataset &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;In the Dataset window, change the dataset name, the datasource if needed, the command type to '&lt;em&gt;StoredProcedure'&lt;/em&gt; and write the name of your stored procedure in the '&lt;em&gt;Query String' &lt;/em&gt;pane&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Go to the Parameters tab of the same window and copy the following parameters name and value :&lt;br /&gt;Name Value&lt;br /&gt;@ActMonth =TRIM(Parameters!Period.Label)&lt;br /&gt;@ActYear =RIGHT(Parameters!Year.Label,2)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;span style="font-family:times new roman;"&gt;Period is a list of month and Year a list of year from 2005 until 2009 and are both parameters of the report. The Label function is used to return the parameter caption.&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;Click on the OK button, pass to the &lt;em&gt;'Generic Query Designer' &lt;/em&gt;and click on the exclamation point to execute your stored procedure. In the new window enter &lt;em&gt;March&lt;/em&gt; as @ActMonth value and &lt;em&gt;08&lt;/em&gt; as @ActYear value and then click the OK button.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="left"&gt;&lt;/p&gt;&lt;p align="left"&gt;Voila, you have linked the Report parameters to your stored procedure.&lt;/p&gt;&lt;p align="left"&gt;Now you can use the fields of your dataset in the &lt;em&gt;Layout &lt;/em&gt;tab and see the results in the &lt;em&gt;Preview&lt;/em&gt; tab&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Have fun!&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-4577334318441507578?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/4577334318441507578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=4577334318441507578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/4577334318441507578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/4577334318441507578'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2008/04/ssrs-using-stored-procedure-with-report.html' title='SSRS 2005 : Using Stored Procedure with Report Parameters'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_BuU4FHVh0nQ/SBgm92shMsI/AAAAAAAACdE/63-Hdq8W_rk/s72-c/Stp_Result.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4852212637002301532.post-5872676893353220603</id><published>2008-04-28T10:21:00.000-07:00</published><updated>2008-12-10T07:37:21.912-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>SSRS 2005 : How to format a textbox using a conditional formatting?</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;In the layout tab, select the textbox to modify&lt;br /&gt;&lt;/li&gt;&lt;li&gt;click on the arrow of the FontSize property to deploy the combobox&lt;br /&gt;&lt;/li&gt;&lt;li&gt;click on &lt;em&gt;Expression&lt;/em&gt; to open the Edit Expression window&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In this window, you can write a iif clause for instance as &lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;em&gt;IIF(Fields!KPI.Value ="The world","10pt","12pt")&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5194352025313292946" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_BuU4FHVh0nQ/SBYLpWshMpI/AAAAAAAACco/_4KkyKUGI18/s320/Conditional+Formatting+Example.bmp" border="0" /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You can do the same sort of formatting with the font, the color, the value, etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4852212637002301532-5872676893353220603?l=jeremiev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jeremiev.blogspot.com/feeds/5872676893353220603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4852212637002301532&amp;postID=5872676893353220603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/5872676893353220603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4852212637002301532/posts/default/5872676893353220603'/><link rel='alternate' type='text/html' href='http://jeremiev.blogspot.com/2008/04/how-to-format-textbox-in-ssrs-report.html' title='SSRS 2005 : How to format a textbox using a conditional formatting?'/><author><name>jeremiev</name><uri>http://www.blogger.com/profile/04272430072445623093</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_BuU4FHVh0nQ/SBYLpWshMpI/AAAAAAAACco/_4KkyKUGI18/s72-c/Conditional+Formatting+Example.bmp' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
