<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tags 'sql server' and '2012'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=sql+server,2012&amp;orTags=0</link><description>Search results matching tags 'sql server' and '2012'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>SQL Server 2008R2 / 2012 Standard &amp;amp; Backup Compression</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2013/03/25/sql-server-2008r2-2012-standard-backup-compression.aspx</link><pubDate>Mon, 25 Mar 2013 13:17:06 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48402</guid><dc:creator>manowar</dc:creator><description>&lt;p align="left"&gt;This is something that is totally overlooked, in my experience, with SQL Server 2008 R2 and SQL Server 2012. On the contrary to what happens with SQL Server 2008, &lt;strong&gt;the Standard version of SQL Server 2008R2 &amp;amp; SQL Server 2012 supports backup compression:&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;SQL Server 2008 R2 BOL      &lt;br /&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/cc645993(v=sql.105).aspx" href="http://msdn.microsoft.com/en-us/library/cc645993(v=sql.105).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc645993(v=sql.105).aspx&lt;/a&gt;&lt;/p&gt; SQL Server 2012 BOL     &lt;br /&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/cc645993(v=sql.110).aspx" href="http://msdn.microsoft.com/en-us/library/cc645993(v=sql.110).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc645993(v=sql.110).aspx&lt;/a&gt;&lt;/blockquote&gt;  &lt;p align="left"&gt;Unfortunately a bug in the documentation said the opposite in the past, but it has been fixed quite a long ago now:&lt;/p&gt;  &lt;p align="left"&gt;&lt;a title="http://social.msdn.microsoft.com/Forums/en-US/sqldocumentation/thread/b4f846e8-a339-422c-bb0b-91751e6c8560/" href="http://social.msdn.microsoft.com/Forums/en-US/sqldocumentation/thread/b4f846e8-a339-422c-bb0b-91751e6c8560/"&gt;http://social.msdn.microsoft.com/Forums/en-US/sqldocumentation/thread/b4f846e8-a339-422c-bb0b-91751e6c8560/&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Just keep it mind &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style:none;border-left-style:none;border-bottom-style:none;border-right-style:none;" alt="Smile" src="http://sqlblog.com/blogs/davide_mauri/wlEmoticon-smile_79F83E82.png" /&gt;&lt;/p&gt;</description></item><item><title>Trapping SQL Server Errors with Extended Events</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2013/03/17/trapping-sql-server-errors-with-extended-events.aspx</link><pubDate>Sun, 17 Mar 2013 16:45:06 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48282</guid><dc:creator>manowar</dc:creator><description>&lt;p&gt;One very useful usage of Extended Events is the ability to trap SQL Server error without the need to have a server trace running (which, btw, is deprecated), with the additional feature of being able to query the data as soon as it comes in. This means that we a solution to monitor and trap errors as soon as they happen can be easily created, in order to help developers to fix problems as soon as they are detected. This is really, really, really helpful especially in very big applications, where the code base is quite old and there is no-one really knowing everything of the solution.&lt;/p&gt;  &lt;p&gt;To start a Extended Events sessions in order to trap SQL Server errors with severity greater than 10, just run the following script:&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;CREATE EVENT SESSION [error_trap] ON SERVER      &lt;br /&gt;ADD EVENT sqlserver.error_reported      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ACTION&amp;#160;&amp;#160;&amp;#160; (package0.collect_system_time,package0.last_error,sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.nt_username,sqlserver.plan_handle,sqlserver.query_hash,sqlserver.session_id,sqlserver.sql_text,sqlserver.tsql_frame,sqlserver.tsql_stack,sqlserver.username)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE&amp;#160;&amp;#160;&amp;#160; ([severity]&amp;gt;10)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )       &lt;br /&gt;ADD TARGET package0.event_file      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET filename=N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\XEvents\error_trap.xel'      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )      &lt;br /&gt;WITH       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; STARTUP_STATE=OFF      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )      &lt;br /&gt;GO&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;ALTER EVENT SESSION [error_trap] ON SERVER      &lt;br /&gt;STATE = START;      &lt;br /&gt;GO&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The problem with Exended Events is that they only talks XML which is surely flexible and extensible, but not at all confortable to be queried. That’s why I prefer to turn it into something relational. Using the xml nodes function and pivoting data can make the trick:&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;IF (OBJECT_ID('tempdb..#e') IS NOT NULL) DROP TABLE #e     &lt;br /&gt;go&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;WITH cte AS     &lt;br /&gt;(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CAST(event_data AS XML) AS event_data      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sys.fn_xe_file_target_read_file('D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\XEvents\error_trap*.xel', NULL, NULL, NULL)      &lt;br /&gt;),      &lt;br /&gt;cte2 AS      &lt;br /&gt;(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; event_number = ROW_NUMBER() OVER (ORDER BY T.x)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ,&amp;#160;&amp;#160;&amp;#160; event_name = T.x.value('@name', 'varchar(100)')      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ,&amp;#160;&amp;#160;&amp;#160; event_timestamp = T.x.value('@timestamp', 'datetimeoffset')      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ,&amp;#160;&amp;#160;&amp;#160; event_data       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cte&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CROSS APPLY      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; event_data.nodes('/event') T(x)      &lt;br /&gt;)      &lt;br /&gt;SELECT * INTO #e FROM cte2       &lt;br /&gt;go&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;WITH cte3 AS     &lt;br /&gt;(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c.event_number,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c.event_timestamp,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; --data_field = T2.x.value('local-name(.)', 'varchar(100)'),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data_name = T2.x.value('@name', 'varchar(100)'),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data_value = T2.x.value('value[1]', 'varchar(max)'),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data_text = T2.x.value('text[1]', 'varchar(max)')      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #e c      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CROSS APPLY      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c.event_data.nodes('event/*') T2(x)      &lt;br /&gt;),       &lt;br /&gt;cte4 AS      &lt;br /&gt;(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; *      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cte3      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data_name IN ('error_number', 'severity', 'message', 'database_name', 'database_id', 'client_hostname', 'client_app_name', 'collect_system_time', 'username')      &lt;br /&gt;)      &lt;br /&gt;SELECT      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; *      &lt;br /&gt;FROM      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cte4      &lt;br /&gt;PIVOT      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (MAX(data_value) FOR data_name IN ([error_number], [severity], [message], database_name, database_id, username, client_hostname, client_app_name, collect_system_time)) T      &lt;br /&gt;WHERE      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [severity] &amp;gt; 10      &lt;br /&gt;ORDER BY      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; event_timestamp DESC      &lt;br /&gt;go&lt;/font&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;and voilà, now all errors can be easily identified:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/davide_mauri/image_7116168A.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/davide_mauri/image_thumb_0C1EBFCC.png" width="1024" height="83" /&gt;&lt;/a&gt;&lt;/p&gt;        &lt;p&gt;It’s now very easy to create reports and dashboards to monitor the system in (near) real time. And this is vital when you run a 24x7 online business.&lt;/p&gt;</description></item><item><title>WCF Error when using “Match Data” function in MDS Excel AddIn</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2012/03/29/wcf-error-when-using-match-data-function-in-mds-excel-addin.aspx</link><pubDate>Thu, 29 Mar 2012 07:46:16 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:42542</guid><dc:creator>manowar</dc:creator><description>&lt;p&gt;If you’re using MDS and DQS with the Excel Integration you may get an error when trying to use the “Match Data” feature that uses DQS in order to help to identify duplicate data in your data set.&lt;/p&gt;  &lt;p&gt;The error is quite obscure and you have to enable WCF error reporting in order to have the error details and you’ll discover that they are related to some missing permission in MDS and DQS_STAGING_DATA database.&lt;/p&gt;  &lt;p&gt;To fix the problem you just have to give the needed permession, as the following script does:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;use MDS     &lt;br /&gt;go&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;GRANT SELECT ON mdm.tblDataQualityOperationsState TO [VMSRV02\mdsweb]     &lt;br /&gt;GRANT INSERT ON mdm.tblDataQualityOperationsState TO [VMSRV02\mdsweb]      &lt;br /&gt;GRANT DELETE ON mdm.tblDataQualityOperationsState TO [VMSRV02\mdsweb]      &lt;br /&gt;GRANT UPDATE ON mdm.tblDataQualityOperationsState TO [VMSRV02\mdsweb]&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;USE [DQS_STAGING_DATA]     &lt;br /&gt;GO      &lt;br /&gt;ALTER AUTHORIZATION ON SCHEMA::[db_datareader] TO [VMSRV02\mdsweb]      &lt;br /&gt;ALTER AUTHORIZATION ON SCHEMA::[db_datawriter] TO [VMSRV02\mdsweb]      &lt;br /&gt;ALTER AUTHORIZATION ON SCHEMA::[db_ddladmin] TO [VMSRV02\mdsweb]      &lt;br /&gt;GO&lt;/font&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Where “VMSRV02\mdsweb” is the user you configured for MDS Service execution. If you don’t remember it, you can just check which account has been assigned to the IIS application pool that your MDS website is using:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/davide_mauri/image_20B72F32.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/davide_mauri/image_thumb_177AF3F1.png" width="897" height="204" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>SQL Server 2012 RTM Available!</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2012/03/06/sql-server-2012-rtm-available.aspx</link><pubDate>Tue, 06 Mar 2012 22:34:28 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:42146</guid><dc:creator>manowar</dc:creator><description>&lt;p&gt;SQL Server 2012 is available for download! &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/sqlserver/en/us/default.aspx" href="http://www.microsoft.com/sqlserver/en/us/default.aspx"&gt;http://www.microsoft.com/sqlserver/en/us/default.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Evaluation version is available here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/download/en/details.aspx?id=29066" href="http://www.microsoft.com/download/en/details.aspx?id=29066"&gt;http://www.microsoft.com/download/en/details.aspx?id=29066&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;and along with the SQL Server 2012 RTM there’s also the Feature Pack available:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/download/en/details.aspx?id=29065" href="http://www.microsoft.com/download/en/details.aspx?id=29065"&gt;http://www.microsoft.com/download/en/details.aspx?id=29065&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Feature Pack is rich of useful and interesting stuff, something needed by some feature, like the Semantic Language Statistics Database some other a very good (I would say needed) download if you use certain technologies, like MDS or Data Mining. Btw, for Data Mining also the updated Excel Addin has been released and it’s available in the Feature Pack.&lt;/p&gt;  &lt;p&gt;As if this would not be enough, also the SQL Server Data Tools IDE has been released in RTM:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/data/hh297027" href="http://msdn.microsoft.com/en-us/data/hh297027"&gt;http://msdn.microsoft.com/en-us/data/hh297027&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Remember that SQL Server Data Tool is completely free and can be used with SQL Server 2005 and after.&lt;/p&gt;  &lt;p&gt;Happy downloading!&lt;/p&gt;</description></item><item><title>Execute a SSIS package in Sync or Async mode from SQL Server 2012</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2011/11/24/execute-a-ssis-package-in-sync-or-async-mode-from-sql-server-2012.aspx</link><pubDate>Thu, 24 Nov 2011 16:45:53 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:39975</guid><dc:creator>manowar</dc:creator><description>&lt;p&gt;Today I had to schedule a package stored in the shiny new SSIS Catalog store that can be enabled with SQL Server 2012. (&lt;a title="http://msdn.microsoft.com/en-us/library/hh479588(v=SQL.110).aspx" href="http://msdn.microsoft.com/en-us/library/hh479588(v=SQL.110).aspx"&gt;http://msdn.microsoft.com/en-us/library/hh479588(v=SQL.110).aspx&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;Once your packages are stored here, they will be executed using the new stored procedures created for this purpose. This is the script that will get executed if you try to execute your packages right from management studio or through a SQL Server Agent job, will be similar to the following:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Declare @execution_id bigint      &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;EXEC [SSISDB].[catalog].[create_execution] @package_name='my_package.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'BI', @project_name=N'DWH', @use32bitruntime=False, @reference_id=Null      &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Select @execution_id      &lt;br /&gt;DECLARE @var0 smallint = 1       &lt;br /&gt;EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,&amp;#160; @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0       &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;DECLARE @var1 bit = 0      &lt;br /&gt;EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,&amp;#160; @object_type=50, @parameter_name=N'DUMP_ON_ERROR', @parameter_value=@var1       &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;EXEC [SSISDB].[catalog].[start_execution] @execution_id      &lt;br /&gt;GO&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The problem here is that the procedure will simply start the execution of the package and will return as soon as the package as been &lt;em&gt;started…&lt;/em&gt;thus giving you the opportunity to execute packages asynchrously from your T-SQL code. This is just *great*, but what happens if I what to execute a package and WAIT for it to finish (and thus having a synchronous execution of it)? &lt;/p&gt;  &lt;p&gt;You have to be sure that you add the “SYNCHRONIZED” parameter to the package execution. Before the &lt;em&gt;start_execution &lt;/em&gt;procedure:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;exec [SSISDB].[catalog].[set_execution_parameter_value] @execution_id,&amp;#160; @object_type=50, @parameter_name=N'SYNCHRONIZED', @parameter_value=1&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;And that’s it &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://sqlblog.com/blogs/davide_mauri/wlEmoticon-smile_096E8EBA.png" /&gt;.&lt;/p&gt;  &lt;p&gt;PS&lt;/p&gt;  &lt;p&gt;From the RC0, the SYNCHRONIZED parameter is automatically added each time you schedule a package execution through the SQL Server Agent. If you’re using an external scheduler, just keep this post in mind &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://sqlblog.com/blogs/davide_mauri/wlEmoticon-smile_096E8EBA.png" /&gt;.&lt;/p&gt;</description></item><item><title>DAX editor for SQL Server</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2011/11/23/dax-editor-for-sql-server.aspx</link><pubDate>Wed, 23 Nov 2011 06:58:10 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:39948</guid><dc:creator>manowar</dc:creator><description>&lt;p&gt;One of the major criticism to DAX is the lack of a decent editor and more in general of a dedicated IDE, like the one we have for T-SQL or MDX.&lt;/p&gt;  &lt;p&gt;Well, this is no more true. On Codeplex a very interesting an promising Visual Studio 2010 extension has been released by the beginning of November 2011:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://daxeditor.codeplex.com/" href="http://daxeditor.codeplex.com/"&gt;http://daxeditor.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Intellisense, Syntax Highlighting and all the typical features offered by Visual Studio are available also for DAX.&lt;/p&gt;  &lt;p&gt;Right now you have to download the source code and compile it, and that’s it!&lt;/p&gt;</description></item></channel></rss>