Wednesday, September 3, 2014

SSRS ReportServer Database Diagram

Ah!!! This is my first blog !!! Feels very good to get started !!!

In recent past it happened for me to work with SSRS reporting and i had to extensively work with the ReportServer database for getting the details about the reports. But when i started working i came to know there is no proper documentation for the ReportSever database. In the internet some information is available and it is scattered all over. So thought of creating a small documentation for the SSRS ReportServer database tables.

As a first step , i have created SSRS ReportServer database diagram for analyzing the relationship between the tables. You can download the PDF version of the file from the below link.

https://onedrive.live.com/redir?resid=EF9A407250207BDE!125&authkey=!AHefe5EwjU8GOGs&ithint=file%2cpdf

Thanks for reading my first blog. I will continue to write more in details about the ReportServer Database objects in my forthcoming blog "SSRS - ReportServer Database Tables Explored"

Tuesday, September 2, 2014

SSAS – Aggregation Design - Usage based optimization wizard - There are no queries in the log for selected measure group


Recently I got a scenario from my friend where she was trying to migrate the query log from production to development. While trying to create the aggregation design from usage based optimization wizard it was showing the message “There are no queries in the log for selected measure group”. She had already followed the below helpful link by updating the query log table with proper server path.


But still same message was getting displayed. We have followed the following steps to troubleshoot the issue.

1. Start the profiler pointing to the SQL Server instance in which the query log table is stored.
2. Choose the below events in the profiler
    • SQL:BatchStarting
    • SQL:BatchCompleted
    • SQL:StmtStarting
    • SQL:StmtCompleted

3. Start running the Usage based optimization wizard.
4. The profiler will show the queries issued against the database. In my environment it shows query as below



Select  Count( MSOLAP_ObjectPath ),  Count( Distinct MSOLAP_User ),  Count( Distinct Dataset ),  Avg(Duration ),  Min(StartTime ),  Max(StartTime )   From  [OlapQueryLog]  Where  ( [MSOLAP_Database] = N'AdventureWorksDW2012Multidimensional-EE' )    And  ( [MSOLAP_ObjectPath] = N'MyServer.AdventureWorksDW2012Multidimensional-EE.Adventure Works.Fact Internet Sales 1' )

With the above query we can clearly verify the update in the query log is fine or not. In our case the issue was with the update of the server name.One more point we noticed is the database name and solution name should be the same. The Object path was being sent with the solution name.

Hope this tip will be helpful while debugging this issue. 

Monday, June 30, 2014

Chennai SQL Server User Group - June 2014 Session - Over view of Data Services on Cloud OS

On Chennai SQL Server User Group , presented a topic on "Overview of Data Services on Cloud OS". This topic covers below topics in Windows Azure

1. Handling Structured Data
2. Unstructured Data
3. Gaining Insights
4. Other Services

The slide deck can be downloaded from the below link.
Presentation deck

Friday, May 30, 2014

SSIS - Split data into multiple destination Files

Recently i was working on a requirement on exporting the data into excel file. As the data may exceed more than millions the data needs to be split into multiple excel files as row limitation is 1048576 i.e, if the source returns 3 million rows the data needs to be split into 3 destination files.

For this i have used the script component destination in the data flow task to achieve this


The source query for the data source has one single column "CSVCol"

SELECT 
convert(varchar(50),D1.DateKey)+ ',' + 
convert(varchar(50),D1.FullDateAlternateKey)+ ',' + 
convert(varchar(50),D1.DayNumberOfWeek)+ ',' + 
convert(varchar(50),D1.EnglishDayNameOfWeek)+ ',' + 
convert(varchar(50),D1.SpanishDayNameOfWeek)+ ',' + 
convert(varchar(50),D1.FrenchDayNameOfWeek)+ ',' + 
convert(varchar(50),D1.DayNumberOfMonth)+ ',' + 
convert(varchar(50),D1.DayNumberOfYear)+ ',' + 
convert(varchar(50),D1.WeekNumberOfYear)+ ',' + 
convert(varchar(50),D1.EnglishMonthName)+ ',' + 
convert(varchar(50),D1.SpanishMonthName)+ ',' + 
convert(varchar(50),D1.FrenchMonthName)+ ',' + 
convert(varchar(50),D1.MonthNumberOfYear)+ ',' + 
convert(varchar(50),D1.CalendarQuarter)+ ',' + 
convert(varchar(50),D1.CalendarYear)+ ',' + 
convert(varchar(50),D1.CalendarSemester)+ ',' + 
convert(varchar(50),D1.FiscalQuarter)+ ',' + 
convert(varchar(50),D1.FiscalYear)+ ',' + 
convert(varchar(50),D1.FiscalSemester)+ ','  AS CSVCol
FROM DimDate D1

Note : This logic can be implemented inside the script task itself to concatenate the columns into the comma separated values.


The following variables are used for the below purposes


Bucket Size - For how many records a new file needs to be created
Filename     - Name of the file. Multiple files will be created with _fileno Ex- Sorna_1
FilePath       - Path in which file will be created
Header Row - In each file header row needs to be added. For this demo it is hard coded. This also can be achieved dynamically using expressions or other mechanisms


Following namespaces needs to be added in the script component code

 using System;  
 using System.Data;  
 using Microsoft.SqlServer.Dts.Pipeline.Wrapper;  
 using Microsoft.SqlServer.Dts.Runtime.Wrapper;  
 using System.IO;  
 using Microsoft.CSharp; 

Below is the code written in script component

public class ScriptMain : UserComponent   
  {   
   int RowCount = 0;   
   int batchcount = 0;   
   int FileCount = 0;   
   int BucketSize = 0;   
   String Filename = "" ;   
   String RunFileName = "";   
   String Filepath = "";   
   String FileFullpath = "";   
   String Excelfilepath = "";   
   string HeaderRow = "";   
   StreamWriter writer;   
   Object mv;   
   public override void PreExecute()   
   {   
    base.PreExecute();   
    RowCount = 0;   
    batchcount = 0;   
    FileCount = 1;   
    Filepath = Variables.FilePath;   
    Filename = Variables.FileName;   
    BucketSize = Variables.BucketSize;   
    HeaderRow = Variables.HeaderRow;   
   }   
   public override void PostExecute()   
   {   
    base.PostExecute();   
    writer.Dispose();   
   }   
   public override void Input0_ProcessInputRow(Input0Buffer Row)
   {   
    if (RowCount ==0)   
    {   
     RunFileName = Filename + "_" + FileCount.ToString();   
     FileFullpath = Filepath + RunFileName + ".csv";   
     writer = new System.IO.StreamWriter(FileFullpath);   
     writer.WriteLine(HeaderRow);   
    }   
    writer.WriteLine(Row.CSVCol.ToString());   
    RowCount++;   
    batchcount++;   
    if (batchcount == BucketSize)   
    {   
     writer.Dispose();   
     FileCount++;   
     batchcount = 0;   
     RunFileName = Filename + "_" + FileCount.ToString();   
     FileFullpath = Filepath + RunFileName + ".csv";   
     writer = new System.IO.StreamWriter(FileFullpath);   
     writer.WriteLine(HeaderRow);   
    }   
   }   
  }   

The package is available in the below link

http://1drv.ms/1o44vnJ

This package will create the files as CSV. This also can be parameterized by putting this in a variable.

Hope this post is helpful for this scenario.

Monday, April 7, 2014

Code: 0x00000001 Exception has been thrown by the target of an invocation.

Code: 0x00000001 Exception has been thrown by the target of an invocation error was thrown when I was trying access the excel files from script task in SSIS. The SSIS package works fine when running from development tool. But throws an error while called from SQL Server Agent job. This can be fixed be following steps

     1.       Go to Run and Launch DcomCnfg.exe



      2.       In the component services  window  , Navigate to Component Services à Computers à My Computer à DCOM Config


        3.       Find “Microsoft Excel Application” on right pan. Right click and select properties.



        4.       In the properties go to Identity tab. Choose the option “This User” and provide the user and password with which the excel will be launched while called programmatically.





Thursday, November 21, 2013

SSIS - Use Dynamic SQL in Oracle Source of Oracle Attunity connector

Recently I was working with Oracle Attunity source to pull the data from Oracle source. There was a requirement we need to pass a dynamic SQL to the source. But what I could see in the Oracle source only two options Table name & SQL Command. There is no option for sending SQL Command as variable.





But by the below way we can pass the dynamic SQL to Oracle source.1.Choose the data flow task in which the Oracle source is implemented.2.Go to properties and click on the Expressions.3.There you can see the properties [Oracle Source].[SQLCommand] .4.Set the expression for the above property for the dynamic SQL.




Sunday, November 17, 2013

Chennai SQL Server User Group - November 2013 Session - SQL Server 2014 New Features


On November also i gave a session at Chennai SQL Server User group on SQL Server 2014 New Features

The slide deck and the sample codes can be downloaded from here

http://sdrv.ms/1jfoYlU

Sunday, April 7, 2013

Chennai SQL Server User Group - March 2013 Session - Data Warehouse Design Concepts

On March also i gave a session at Chennai SQL Server User group on Data Warehousing design concepts and the session was well received.

In this session , i have presented on below

1. What is Data Warehouse and Need for it
2. OLAP vs OLTP
3. Data warehousing Architecture
4. Dimension modelling and Types of models
5. Types of Dimensions
6. Types of Facts
7. Types of Measures
8. Cube Structure
9. Cube Storage

The presentation can be downloaded from the below link

http://sdrv.ms/14YzWd5



Chennai SQL Server User Group - Feb 2013 Session - Power Pivot & Tabular Model

I had an oppurtunity to present in Chennai SQL Server User group and it was an awesome experience.The Session contents of Feb 2013 session can be downloaded from the below link

http://sdrv.ms/16Haogt

As the session was on Febrauary , i understand this is too late in uploading this content. But better late than never :)

In that session , I have presented on the below

1. Using Power Pivot.
2. How Power Pivot is similar to SSAS tabular Model.
3. Features in Tabular Model.
4. Demo on the Tabular Model.

Hope the session was usefull to whomever attended. All the contents of the session is available in the above link.

Friday, December 14, 2012

What-If analysis – Various ways to implement using MSBI


Presently I am working on the What-If analysis capability in MSBI. So I went ahead on researching on what are the various ways we could implement What-If analysis in MSBI.

Per my current research, there are three ways we could be able to achieve What-If analysis. (If there are more options, Please feel free to add in the comments of this blog)

1.       Using Excel – Allowing user to modify the Cells values in the Pivot Table.

2.       Using Excel – With Predefined Slicer Values.

3.       Using SSRS – With Predefined Slicer Values.

Using Excel – Allowing user to modify the Cells values in the Pivot Table
  • We need to enable the Write back option in the cube partition in order to do the what-If analysis.
  • User can directly change the values in the cells to see the impact
  • User can change the value at the higher level at a hierarchy also. For example, What-if the sales from one quarter should be moved to other quarter.


 Using Excel – With Predefined Slicer Values
  • We do not need the write back option to be enabled.
  • We need Excel 2010 and above to use this. Use Insert Slicer to use a slicer as shown below.
  • User can just select the Slicer dimension attributes to see the impact.


Using SSRS – With Predefined Slicer Values.
  • Very similar to the previous one. But it will be a static report in SSRS
  • The slicer will be the parameters. The parameter needs to be chosen and click on generate report will show the impact.

 

Also 2 weeks back power view for SSAS multidimensional CTP has been released.
 I will work on that also to understand the What-If capabilities in power view. I am pretty sure we can generate even better interactive analysis.

Saturday, November 3, 2012

SSRS – Easy way to create Stepped Tree Reports


Recently I was asked to create a report in which the user should be able to see a tree kind of structure for each level in geography with expanding & collapsing capability and summary at the each level.  User wanted to have all the level values in the same column. We have designed, developed and delivered the report.
Below is a sample report of the same kind.



After that for another client I was asked to prepare for a demo on Adhoc querying capability. When I was working in report builder I was surprised to see the capability of creating such report using the wizard itself in a pretty simple way.

Below are the steps to create this kind of report


     1.  Launch the report manager URL and open the report builder tool.

     2. Choose the Table or Matrix report from the window and proceed further in the wizard by selecting existing Data set or create a new one by using query designer or existing query.
     
     3.  For this demo i have chosen the Geography columns to be on the row groups and Date columns on the column group with sales value on the values.



    4. In the next screen , there are 3 options shown as below. Choose Stepped , Sub total above . Also check the Expand \ Colapse groups check box.


   5. In the next step choose a style as you want and click finish . For this demo , Ocean has been used.

   6. Now , the report is ready for above specification tree structure in single column with expand \ colapse feature with total & subtotal at each level. This will for sure will save some development effort when we do reports in such format.
   
   Then , i was thinking why this feature is not available in our BI Development studio wizard and i could find an option "Enable Drill down" in the window where we choose page level and group level columns.

  But with this option it is possible to have expand and collapse capability as blocked. But not stepped as per our requirement. Also the Subtotal and total are not displayed.



   

   Conclusion 
        Using the Report Builder Wizard , we will be able to build reports of below three styles

                                  1. Blocked Sub total Below.
                                  2. Blocked Sub total Above.
                                  3. Stepped Sub total Above.

        Report Builder is primarily meant for business users to generate Adhoc reports. But at times developers also can make use of this wizard to save the development effort needed to generate such report manually.Hope this information is helpful. Will meet you all next week with another blog. Till then take care and Bah bye !!!







Friday, October 26, 2012

Microsoft HDInsight Server for Big Data

Microsoft has release HDInsight server for BigData which is Apache Hadoop Compatible. This is released in two variants

HDInsight Server for Windows Server.
HDInsight Services for Windows Azure.

Both of this are available for download and sign up in the below link

http://www.microsoft.com/sqlserver/en/us/solutions-technologies/business-intelligence/big-data.aspx

Also you can do a read about HortonWorks

http://hortonworks.com/blog/Enabling-Big-Data-Insight-for-Millions-of-Windows-Developers/

I am also pretty much excited about this product. I am very sure Microsoft would have made this very user friendly in its style as like its other products. Planning to try out this in forthcoming weeks and will share the learnings here. Will meet you all next week and hope with a detailed blog. Till then Bah Bye.

Friday, October 19, 2012

SSAS - Understanding Non Aggregate Measures


Recently I have been asked a question, I have defined my measure with aggregate function as “None” and all the values are returned as Blank. What is the reason for this? So I have created a below demo to explain the concept of “None” aggregate function and how it works. Most you may be having the same question. So I am documenting this here to help you to understand about this.

Below is the sample model which will be used for demonstrating this



I have created a cube using the wizard with the above data model.  Below is the structure of the cube

Dimension : Product 
Attributes :ProductId
Dimension : Region
                Attributes :RegionID
Dimension :Chk  (Dummy Dimension)
                Attributes :ChkId
Measures : Sum(SoldQty)
                BillNumber (No aggregate)
Measures :  Sum(Valx) (Dummy Measure)


The cube is deployed and processed. Now in the browser, let us take a look how this measure behaves.
Now when using Region Dimension alone measure BillNumber is returning blank.





Now let us try adding the Product Dimension also inside. But still we could see only blanks in the BillNumber.



But if you try expanding for each region you will start seeing the Billnumber values.



The reason for this is in the first two tries there was an attribute at the level “All” . As we have mentioned BillNumber as NoAggregate , there will not be any value available for a “All” member.
Now you may get a question that in the first screenshot we have used Region at the granular level only. But why BillNumber is still Blank ?  As RegionId has been used in the query , by default ProductId will be at the “All” level. In the below MDX query , the product dimension is not used in the query , But by default it “All” member has been  considered for getting the values.



But in the last screen shot , we have the leaf level of all the attributes available in the cube so the BillNumber measure displays the value.Does this means do we need all the dimension attributes in the query to display the no aggregate measure ? Not necessary if you notice we have one other dummy dimension DimChk and other dimension attribute Color also. Without using the chk dimension attributes they will be considered as All member. But still we are getting the BillNumber measure displaying the value.This makes clear that we need to have attributes which is having the IDs as keys which are linked to the fact table which has this measure. In the above example if we use the ProductID&RegionIDattributes , No aggregate measure BillNumber will display the value.






If we remove one of the key attribute values, the bill number will start displaying Blank.



Conclusion

No Aggregate Measures will display values only when attributes with all keys linked to the fact is available in the MDX query or browser as it displays the leaf level data.

I have uploaded the SSAS project and relevant scripts in the below link for your reference.



Hope this blog is helpful .Will meet you next week with another blog. So far I am happy that I could keep up my resolution on doing a blog per week and hope I will be able to keep it up JJJJ.

Saturday, October 13, 2012

Query Full-Text Catalog and Index details from system tables

This week both personal and official work kept me so busy and couldn’t get time to do a brief blog. But recently I have started learning about Full-Text search and was able to create a utility script for getting the Full-Text Catalog and Index details. I have posted the script in Tech Net and available for download in the below link. Hope this is helpful.


http://gallery.technet.microsoft.com/scriptcenter/Get-Full-Text-Search-c77642de

Signing off hoping to meet you with a brief blog next week. Till then Bah Bye!!!

Thursday, October 4, 2012

SSAS – How to create User Defined member properties


SSAS – How to create User Defined member properties

It has been a long time since I wrote a blog as I was so very busy with other priorities. It feels so better to be back into this. Hope I will be able to blog frequently from now on.

Recently I have encountered a question in MSDN forums with a question how to create multiple caption for a member due to the reporting needs. As this is just for reporting purpose I have recommended creating them as User Defined member property. When I went ahead and searched in the internet for an article to provide step by step of this I couldn’t find one. So I decided to document it here so that it will be useful for all.

What is Member property?
Member properties cover the basic information about each member in each tuple. For example you need additional information on a member in a tuple of State Province code on State- Province attribute in the Geography Dimension in Adventureworks. But you don’t need any aggregation on that. For this scenario you can create this State Province code as member property for the State province so that it can be used for reporting purpose and it will not take more space in the cube as there is no aggregation for this property. Now let us take the above example itself and see how this can be achieved step by step.

Steps to create a member property
     1. Open the Adventure works solution for SQL Server 2008 R2
     2. Launch solution explorer and open the Geogrpahy dimension which we will be using as an example in this step by step

 
    3. Right click on the State province code column in Data Source View section and select New Attribute from column. Instead you can drag and drop this column into the attributes section.

     4.The attribute State Province code will appear in the attributes section under the Geography. Right click on Stateprovincecode attribute and select properties.Also you can hit F4 to display the property window.

     5.On the properties window change the below property values

AttributeHierarchyEnabled
False
GroupingBehaviour
DiscourageGrouping

     6.Move to the attribute relationship tab , you will see by default State Province code is added under GeographyID. But we need to add this attribute as member property to State Province.



7.  Right click on the relationship in attribute relationships tab and say edit relationship. Change the Source attribute to State-Province.


     8.Now you can see the relationship changes reflected in the attribute relationship tab.




9.  With this the required changes are done and now we need to Deploy & process the cube.From the project à Build menu choose Deploy the cube.
    10.   Once the deployment and process is done , Double click on the cube and move to cube browser tab. In the left measure group pane , expand the Geography àState Province à Member properties. There you will be able to see the state province code added as a member property.


11.   Now you will be able to use this member property in your MDX queries as shown below

WITH
   MEMBER [Measures].[State Province Code] AS
  [Geography].[State-Province].Properties( "State Province Code" )
SELECT
   [Measures].[State Province Code] ON COLUMNS,
   [Geography].[State-Province].[State-Province]  ON ROWS
FROM [Adventure Works]


 
Conclusion

Member properties will be handy when only used for reporting purpose without any aggregation. These member properties will not occupy any space in the cube as there is no aggregation or indexing done on these properties and it will be stored with in the dimension. As side effect of no indexes on these attributes querying member properties may be slow. But for sure this will help in terms of processing and cube size.

Hope this article is helpful. Will meet you soon with one more article next week as I have resolved to write one article a week.

Thursday, September 8, 2011

New T-SQL Functions in SQL Server Denali Part 2 - Date Time Functions

There are around 7 new DateTime functions introduced in Denali.
EOMONTH
DATEFROMPARTS
DATETIME2FROMPARTS
DATETIMEFROMPARTS
DATETIMEOFFSETFROMPARTS
SMALLDATETIMEFROMPARTS
TIMEFROMPARTS

EOMONTH
EOMonth Function returns the End Date of the given date's month. Also this takes an optional parameter Month to add. If month to add value is passed to the function , that number of months added to the date and gets the end date of that month.

Syntax : EOMONTH ( start_date [, month_to_add ] )

In the below example the first column returns the End date of the Month "September 2011" for the date passed as start_date. The Second column returns the End date of the Month "February 2012" as Month to add is passed as 5.



DATEFROMPARTS
DateFromParts function will return a specific date of date datatype for the Year , Month and Day passed as parameters.In the existing version , if we have Year , Month and Date we need to do a conversion of these values to string. Then concatenate these values and convert back to a DateTime as shown in below example. This function completly avoids the need for such a complex code. Also takes care of the issue during concatenation the month and day may get interchanged due to date format as shown in below example.

Syntax : DATEFROMPARTS ( year, month, day )

DATETIMEFROMPARTS

DateTimeFromParts is similar to DateFromParts. The difference is it will return Date of DateTime datatype by taking year, month, day, hour, minute, seconds and milliseconds as input.

Syntax : DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds )

DATETIME2FROMPARTS
DateTime2FromParts is similar to DateFromParts. The difference is it will return Date of DateTime2 datatype by taking year, month, day, hour, minute, seconds, fractions and precision  as input.

Syntax : DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision )

DATETIMEOFFSETFROMPARTS
DateTimeOffsetFromParts is similar to DateFromParts. The difference is it will return Date of DateTimeOffset datatype by taking year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset and  precision as input.

Syntax : DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision )


SMALLDATETIMEFROMPARTS
SmallDateTimeFromParts is similar to DateFromParts. The difference is it will return Date of DateTime datatype by taking year, month, day, hour and minute as input.

Syntax : SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute )

TIMEFROMPARTS
TimeFromParts will return Time of Time datatype by taking hour, minute, seconds, fractions and precision as input.

Syntax : TIMEFROMPARTS ( hour, minute, seconds, fractions, precision )

Below is the total consolidated example for the all the Date & Time From part function


Next i will continue with the new Logical functions.  

Tuesday, September 6, 2011

New T-SQL Functions in SQL Server Denali Part 1 - Conversion Functions

It has been more than a month since i blogged.Feels good to be back in action !!!

There are around 22 new functions are introduced in Denali. In this series of posts let us take a look into functions category wise and what problem they intend to solve.

First let us take a look into the new Conversion functions

            PARSE
            TRY_PARSE
            TRY_CONVERT
 
PARSE

Parse is similar to Cast function which converts the data to required data type. But in Parse function we can include the culture in which it has to be converted.If no culture is provided , it will use the default culture. Parse function supports only converting the String values to  Numeric and Datetime Datatypes.

Syntax : PARSE(String_Value As Data_Type [USING Culture])

 

TRY_PARSE

Try_Parse function will check whether the parse function will be succesfull or not for the given string value , data type and culture.If the unable to parse the string value to the datatype the function will return NULL.Try_Parse takes the same parameters as like Parse function.This will be very usefull during data profiling to find out error records which cannot be parsed.

Syntax : TRY_PARSE(String_Value As Data_Type [USING Culture])

In the below example , the culture "en-US" returns value and "ar-SA" returns NULL as it is unable to parse the string into date with the arabian culture.

 

 
TRY_CONVERT

Try_Convert function will check whether the expression can be converted to the destination datatype or not. If unable to convert it returns NULL. This is similar to Try_Parse.But this checks the CONVERT function.This function has the same parameters as like CONVERT function.

Syntax : TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )

In the below sample , when the conversion is succesfull it returns the converted value for string to date conversion. But while trying to convert string to int , it returns NULL as conversion cannot happen from string to int.

 

These are the three new conversion functions in Denali CTP3. Hope this post is helpfull and will continue to write on other function. The next post will be on the new function on Date and Time Category.
 

Tuesday, July 26, 2011

SQL Server "Denali" - SSAS Cube Browser - Query Design mode

In SQL Server Denali CTP3 , i noticed this cool feature Query Design mode in the cube. In the previous versions to get the MDX query for the attributes used in the report area we need to run the profiler to obtain the MDX query being generated. But in Denali , this has been made very simple by Query Design mode.

Click on the Query design mode on the tool bar and you will see the MDX query for the attributes and measures in the reporting area.






Also in this mode you can modify or write your own MDX query as like in the SSMS window.


This is really a cool feature which makes the developer life with below benefits

1. No need to run the profiler to get the MDX being designed.
2. MDX query can be written in the BIDS itself for testing the cube rather than switching to SSMS.

For more details , Refer to the below link


Friday, July 22, 2011

SQL Server "Denali" - Crescent Resources

I am very much excited with Project Crescent release in SQL Sever Denali CTP3. Yet to explore the features in it.Started looking for resources for the same and below are the links which found to be a good starting point for me. Hope will be usefull for you folks too.Happy Crescenting :)

Project Crescent Overview and Usefull Links

Project Crescent Tutorials

Project Crescent Demo Video

Project Crescent Samples

Wednesday, July 13, 2011

SQL Server Denali CTP3 is available now

SQL Server Code Name "Denali" CTP3 is released and it can be downloaded from the below link

http://www.microsoft.com/sqlserver/en/us/future-editions.aspx

The best part is most awaited Project Crescent is also available with this CTP.

You can get more insights about the release from the below link

http://blogs.msdn.com/b/sqlrsteamblog/archive/2011/07/12/sql-server-codename-quot-denali-quot-ctp3-including-project-quot-crescent-quot-is-now-publically-available.aspx