<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Data Warehouse Support</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/apsblog/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/apsblog/feed.xml</link>
    <description>Posts coming from the team that supports the on premise (APS &amp;amp; PDW) and Azure Data Warehouse offerings</description>
    <lastBuildDate>Tue, 16 Apr 2019 04:41:26 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Login Problems with my Azure Active Directory Account to Azure SQL Data Warehouse</title>
      <link>https://docs.microsoft.com/archive/blogs/apsblog/login-problems-with-my-azure-active-directory-account-to-azure-sql-data-warehouse</link>
      <pubDate>Fri, 10 Aug 2018 04:24:25 GMT</pubDate>
      <dc:creator><![CDATA[Allan.Miller]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/apsblog/?p=635</guid>
      <description><![CDATA[From time to time, we on the Azure SQL Data Warehouse (ADW) support team get cases where a customer...]]></description>
      <content:encoded><![CDATA[From time to time, we on the Azure SQL Data Warehouse (ADW) support team get cases where a customer is having login problems related to their Azure Active Directory (AAD) account. Some of the problems could be from a bad password, a paused instance at the time of logon, etc., . . . and those are not what I really want to talk about it this article. AAD is a federated login which can be much more complicated depending on the configuration in play.

Most of the people I talk to don't care about AAD because they just want access to their data; so for those people, I will get to the answer as quickly as possible.
<h3>To The Point . . .</h3>
First, make sure your client firewall is allowing your client(s) to connect to all of the IP ranges in the Azure datacenters associated with your instance.

- All Azure datacenter IP ranges are updated WEEKLY and published on this link - <a href="https://www.microsoft.com/en-us/download/details.aspx?id=41653">https://www.microsoft.com/en-us/download/details.aspx?id=4165</a>

- To determine what datacenter ranges you need to add, see this link - <a href="https://docs.microsoft.com/en-us/azure/best-practices-availability-paired-regions">https://docs.microsoft.com/en-us/azure/best-practices-availability-paired-regions</a>

Let's say your ADW instance is in West US. This means that you need to add West US and East US datacenter IP ranges to your firewall allow list. Shared services like AAD (Azure Active Directory) will sometimes send authentication request to the paired data center.

If you want to know more about Azure Active Directory look <a href="https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/active-directory-architecture">here</a>.
<h3>How it works . . .</h3>
Now to answer the , "Why, when logging on to ADW, would I need to connect to an entirely different region to complete the process?" question that I know you were asking yourself . . . Take a look at this <a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/authentication-scenarios#diagram">diagram</a>; it explains most of it which I will detail below. Assume you are using something like SSMS to login to ADW and you just clicked Connect:
<ol>
 	<li>The first thing the client will do is connect directly to the ADW. Since the connection does not have an authorization token, it is redirected to AAD</li>
 	<li>Once the user is authenticated to AAD (SSMS is handling this process), a token is returned to the client</li>
 	<li>Now that the client has a valid token they (SSMS) will return to the ADW login and provide the token</li>
 	<li>Access is granted</li>
</ol>
The problem comes in when the client tries to get the token (Step 2) but is unable to connect to AAD. The error message from an application like SSMS may be that the connection was made but then disconnected. This is because a channel with ADW is in place when the token process is started, but the connection times out having never getting received a token so the login attempt fails.

Thanks to <a href="https://social.msdn.microsoft.com/profile/ScottEpperly">Scott</a> for assisting me with this post.

Allan]]></content:encoded>
    </item>
    <item>
      <title>How to create user-defined restore points on Azure SQL Data Warehouse</title>
      <link>https://docs.microsoft.com/archive/blogs/apsblog/how-to-create-user-defined-restore-points-on-azure-sql-data-warehouse</link>
      <pubDate>Fri, 29 Jun 2018 15:22:54 GMT</pubDate>
      <dc:creator><![CDATA[Joon Kyu Lee]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/apsblog/?p=615</guid>
      <description><![CDATA[Microsoft announced user-defined restore point on Azure SQL Data Warehouse.

This feature enables...]]></description>
      <content:encoded><![CDATA[Microsoft announced user-defined restore point on Azure SQL Data Warehouse.

This feature enables you to manually trigger snapshots to create restore points of your data warehouse before and after large modifications. This capability ensures that restore points are logically consistent which provides additional data protection in case of any workload interruptions or user errors for quick recovery time. User-defined restore points are available for seven days and are automatically deleted on your behalf. Only 42 user-defined restore points are supported at any point in time so they must be <a href="https://go.microsoft.com/fwlink/?linkid=875299">deleted</a> before creating another restore point. You can trigger snapshots to create user-defined restore points through <a href="https://docs.microsoft.com/powershell/module/azurerm.sql/new-azurermsqldatabaserestorepoint?view=azurermps-6.2.0#examples">PowerShell</a>.

Backup and restore in Azure SQL Data Warehouse.

<a href="https://docs.microsoft.com/en-us/azure/sql-data-warehouse/backup-and-restore">https://docs.microsoft.com/en-us/azure/sql-data-warehouse/backup-and-restore</a>

You can follow up below simple steps to utilize user-defined restore point.

<strong><u>Create user-defined restore point</u></strong>

1) Run powershell to create user-defined restore point.

$SubscriptionName="&lt;subscription id&gt;"

$ResourceGroupName="adwdbrg"

$ServerName="adwsv"

$DatabaseName="adwdb"

$RestorePointLabel="adwdb_restorepoint"

Connect-AzureRmAccount

Get-AzureRmSubscription

Select-AzureRmSubscription -SubscriptionName $SubscriptionName

#Create Restore point

New-AzureRmSqlDatabaseRestorePoint -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -RestorePointLabel $RestorePointLabel

2) Sign in with admin account.

3) You can see this output in powershell window when restore point is created.

ResourceGroupName        : adwdbrg

ServerName               : adwsv

DatabaseName             : adwdb

Location                 : Central US

RestorePointType         : DISCRETE

RestorePointCreationDate : 6/26/2018 4:45:44 AM

EarliestRestoreDate      :

RestorePointLabel        : adwdb_restorepoint

<strong><u>Restore database</u></strong>

1) Open SQL Server Management Studio and connect to user database ‘adwdb’. Run below query to check user-defined restore point.

select *

from sys.pdw_loader_backup_runs

where name = 'adwdb_restorepoint'

you can see that submit_time is ‘<strong>2018-06-26 04:45:44</strong>.023’

<img width="828" height="63" class="alignnone size-full wp-image-315" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/UserDefinedRestore-2.png" />

2) Click ‘Restore’ button on the ‘adwdb’ SQL data warehouse in Azure Portal.

<img width="512" height="271" class="alignnone size-full wp-image-325" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/UserDefinedRestore-3.png" />

3) Change database name and choose ‘<strong>2018-06-26 04:45:44’</strong> as Restore point (UTC). Click ‘OK’ to start restoring database.

<img width="312" height="547" class="alignnone size-full wp-image-335" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/UserDefinedRestore-4.png" />

4) New database (‘adwdb_restorepoint’) is created on same SQL Server.

<img width="530" height="280" class="alignnone size-full wp-image-345" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/UserDefinedRestore-5.png" />

<strong><u>Remove user-defined restore point</u></strong>

1) Run powershell to remove user-defined restore point.

$SubscriptionName="&lt;subscription id&gt;"

$ResourceGroupName="adwdbrg"

$ServerName="adwsv"

$DatabaseName="adwdb"

$RestorePointCreationDate = Get-Date "<strong>6/26/2018 4:45:44 AM</strong>"

Connect-AzureRmAccount

Get-AzureRmSubscription

Select-AzureRmSubscription -SubscriptionName $SubscriptionName

#Remove Restore point

Remove-AzureRmSqlDatabaseRestorePoint -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -RestorePointCreationDate $RestorePointCreationDate

2) Sign in with admin account.

3) You can see this output in PowerShell window when restore point is deleted.

ResourceGroupName        : adwdbrg

ServerName               : adwsv

DatabaseName             : adwdb

Location                 :

RestorePointType         :

RestorePointCreationDate : 6/26/2018 4:45:44 AM

EarliestRestoreDate      :

RestorePointLabel        :]]></content:encoded>
    </item>
    <item>
      <title>Azure SQL DW Performance: CTAS/Partition Switching VS UPDATE/DELETE</title>
      <link>https://docs.microsoft.com/archive/blogs/apsblog/azure-sql-dw-performance-ctaspartition-switching-vs-updatedelete</link>
      <pubDate>Mon, 18 Jun 2018 23:30:06 GMT</pubDate>
      <dc:creator><![CDATA[Tim Salch (MSFT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/apsblog/?p=585</guid>
      <description><![CDATA[DML operations can be resource intensive and harmful to CCI indexes in Azure SQL Data Warehouse. The...]]></description>
      <content:encoded><![CDATA[DML operations can be resource intensive and harmful to CCI indexes in Azure SQL Data Warehouse. The main performance benefit comes from UPDATE &amp; DELETE operations being fully logged and CTAS is minimally logged.  There is also advantages to recreating the CCI index VS modifying it with a DML statement.  The preferred method is to utilize a methodology of CTAS and partition switching in lieu of UPDATE and DELETE operations wherever possible. The below example shows the performance benefit of doing so.  We will be using TPCH 1TB dat set.

<strong>Example:</strong><ul>

The DW in use is a DW500 Gen 1
All statements were executed in xlrgRC
The business case here is we want to upgrade the shipping priority for all orders placed last week. For this example the week in question will be 1998-07-24 - 1998-07-31
We will be using the [orders] table with CCI, hash distributed on o_orderkey, and partitioned on o_orderdate by month.

DDL:

<code>
CREATE TABLE [dbo].[orders_part] (
[o_orderkey] bigint NULL,
[o_custkey] bigint NULL,
[o_orderstatus] char(1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[o_totalprice] decimal(15, 2) NULL,
[o_orderdate] date NULL,
[o_orderpriority] char(15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[o_clerk] char(15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[o_shippriority] int NULL,
[o_comment] varchar(79) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
)
WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = HASH([o_orderkey]),  PARTITION ([o_orderdate] RANGE RIGHT FOR VALUES ('Jan  1 1992', 'Feb  1 1992', 'Mar  1 1992', 'Apr  1 1992', 'May  1 1992', 'Jun  1 1992', 'Jul  1 1992', 'Aug  1 1992', 'Sep  1 1992', 'Oct  1 1992', 'Nov  1 1992', 'Dec  1 1992', 'Jan  1 1993', 'Feb  1 1993', 'Mar  1 1993', 'Apr  1 1993', 'May  1 1993', 'Jun  1 1993', 'Jul  1 1993', 'Aug  1 1993', 'Sep  1 1993', 'Oct  1 1993', 'Nov  1 1993', 'Dec  1 1993', 'Jan  1 1994', 'Feb  1 1994', 'Mar  1 1994', 'Apr  1 1994', 'May  1 1994', 'Jun  1 1994', 'Jul  1 1994', 'Aug  1 1994', 'Sep  1 1994', 'Oct  1 1994', 'Nov  1 1994', 'Dec  1 1994', 'Jan  1 1995', 'Feb  1 1995', 'Mar  1 1995', 'Apr  1 1995', 'May  1 1995', 'Jun  1 1995', 'Jul  1 1995', 'Aug  1 1995', 'Sep  1 1995', 'Oct  1 1995', 'Nov  1 1995', 'Dec  1 1995', 'Jan  1 1996', 'Feb  1 1996', 'Mar  1 1996', 'Apr  1 1996', 'May  1 1996', 'Jun  1 1996', 'Jul  1 1996', 'Aug  1 1996', 'Sep  1 1996', 'Oct  1 1996', 'Nov  1 1996', 'Dec  1 1996', 'Jan  1 1997', 'Feb  1 1997', 'Mar  1 1997', 'Apr  1 1997', 'May  1 1997', 'Jun  1 1997', 'Jul  1 1997', 'Aug  1 1997', 'Sep  1 1997', 'Oct  1 1997', 'Nov  1 1997', 'Dec  1 1997', 'Jan  1 1998', 'Feb  1 1998', 'Mar  1 1998', 'Apr  1 1998', 'May  1 1998', 'Jun  1 1998', 'Jul  1 1998', 'Aug  1 1998')));
</code>

To executed the update we simply run the following command:
<code>
UPDATE orders_part SET o_shippriority = 1 WHERE
o_orderdate BETWEEN  '1998-07-24' AND '1998-07-31'</code>

This statements completes in about 25 seconds and updates 4,987,237 rows

A CTAS + Partition switch process will look like the following

Step 1: Create a copy of the table with the data form the affected partition, in this case partition 79 with a right boundary value of July 1 1998

<code>--create a temp table with matching paritioning
--perform transformation here to avoid additional step
CREATE TABLE orders_part_switch_temp
WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = HASH([o_orderkey]),  PARTITION ([o_orderdate] RANGE RIGHT FOR VALUES ('Jan  1 1992', 'Feb  1 1992', 'Mar  1 1992', 'Apr  1 1992', 'May  1 1992', 'Jun  1 1992', 'Jul  1 1992', 'Aug  1 1992', 'Sep  1 1992', 'Oct  1 1992', 'Nov  1 1992', 'Dec  1 1992', 'Jan  1 1993', 'Feb  1 1993', 'Mar  1 1993', 'Apr  1 1993', 'May  1 1993', 'Jun  1 1993', 'Jul  1 1993', 'Aug  1 1993', 'Sep  1 1993', 'Oct  1 1993', 'Nov  1 1993', 'Dec  1 1993', 'Jan  1 1994', 'Feb  1 1994', 'Mar  1 1994', 'Apr  1 1994', 'May  1 1994', 'Jun  1 1994', 'Jul  1 1994', 'Aug  1 1994', 'Sep  1 1994', 'Oct  1 1994', 'Nov  1 1994', 'Dec  1 1994', 'Jan  1 1995', 'Feb  1 1995', 'Mar  1 1995', 'Apr  1 1995', 'May  1 1995', 'Jun  1 1995', 'Jul  1 1995', 'Aug  1 1995', 'Sep  1 1995', 'Oct  1 1995', 'Nov  1 1995', 'Dec  1 1995', 'Jan  1 1996', 'Feb  1 1996', 'Mar  1 1996', 'Apr  1 1996', 'May  1 1996', 'Jun  1 1996', 'Jul  1 1996', 'Aug  1 1996', 'Sep  1 1996', 'Oct  1 1996', 'Nov  1 1996', 'Dec  1 1996', 'Jan  1 1997', 'Feb  1 1997', 'Mar  1 1997', 'Apr  1 1997', 'May  1 1997', 'Jun  1 1997', 'Jul  1 1997', 'Aug  1 1997', 'Sep  1 1997', 'Oct  1 1997', 'Nov  1 1997', 'Dec  1 1997', 'Jan  1 1998', 'Feb  1 1998', 'Mar  1 1998', 'Apr  1 1998', 'May  1 1998', 'Jun  1 1998', 'Jul  1 1998', 'Aug  1 1998')))
AS SELECT 
    [o_orderkey] , 
    [o_custkey] , 
    [o_orderstatus] , 
    [o_totalprice] , 
    [o_orderdate] , 
    [o_orderpriority] , 
    [o_clerk]  , 
    CASE WHEN o_orderdate  BETWEEN  '1998-07-24' AND '1998-07-31' THEN 1 ELSE 0 END AS CHAR(15) AS [o_shippriority], 
    [o_comment]
FROM dbo.orders_part_switch
WHERE o_orderdate BETWEEN '1998-07-01' AND '1998-07-31'</code>

This statement writes 19M rows to the stage table.

Next we swap our updated partition with the original partition which is a metadata operation and no data is actually moved.

<code>ALTER TABLE orders_part_switch_temp  SWITCH PARTITION 80 TO orders_part_switch partition 80 WITH (TRUNCATE_TARGET = ON) </code>

Then finally drop our stage table

<code>DROP TABLE orders_part_switch_temp</code>

This batch runs in about 11 seconds, half of the time as the UPDATE statement.


<strong><ul>
Summary:</ul></strong>


Due to CCI overhead and transaction log usage, CTAS w/partition switching may be more performant than using an UPDATE statement.  Since the CCI is per partition you also will not decrement the CCI health like an UPDATE statement would.  

UPDATE Statement: 24 Seconds
CTAS &amp; Partition Switch: 12 seconds

<strong><ul>
Gotchas</ul></strong>

The schema needs to be exactly the same between the source and staging table
You must utilize partitioning and the updates be limited to one or few partitions.  The more partitions that are updated the less advantageous this approach will be.  


<a href="https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-partition#partition-switching">More Info</a>
]]></content:encoded>
    </item>
    <item>
      <title>Azure SQL Data Warehouse SQL Operations Studio Extension Available</title>
      <link>https://docs.microsoft.com/archive/blogs/apsblog/azure-sql-data-warehouse-sql-operations-studio-extension-available</link>
      <pubDate>Thu, 07 Jun 2018 21:00:21 GMT</pubDate>
      <dc:creator><![CDATA[Tim Salch (MSFT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/apsblog/?p=575</guid>
      <description><![CDATA[In may the engineering team for Azure SQL Data Warehouse announced integration with SQL Operations...]]></description>
      <content:encoded><![CDATA[In may the engineering team for Azure SQL Data Warehouse announced <a href="https://azure.microsoft.com/en-us/blog/extract-management-insights-from-sql-data-warehouse-with-sql-operations-studio/">integration with SQL Operations Studio</a>.  Now they have released a preview of an extension that contains pre built dashboards to monitor you Data Warehouse instances! Today you can monitor data skew, ColumnStore index health, and system resource usage.  We expect more scenarios to be added over time so check back!  


To get started:


•	<a href="https://docs.microsoft.com/en-us/sql/sql-operations-studio/download?view=sql-server-2017">Download SQL Operations Studio</a>
•	<a href="https://docs.microsoft.com/en-us/sql/sql-operations-studio/extensions?view=sql-server-2017">Access Extensions Manager</a> and install ‘Azure SQL Data Warehouse Insights’
•	Click reload and <a href="https://docs.microsoft.com/en-us/sql/sql-operations-studio/quickstart-sql-dw?view=sql-server-2017">Connect to SQL DW server</a>.
•	Right click on server and click ‘Manage.’ Click on DW Tab to see your insights!

Be sure to provide your <a href="https://github.com/Microsoft/sql-data-warehouse-samples/issues">feedback</a>!]]></content:encoded>
    </item>
    <item>
      <title>APS AU7 Performance Enhancements</title>
      <link>https://docs.microsoft.com/archive/blogs/apsblog/aps-au7-performance-enhancements</link>
      <pubDate>Wed, 30 May 2018 19:13:32 GMT</pubDate>
      <dc:creator><![CDATA[Tim Salch (MSFT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/apsblog/?p=565</guid>
      <description><![CDATA[Appliance Update 7 (AU7) for Microsoft's Analytic Platform System (APS) brings with it a couple of...]]></description>
      <content:encoded><![CDATA[Appliance Update 7 (AU7) for Microsoft's Analytic Platform System (APS) brings with it a couple of much anticipated performance enhancements.  

The first is through new functionality by enabling AUTO UPDATE and AUTO CREATE statistics for appliance level stats objects. We always had auto stats on the compute nodes for the local SQL instances to utilize, however the process of aggregating the stats to the CTL node to be used by the MPP Query optimizer could only be triggered by a manual update or create, until now. All new databases created will have both AUTO CREATE and AUTO UPDATE stats on by default. These features can be enabled for existing databases through <a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-parallel-data-warehouse">ALTER DATABASE</a> commands.  

Historically the number one root cause for performance issues is inaccurate statistics objects causing the optimizer to make poor cardinality estimations and therefore expensive or even unnecessary data movement operations.  We recommend auto create and auto update statistics be enabled for both new and pre-existing databases.  If performance is or becomes a concern, the first remediation step should be to enable auto create and auto update statistics on the database, clear the procedure cache and re-run the workload.  If there is no benefit realized or in the rare case of performance regression, the statistics objects created can be dropped through T-SQL commands.  

The second performance enhancement is transparent.  In the process of working with many customers after APS 2016 (AU6) deployments, we identified opportunities to streamline our internal process of authorization and plan generation. The gains will be most noticeable on workloads which contain many small queries that run in several seconds or less. Testing has shown performance benefits form minimal to significant depending on the workload and number of statements executed. If your workload includes many short lived queries we recommend upgrading to AU7 to take advantage of the increased efficiencies.  ]]></content:encoded>
    </item>
    <item>
      <title>SET IMPLICIT_TRANSACTIONS Behavior On Azure SQL Data Warehouse and APS</title>
      <link>https://docs.microsoft.com/archive/blogs/apsblog/set-implicit_transactions-behavior-on-azure-sql-data-warehouse-and-aps</link>
      <pubDate>Tue, 20 Feb 2018 20:11:41 GMT</pubDate>
      <dc:creator><![CDATA[ScottEpperly]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/apsblog/?p=505</guid>
      <description><![CDATA[Working with transactions in Azure SQL Data Warehouse (ADW) and the Analytics Platform System (APS,...]]></description>
      <content:encoded><![CDATA[Working with transactions in Azure SQL Data Warehouse (ADW) and the Analytics Platform System (APS, aka PDW) is a bit different than one would expect.  Though most of us tend to operate under the default behavior with IMPLICIT_TRANSACTIONS OFF, developers that interact with ADW/APS using other languages may find transaction handling using their language constructs to not work as expected.

<h1>Before we begin . . .</h1>
Let's first consider the following sample Java program:

[java]import java.sql.*;  

public class TrxTest {  
   public static void main(String[] args) {  
		// Create a variable for the connection string.  
		//String connectionUrl = &quot;jdbc:sqlserver://localhost;instanceName=SQL2016;databaseName=SmpHotnessDB;user=SmpUser;password=*****&quot;;
		String connectionUrl = &quot;jdbc:sqlserver://MppHotnessServer.database.windows.net;databaseName=MppHotnessDB;user=MppUser;password=*****&quot;;

		// Declare the JDBC objects.  
		Connection connection = null;  
		Statement statement = null;  
		ResultSet rs = null;  

		try {
		// Establish the connection.  
		Class.forName(&quot;com.microsoft.sqlserver.jdbc.SQLServerDriver&quot;);  
		connection = DriverManager.getConnection(connectionUrl);
		 
		statement = connection.createStatement();
		statement.execute(&quot;CREATE TABLE dbo.transaction_001 (id INT)&quot;);
		statement.execute(&quot;INSERT INTO dbo.transaction_001 (id) VALUES (1)&quot;);

		// Try one transaction
		// BEGIN TRANSACTION
		connection.setAutoCommit(false);
		statement.execute(&quot;DELETE FROM dbo.transaction_001 WHERE id = 1&quot;);
		statement.execute(&quot;INSERT INTO dbo.transaction_001 (id) VALUES (10)&quot;);
		connection.commit();
		connection.setAutoCommit(true);
		// END TRANSACTION

		// Following statement fails with &quot;Operation cannot be performed within a transaction&quot;
		statement.execute(&quot;CREATE TABLE dbo.transaction_001_new (id INT)&quot;);
      }  

      // Handle any errors that may have occurred.  
      catch (Exception e) {  
         e.printStackTrace();  
      }  
      finally {  
         if (statement != null) try { statement.close(); } catch(Exception e) {}  
         if (connection != null) try { connection.close(); } catch(Exception e) {}  
      }  
   }  
}[/java]

Assuming you have both an SMP instance and an MPP (ADW/APS) instance handy, you can run the above and switch between the two platforms to test the differences.  When running against an SMP instance, everything works as one would expect.  However, when executing against ADW/APS, you receive the following error:

<a href="https://msdnshared.blob.core.windows.net/media/2018/02/4B01A2A7.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/02/4B01A2A7.png" alt="JavaError" width="876" height="190" class="alignnone size-full wp-image-535" /></a>

<h1>What's Happenin'</h1>
The error you receive from ADW/APS is due to an enforced restriction on these platforms.  You are likely familiar with (and perhaps frustrated by) the fact that DDL operations can't be wrapped in a transaction.  Regardless, this error is admittedly confusing because the setAutoCommit(true) method should have committed any open transactions, leaving the open transaction count at 0.  Though SMP cleans up when the connection.setAutoCommit(true) statement is issued, ADW/APS doesn't (exactly).  In short, this is because ADW/APS will immediately open a transaction following a SET IMPLICIT_TRANSACTIONS ON statement; more than this, ADW/APS will start a new transaction even after a COMMIT TRAN is issued when IMPLICIT_TRANSACTIONS is ON.  As such, ADW/APS perpetually maintains a transaction count of (at least) 1 while IMPLICIT_TRANSACTIONS is ON.  To contrast, SMP won't issue a new transaction until a new DML or DDL statement is issued after the COMMIT TRAN statement.  You can test this behavior by issuing the following statements (which are effectively what the Java program sends to the database with some insert SELECT @@TRANCOUNT statements) one at a time against each different platform:

[sql]SELECT @@TRANCOUNT

CREATE TABLE dbo.transaction_001 (id INT)
INSERT INTO dbo.transaction_001 (id) VALUES (1)
SELECT @@TRANCOUNT

set implicit_transactions on;
SELECT @@TRANCOUNT

DELETE FROM dbo.transaction_001 WHERE id = 1
INSERT INTO dbo.transaction_001 (id) VALUES (10)
SELECT @@TRANCOUNT

IF @@TRANCOUNT &gt; 0 COMMIT TRAN
SELECT @@TRANCOUNT

IF @@TRANCOUNT &gt; 0 COMMIT TRAN
SELECT @@TRANCOUNT

set implicit_transactions off
SELECT @@TRANCOUNT

CREATE TABLE dbo.transaction_001_new (id INT)
SELECT @@TRANCOUNT
[/sql]

<h1>Make It Right</h1>
This difference in behavior complicates existing coding patterns against SQL Server SMP when applied to ADW/APS because a manual COMMIT TRAN must be issued in order to properly close out a transaction even after setAutoCommit(true) is executed:

[java]
// BEGIN TRANSACTION
connection.setAutoCommit(false);
statement.execute(&quot;DELETE FROM dbo.transaction_001 WHERE id = 1&quot;);
statement.execute(&quot;INSERT INTO dbo.transaction_001 (id) VALUES (10)&quot;);
connection.commit();
connection.setAutoCommit(true);
statement.execute(&quot;if @@trancount &gt; 0 commit tran&quot;);
// END TRANSACTION
[/java]

When this is in place, IMPLICIT_TRANSACTIONS is OFF and all open transactions have been properly closed.

<h1>Before We're done - IMHO . . .</h1>
One could argue that the behavior of setAutoCommit(true) could be improved to issue the following:
[sql]IF @@TRANCOUNT &gt; 0 COMMIT TRAN
set implicit_transactions off
IF @@TRANCOUNT &gt; 0 COMMIT TRAN
[/sql]

Instead of:

[sql]IF @@TRANCOUNT &gt; 0 COMMIT TRAN
IF @@TRANCOUNT &gt; 0 COMMIT TRAN
set implicit_transactions off
[/sql]

Alas, it doesn't . . . so you have to account for this.  And this is the point: you can't necessarily always control how a given package/library/API implements its transaction control with a database; such is the case in the above scenario.  However, you can better control transactions in ADW/APS if you:
<ol>
<li>Leave IMPLICIT_TRANSACTIONS = OFF (aka, setAutoCommit(true)) and</li>
<li>Utilize stored procedures to manage transactions rather than do it from another language's implementation</li>
</ol>

<h2>Helpful Links</h2>
<a href="https://docs.microsoft.com/en-us/sql/connect/jdbc/reference/setautocommit-method-sqlserverconnection" rel="noopener" target="_blank">https://docs.microsoft.com/en-us/sql/connect/jdbc/reference/setautocommit-method-sqlserverconnection</a>
<a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/set-implicit-transactions-transact-sql" rel="noopener" target="_blank">https://docs.microsoft.com/en-us/sql/t-sql/statements/set-implicit-transactions-transact-sql</a>
<a href="https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url" rel="noopener" target="_blank">https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url</a>

<em>Thanks to my technical reviewers: <a href="https://social.msdn.microsoft.com/profile/Allan.Miller" rel="noopener" target="_blank">Allan Miller</a> &amp; <a href="https://social.msdn.microsoft.com/profile/Charl+Roux" rel="noopener" target="_blank">Charl Roux</a></em>]]></content:encoded>
    </item>
    <item>
      <title>Azure Resource Manager (ARM) and Azure SQL Data Warehouse</title>
      <link>https://docs.microsoft.com/archive/blogs/apsblog/azure-resource-manager-arm-and-azure-sql-data-warehouse</link>
      <pubDate>Wed, 14 Feb 2018 03:36:09 GMT</pubDate>
      <dc:creator><![CDATA[Allan.Miller]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/apsblog/?p=485</guid>
      <description><![CDATA[Having worked with many customers doing ARM deployments, I've found it is not always clear how to...]]></description>
      <content:encoded><![CDATA[Having worked with many customers doing ARM deployments, I've found it is not always clear how to create a good template when deploying an Azure SQL Data Warehouse.

Here is an example implementation created for testing:

<code>{
"$schema": "<a href="https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#">https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#</a>",
"contentVersion": "1.0.0.0",
"parameters": {
"serverName": {
"type": "string",
"minLength": 1
},
"serverAdminLogin": {
"type": "string",
"minLength": 1
},
"serverAdminLoginPassword": {
"type": "securestring"
},
"databaseName": {
"type": "string",
"minLength": 1
},
"databaseCollation": {
"type": "string",
"minLength": 1,
"defaultValue": "SQL_Latin1_General_CP1_CI_AS"
},
"databaseEdition": {
"type": "string",
"defaultValue": "DataWarehouse",
"allowedValues": [
"DataWarehouse"
]
},
"RequestedServiceObjectiveName": {
"type": "string",
"defaultValue": "DW100",
"allowedValues": [
"DW100"
],
"metadata": {
"description": "Describes the performance level for Edition"
}
}
},
"variables": {
"dwserverName": "[concat(parameters('serverName'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"name": "[variables('dwserverName')]",
"type": "Microsoft.Sql/servers",
"location": "[resourceGroup().location]",
"apiVersion": "2014-04-01-preview",
"dependsOn": [ ],
"properties": {
"administratorLogin": "[parameters('serverAdminLogin')]",
"administratorLoginPassword": "[parameters('serverAdminLoginPassword')]"
},
"resources": [
{
"name": "AllowAllWindowsAzureIps",
"type": "firewallrules",
"location": "[resourceGroup().location]",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', variables('dwserverName'))]"
],
"properties": {
"startIpAddress": "0.0.0.0",
"endIpAddress": "0.0.0.0"
}
},
{
"name": "[parameters('databaseName')]",
"type": "databases",
"location": "[resourceGroup().location]",
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', variables('dwserverName'))]"
],
"properties": {
"collation": "[parameters('databaseCollation')]",
"edition": "[parameters('databaseEdition')]",
"requestedServiceObjectiveName": "[parameters('RequestedServiceObjectiveName')]"
}
}
]
}],
"outputs": {}
}</code>

<b>Editing a Template</b>
I have to recommend you either use <a href="https://code.visualstudio.com/">Visual Studio Code</a> or <a href="https://www.visualstudio.com/vs/">Visual Studio 2017</a>. You can install Azure Resource Manager Tools in VSCode while Visual Studio with Azure Tools installed has the Azure Resource Group project type with a JSON Outline that helps when editing the template.

When modifying the template, it is important to know the <a href="https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/servers">Microsoft.Sql/Servers</a> settings and the <a href="https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/servers/databases">database</a> settings. The audit settings that can be specified with an Azure SQL DB are not supported on Azure SQL Data Warehouse. The settings are not supported because they are for Blob auditing and at the time of this writing, the Azure SQL Data Warehouse only supports table auditing.

The template will almost always be accompanied with a parameters JSON file that will store the standard values for your deployment. If you have more than one environment, you can have more than one parameter file and specify which one you want depending on where you are deploying. An easy way to think about this is Development, Test, and Production will each have a different parameters file that would detail the server, Resource Group and Data Warehouse for that environment. Below is an example parameter file.

&nbsp;

<code>{
"$schema": "<a href="https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#">https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#</a>",
"contentVersion": "1.0.0.0",
"parameters": {
"databaseCollation": {
"value": "SQL_Latin1_General_CP1_CI_AS"
},
"databaseEdition": {
"value": "DataWarehouse"
},
"databaseName": {
"value": "dwarmtestdb"
},
"RequestedServiceObjectiveName": {
"value": "DW100"
},
"serverAdminLogin": {
"value": "dwadmin"
}
}
}</code>

&nbsp;

&nbsp;

<b>Troubleshooting Your Template Deployment</b>

When things go wrong with your template deployment, it can be a very unsettling experience. If you used PowerShell <a href="https://docs.microsoft.com/en-us/powershell/module/azurerm.resources/new-azurermresourcegroupdeployment">New-AzureRMResourceGroupDeployment</a> as your deployment method, the error is provided as part of the result. One of the best things I have found to help in working with the templates is in the <a href="https://portal.azure.com/">Azure Portal</a> by navigating to the Resource Group in question and looking at the Deployments blade. In the Deployments blade, you can see the successful and failed deployments with details as with the screenshot below.

<a href="https://msdnshared.blob.core.windows.net/media/2018/02/ArmMaxSize.png"><img width="300" height="165" class="alignnone size-medium wp-image-495" alt="ArmMaxSize" src="https://msdnshared.blob.core.windows.net/media/2018/02/ArmMaxSize-300x165.png" /></a>

You can see that using deploying a Data Warehouse, the max size property does not appear to be supported or will need match a MAXSIZE of the <a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/create-database-azure-sql-data-warehouse">CREATE DATABASE</a> statement, though I was not able to get it to work with any values. I recommend if you need to create an Azure SQL Data Warehouse of a specific size, use the CREATE DATABASE statement.

Have fun deploying!]]></content:encoded>
    </item>
    <item>
      <title>Performance: Evaluate Data Skew</title>
      <link>https://docs.microsoft.com/archive/blogs/apsblog/performance-evaluate-data-skew</link>
      <pubDate>Fri, 19 Jan 2018 23:49:10 GMT</pubDate>
      <dc:creator><![CDATA[Tim Salch (MSFT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/apsblog/?p=475</guid>
      <description><![CDATA[This topic applies to both Azure SQL Data Warehouse and Analytic Platform System

Data skew occurs...]]></description>
      <content:encoded><![CDATA[This topic applies to both Azure SQL Data Warehouse and Analytic Platform System

Data skew occurs when one distribution has more data than others.  When data is inserted into a distributed table, each row will be assigned and sent to a distribution for storage.  The distribution a row is sent to is decided by applying a hash algorithm to the value in the distribution column specified at table creation.  The same value will always go to the same distribution.  

Skew comes into play when the data has a small portion of values that have a large number of duplicates.  While you are able to utilize <span>DBCC PDW_SHOWSPACEUSED ( " [ database_name . [ schema_name ] . ] | [ schema_name .] table_name  " )  </span> to get the row count per distribution, it will not give you insight into the density of the data.  If you want to see the actual values the data is skewed on, you can run the following query against the instance:

&nbsp;

<code>SELECT Count([distribution_column]) AS [Row Count],
[distribution_column]
FROM [table_name] group by [distribution_column]
ORDER BY [Row Count] DESC</code>

&nbsp;

If there is a large disparity in the row counts for a couple of values, the distributions those land on will have skew.  You will have to decide if this skew is acceptable for your application.  In general we say 20% is acceptable.  ]]></content:encoded>
    </item>
    <item>
      <title>How To: Move your Azure Data Warehouse to a new region and/or subscription</title>
      <link>https://docs.microsoft.com/archive/blogs/apsblog/how-to-move-your-azure-data-warehouse-to-a-new-region-andor-subscription</link>
      <pubDate>Thu, 14 Dec 2017 01:15:41 GMT</pubDate>
      <dc:creator><![CDATA[Tim Salch (MSFT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/apsblog/?p=445</guid>
      <description><![CDATA[This post applies to Azure SQL Data Warehouse

The functionality currently does not exist to move...]]></description>
      <content:encoded><![CDATA[This post applies to <a href="https://docs.microsoft.com/en-us/azure/sql-data-warehouse/">Azure SQL Data Warehouse</a>

The functionality currently does not exist to move your Azure SQL Data Warehouse instance to a subscription other than the one it was created under.  What you can do is move the server that contains the instance to another subscription or resource group.  Moving a server will move all SQL Databases owned by that server to the destination subscription.  The only limitation is both subscriptions must exist within the same Active Directory Tenant.  The link below stats how to determine what tenant a resource belongs to.

&nbsp;

The process will be slightly different depending on if you are simply moving an existing DW instance to a different subscription or if you wish to create a copy or if you wish to move across regions.

Process
<ol>
 	<li style="padding-left: 30px">To move an existing server and Data Warehouse to a new subscription without changing region simply follow the instructions <a href="https://docs.microsoft.com/en-gb/azure/azure-resource-manager/resource-group-move-resources">here</a></li>
 	<li style="padding-left: 30px">To create a copy of an existing Data Warehouse or Move the Data Warehouse to a new region you will need to add in a geo-restore of the instance
<ol>
 	<li>Restore the Data Warehouse to a new server in the same subscription in the desired region</li>
 	<li><a href="https://docs.microsoft.com/en-gb/azure/azure-resource-manager/resource-group-move-resources">Move </a>the new server owning the Data Warehouse to the desired subscription</li>
</ol>
</li>
</ol>
&nbsp;

If you have any issues with this approach feel free to contact us @ <a href="https://portal.azure.com/#blade/Microsoft_Azure_Support/HelpAndSupportBlade/overview">support</a> any time!

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Performance: Investigate Inconsistent Query Execution Times</title>
      <link>https://docs.microsoft.com/archive/blogs/apsblog/pdw-performance-investigate-inconsistent-query-execution-times</link>
      <pubDate>Thu, 22 Jun 2017 18:16:11 GMT</pubDate>
      <dc:creator><![CDATA[Tim Salch (MSFT)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/apsblog/?p=365</guid>
      <description><![CDATA[This post applies to both APS and Azure SQL DW

&nbsp;

There is a reasonable expectation that...]]></description>
      <content:encoded><![CDATA[This post applies to both APS and Azure SQL DW

&nbsp;

There is a reasonable expectation that if a query is executed in a controlled environment multiple times it will have minimal variance in total execution time when no changes are made to the system, data or query.  When a variance is experienced it should be investigated to find the cause.  In my experience with PDW a variance of less than 5% is not necessarily an indication of an underlying issue unless there are other contributing factors to make one believe so.

Any experienced variance could be due to a changes to the data, changes to the query, or concurrent workload.  Its best to start with the basics.   First confirm the query itself is indeed identical to previous runs.  The slightest change such as adding or removing columns in the select list or a slight change in predicate can have a significant impact on query performance.

Next I like to look at the two extremes as it will be the easiest to find the differences.  Pick the fastest and slowest execution you can find.  First check to make sure the query was not suspended waiting on any resource locks.  Details can be found in <a href="https://blogs.msdn.microsoft.com/apsblog/2015/09/30/apspdw-query-performance-lock-status/">this</a> post.

If the two executions had similar wait times for concurrency and object locks, next you need to drill into the execution of the query.

<span style="color: #000000;font-family: Calibri">Compare the overall execution for different runs of the same query: </span>

<code><span style="color: #0000ff;font-family: Courier New;font-size: small">SELECT</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">step_index</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">operation_type</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small">                           </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast_total</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small">                           </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">slow_total</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">-</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">time_delta</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">row_count</span><span style="font-family: Courier New;font-size: small">                                    </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast_row_count</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">row_count</span><span style="font-family: Courier New;font-size: small">                                    </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">slow_row_count</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">row_count</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">-</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">row_count</span><span style="font-family: Courier New;font-size: small">                   </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">row_count_delta</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">FROM</span><span style="font-family: Courier New;font-size: small">   </span><span style="color: maroon;font-family: Courier New;font-size: small">(</span><span style="color: blue;font-family: Courier New;font-size: small">SELECT</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">*</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">FROM</span><span style="font-family: Courier New;font-size: small">   </span><span style="color: maroon;font-family: Courier New;font-size: small">sys</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">dm_pdw_request_steps</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">WHERE</span><span style="font-family: Courier New;font-size: small">  </span><span style="color: maroon;font-family: Courier New;font-size: small">request_id</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: red;font-family: Courier New;font-size: small">'&lt;fast_request_id&gt;'</span><span style="color: maroon;font-family: Courier New;font-size: small">)</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">INNER</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: blue;font-family: Courier New;font-size: small">JOIN</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">(</span><span style="color: blue;font-family: Courier New;font-size: small">SELECT</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">*</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">FROM</span><span style="font-family: Courier New;font-size: small">   </span><span style="color: maroon;font-family: Courier New;font-size: small">sys</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">dm_pdw_request_steps</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">WHERE</span><span style="font-family: Courier New;font-size: small">  </span><span style="color: maroon;font-family: Courier New;font-size: small">request_id</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: red;font-family: Courier New;font-size: small">'&lt;slow_request_id&gt;'</span><span style="color: maroon;font-family: Courier New;font-size: small">)</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">ON</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">step_index</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">step_index</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">ORDER</span><span style="font-family: Courier New;font-size: small">  </span><span style="color: blue;font-family: Courier New;font-size: small">BY</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">step_index</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: blue;font-family: Courier New;font-size: small">ASC</span><span style="font-family: Courier New;font-size: small">  </span>
</code>

&nbsp;

<span style="color: #000000;font-family: Calibri">The operation list should be identical between two identical queries.  Pick the operation with the most variance and compare between two request_ids.  Depending on the type of operation will determine which DMV will have the appropriate data:</span>

<span style="color: #000000;font-family: Calibri"> </span><span style="color: #000000;font-family: Calibri">Data movement step:</span>

<span> </span>

<span style="color: #0000ff;font-family: Courier New;font-size: small">SELECT</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">pdw_node_id</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">distribution_id</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">type</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small">                           </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast_time_total</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small">                           </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">slow__time_total</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">-</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">time_delta</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">rows_processed</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">-</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">rows_processed</span><span style="font-family: Courier New;font-size: small">         </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">row_count_delta</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">cpu_time</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">-</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">cpu_time</span><span style="font-family: Courier New;font-size: small">                     </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">CPU_time_delta</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">query_time</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">-</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">query_time</span><span style="font-family: Courier New;font-size: small">                 </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">query_time_delta</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">bytes_processed</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">-</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">bytes_processed</span><span style="font-family: Courier New;font-size: small">       </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">bytes_processed_delta</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">FROM</span><span style="font-family: Courier New;font-size: small">   </span><span style="color: maroon;font-family: Courier New;font-size: small">(</span><span style="color: blue;font-family: Courier New;font-size: small">SELECT</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">*</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">FROM</span><span style="font-family: Courier New;font-size: small">   </span><span style="color: maroon;font-family: Courier New;font-size: small">sys</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">dm_pdw_dms_workers</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">WHERE</span><span style="font-family: Courier New;font-size: small">  </span><span style="color: maroon;font-family: Courier New;font-size: small">request_id</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: red;font-family: Courier New;font-size: small">'&lt;fast query id&gt;'</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">AND</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">step_index</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> &lt;step index&gt;</span><span style="color: maroon;font-family: Courier New;font-size: small">)</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">FAST</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">INNER</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: blue;font-family: Courier New;font-size: small">JOIN</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">(</span><span style="color: blue;font-family: Courier New;font-size: small">SELECT</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">*</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">FROM</span><span style="font-family: Courier New;font-size: small">   </span><span style="color: maroon;font-family: Courier New;font-size: small">sys</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">dm_pdw_dms_workers</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">WHERE</span><span style="font-family: Courier New;font-size: small">  </span><span style="color: maroon;font-family: Courier New;font-size: small">request_id</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: red;font-family: Courier New;font-size: small">'&lt;slow query id&gt;'</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">AND</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">step_index</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> &lt;step_index&gt;</span><span style="color: maroon;font-family: Courier New;font-size: small">)</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">SLOW</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">ON</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">FAST</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">pdw_node_id</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">pdw_node_id</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">AND</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">distribution_id</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">distribution_id</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">AND</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">type</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">type</span><span style="font-family: Courier New;font-size: small">  </span>

&nbsp;

<span> </span>

<span style="color: #000000;font-family: Calibri">Other operation:</span>

<span style="color: #0000ff;font-family: Courier New;font-size: small">SELECT</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">step_index</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">pdw_node_id</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">distribution_id</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small">                           </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast_time</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small">                           </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">slow_time</span><span style="color: silver;font-family: Courier New;font-size: small">,</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">-</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">total_elapsed_time</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: blue;font-family: Courier New;font-size: small">AS</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">time_delta</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">FROM</span><span style="font-family: Courier New;font-size: small">   </span><span style="color: maroon;font-family: Courier New;font-size: small">(</span><span style="color: blue;font-family: Courier New;font-size: small">SELECT</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">*</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">FROM</span><span style="font-family: Courier New;font-size: small">   </span><span style="color: maroon;font-family: Courier New;font-size: small">sys</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">dm_pdw_sql_requests</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">WHERE</span><span style="font-family: Courier New;font-size: small">  </span><span style="color: maroon;font-family: Courier New;font-size: small">request_id</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: red;font-family: Courier New;font-size: small">'&lt;fast query id&gt;'</span><span style="color: maroon;font-family: Courier New;font-size: small">)</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">INNER</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: blue;font-family: Courier New;font-size: small">JOIN</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">(</span><span style="color: blue;font-family: Courier New;font-size: small">SELECT</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">*</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">FROM</span><span style="font-family: Courier New;font-size: small">   </span><span style="color: maroon;font-family: Courier New;font-size: small">sys</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">dm_pdw_sql_requests</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">WHERE</span><span style="font-family: Courier New;font-size: small">  </span><span style="color: maroon;font-family: Courier New;font-size: small">request_id</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: red;font-family: Courier New;font-size: small">'&lt;slow query id&gt;'</span><span style="color: maroon;font-family: Courier New;font-size: small">)</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="font-family: Courier New;font-size: small">
</span><span style="color: blue;font-family: Courier New;font-size: small">ON</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">fast</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">distribution_id</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: silver;font-family: Courier New;font-size: small">=</span><span style="font-family: Courier New;font-size: small"> </span><span style="color: maroon;font-family: Courier New;font-size: small">slow</span><span style="color: silver;font-family: Courier New;font-size: small">.</span><span style="color: maroon;font-family: Courier New;font-size: small">distribution_id</span><span style="font-family: Courier New;font-size: small">  </span>

&nbsp;

<span> </span>

<span style="color: #000000;font-family: Calibri">Pay attention to start and end times for each distribution as well as rows and bytes processed to look for any discrepancies.  Concurrency can significantly impact performance by creating a bottleneck on a system resource but will not be evident in these results.  It is always best to baseline a query with no concurrent executions if possible.  </span>

&nbsp;

&nbsp;

The goal of this article is not to identify a specific reason query execution times vary, but rather how to access the data detailing the execution and identify areas which require further investigation.  Once an anomaly is identified, further investigation may be needed.

&nbsp;]]></content:encoded>
    </item>
  </channel>
</rss>