<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">ashush</title><subtitle type="html" /><id>http://blogs.msdn.com/b/ashush/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/ashush/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/ashush/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2012-11-25T13:54:19Z</updated><entry><title>How to get started with performance tuning of SSIS packages</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/ashush/archive/2013/01/14/how-to-get-started-with-performance-tuning-of-ssis-packages.aspx" /><id>http://blogs.msdn.com/b/ashush/archive/2013/01/14/how-to-get-started-with-performance-tuning-of-ssis-packages.aspx</id><published>2013-01-14T19:51:00Z</published><updated>2013-01-14T19:51:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: #000000;"&gt;Well if you are a DBA and one fine day you get notified that SSIS packages have started performing slowly. Here is how to get started with finding the bottleneck and pointing the possible cause of sudden performance problem&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&amp;nbsp; &lt;span style="color: #2e74b5;"&gt;SSIS native logging:&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="color: #000000; font-family: arial,helvetica,sans-serif;"&gt;&amp;nbsp;&lt;code&gt;First of all you need to learn how to enable SSIS native logging. This involves some changes to current package. So take the backup of your package if you are dealing with slowness in production environment. This way you could also revert the logging once you are done debugging the performance problem.&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;span style="color: #000000;"&gt;&lt;code&gt;Next step is enabling the logging for SSIS package. Here are couple of articles to help&lt;/code&gt;&lt;code&gt; you:&lt;/code&gt;&lt;/span&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;code&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms140246.aspx"&gt;&lt;span style="color: #0563c1;"&gt;http://msdn.microsoft.com/en-us/library/ms140246.aspx&lt;/span&gt;&lt;/a&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;code&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms138020(v=sql.105).aspx"&gt;&lt;span style="color: #0563c1;"&gt;http://msdn.microsoft.com/en-us/library/ms138020(v=sql.105).aspx&lt;/span&gt;&lt;/a&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;code&gt;While enabling the logging make sure you definitely select the events such as &lt;/code&gt;&lt;code&gt;OnPreExecute,OnPreValidate,OnPostExecute&lt;/code&gt;&lt;code&gt;,&lt;/code&gt; &lt;code&gt;PipelineComponentTime&lt;/code&gt;&lt;code&gt;. These event will help later in identifying the slowest performing task within the package. If you dump the SSIS logs to table using SQL Server log provider such as: &lt;/code&gt;&lt;code&gt;sysssislog&lt;/code&gt;&lt;code&gt;, then this would help in understanding the events logged in a chronological order in the table.&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;em&gt;SELECT id, event, starttime, source, message FROM sysssislog ORDER BY id desc&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;code&gt;For example for one&amp;nbsp; of the sample execution of package here is how it would help if you SORT in above fashion.&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-41/5165.3.jpg"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-41/5165.3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;code&gt;In above example we saw that for sample task in Control Flow: &amp;ldquo;Transform and Validate&amp;rdquo; &lt;/code&gt;is&amp;nbsp;completing in approx. 2 minutes 51 seconds&lt;code&gt; by just looking at the time difference between: &lt;/code&gt;&lt;code&gt;OnPreExecute and OnPostExecute&lt;/code&gt;&lt;code&gt;. This is how we find the duration for each task within the package which may have many tasks executing. Our focus should be basically on tuning those tasks whose duration is the highest amongst all the tasks of the package concerned.&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;code&gt;Once you have identified the troublesome tasks, then you should deep dive into why exactly they are taking that much time and are performing slow. For e.g. one reason it could be slow is if the task in itself is calling the stored procedure which is performing slowly.&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;code&gt;I would not go into example for finding slowness in Data flow tasks but it would be on the same lines as in sample example above. Probably for Data Flow tasks you need to additionally ensure that PipelineComponentTime&lt;/code&gt;&lt;code&gt; is as well enabled in native logging.&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;Thx&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;Ashutosh Sharma&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;SQL Consultant&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #1f4d78; font-family: arial,helvetica,sans-serif; font-size: small;"&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;The views expressed on this website/blog are mine alone and do not reflect the views of my company. All postings on this blog are provided &amp;ldquo;AS IS&amp;rdquo; with no warranties, and confers no rights.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10384875" width="1" height="1"&gt;</content><author><name>Ashutosh_Sharma</name><uri>http://blogs.msdn.com/Ashutosh_5F00_Sharma/ProfileUrlRedirect.ashx</uri></author><category term="performance" scheme="http://blogs.msdn.com/b/ashush/archive/tags/performance/" /><category term="SQL" scheme="http://blogs.msdn.com/b/ashush/archive/tags/SQL/" /><category term="SSIS" scheme="http://blogs.msdn.com/b/ashush/archive/tags/SSIS/" /></entry><entry><title>Troubleshooting Kerberos Delegation Using DelegConfig</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/ashush/archive/2013/01/14/troubleshooting-kerberos-delegation-using-delegconfig.aspx" /><id>http://blogs.msdn.com/b/ashush/archive/2013/01/14/troubleshooting-kerberos-delegation-using-delegconfig.aspx</id><published>2013-01-14T17:48:00Z</published><updated>2013-01-14T17:48:00Z</updated><content type="html">&lt;p&gt;&lt;span style="font-family: courier new,courier; font-size: small;"&gt;Here is the blog I wrote some time back on Troubleshooting Kerberos Delegation Using DelegConfig. Here is the pointer&amp;nbsp;to it:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier; font-size: small;"&gt;&lt;a href="http://blogs.msdn.com/b/sqlserverfaq/archive/2011/12/12/troubleshooting-kerberos-delegation-using-delegconfig.aspx"&gt;http://blogs.msdn.com/b/sqlserverfaq/archive/2011/12/12/troubleshooting-kerberos-delegation-using-delegconfig.aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier; font-size: small;"&gt;Thx&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier; font-size: small;"&gt;Ashutosh Sharma&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier; font-size: small;"&gt;SQL Consultant&lt;/span&gt;&lt;/p&gt;
&lt;h6&gt;&lt;span style="font-family: courier new,courier; font-size: small;"&gt;&lt;strong&gt;&lt;span style="line-height: 107%; mso-ansi-language: EN;" lang="EN"&gt;Disclaimer&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/h6&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier; font-size: small; mso-ansi-language: EN;" lang="EN"&gt;The views expressed on this website/blog are mine alone and do not reflect&lt;br /&gt;the views of my company. All postings on this blog are provided &amp;ldquo;AS IS&amp;rdquo; with no&lt;br /&gt;warranties, and confers no rights.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10384825" width="1" height="1"&gt;</content><author><name>Ashutosh_Sharma</name><uri>http://blogs.msdn.com/Ashutosh_5F00_Sharma/ProfileUrlRedirect.ashx</uri></author><category term="SQL" scheme="http://blogs.msdn.com/b/ashush/archive/tags/SQL/" /><category term="Kerberos" scheme="http://blogs.msdn.com/b/ashush/archive/tags/Kerberos/" /></entry><entry><title>Performance optimizations on queries using SQL Change Tracking features.</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/ashush/archive/2012/11/25/performance-optimizations-on-queries-using-sql-change-tracking-features.aspx" /><id>http://blogs.msdn.com/b/ashush/archive/2012/11/25/performance-optimizations-on-queries-using-sql-change-tracking-features.aspx</id><published>2012-11-25T18:54:19Z</published><updated>2012-11-25T18:54:19Z</updated><content type="html">&lt;h1&gt;&lt;span style="color: #2e74b5;"&gt;Problem: Performance optimizations on queries using SQL Change Tracking features.&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;In this blog I will throw some light on what to do when we are facing performance issues when there is performance trouble involving query with using SQL Change tracking.&lt;/p&gt;
&lt;p&gt;a)&amp;nbsp;&amp;nbsp;&amp;nbsp; First of all I will begin with what this change tracking is. Change tracking is the feature which was introduced in SQL 2008.It plays and important role when you want to do real time synchronization between two databases. Since triggers are not the best solution to find out the rows which have been modified as they are tightly bounded with event of Insert, Update or Delete actions .I am not going to deep dive on design and implementation of Change tracking which could be used as workaround for triggers .You could find some of that info over here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc280462(v=sql.105).aspx"&gt;&lt;span style="color: #0563c1;"&gt;http://msdn.microsoft.com/en-us/library/cc280462(v=sql.105).aspx&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933875.aspx"&gt;&lt;span style="color: #0563c1;"&gt;http://msdn.microsoft.com/en-us/library/bb933875.aspx&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;I am going to touch some points on what can you do if in real time systems, lot of data has been modified on source database and which may or may not impact the performance of change tracking queries depending on how they have been designed .Change tracking queries usually involves built-in TSQL functions which helps an application to detect what changes has occurred since last time synchronization has happened. For more info please visit this article:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc280358(v=sql.105).aspx"&gt;&lt;span style="color: #0563c1;"&gt;http://msdn.microsoft.com/en-us/library/cc280358(v=sql.105).aspx&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Change tracking usually involves below type of queries wherein join is performed with the resultset returned from CHNAGETABLE function. For e.g.:&lt;/p&gt;
&lt;p&gt;-- Obtain incremental changes by using the synchronization version obtained the last time the data was synchronized.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="mysql"&gt;SELECT&lt;br /&gt; CT.ProductID, P.Name, P.ListPrice,&lt;br /&gt; CT.SYS_CHANGE_OPERATION, CT.SYS_CHANGE_COLUMNS,&lt;br /&gt; CT.SYS_CHANGE_CONTEXT&lt;br /&gt; FROM&lt;br /&gt; SalesLT.Product AS P&lt;br /&gt; RIGHT OUTER JOIN&lt;br /&gt; CHANGETABLE(CHANGES SalesLT.Product, @last_synchronization_version) AS CT&lt;br /&gt; ON&lt;br /&gt; P.ProductID = CT.ProductID&lt;br /&gt; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;b)&amp;nbsp;&amp;nbsp;&amp;nbsp; More often than not queries designs such as above will perform absolutely fine when there is less amount of data but there could be a problem if source server has lot of inserts or updates happening&lt;/p&gt;
&lt;p&gt;Now when Change tracking is enabled SQL server creates internal table. The naming convention used is: &amp;ldquo;change_tracking_&amp;lt;object_id&amp;gt;&amp;rdquo;.SQL Server stores the DML change for that table in this internal table. Since it&amp;rsquo;s an internal table it cannot be queried directly. Hence we have to use change tracking functions.&lt;/p&gt;
&lt;p&gt;Care should be taken while performing query on using CHANGETABLE functions that appropriate business rule is applied such as &amp;nbsp;SYS_CHANGE_OPERATION = 'I' or SYS_CHANGE_OPERATION = 'U' in the WHERE clause of the query if you want just new inserts to be returned only or new updates or both .&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;If there is a slow performing query all the general guidelines should be followed as for tuning queries. This post will not go into general performing query techniques in database engine. Once you have captured the SQL Server execution plan for a query involving change tracking functions such as CHANGETABLE &amp;nbsp;,you will see that execution plan contains the cost associated with the internal tables as well like below:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-41/3113.1_2E00_.jpg"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-41/3113.1_2E00_.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As we can see above it&amp;rsquo;s an internal table on which clustered index seek has happened on query execution. Now consider a little more complicated scenario when there are multiple joins involved in a query which has CHANGETABLE as one of its table on which JOIN is performed. In that case we may well see clustered index seek happening not only on internal change tracking table but many other user defined tables as well.&lt;/p&gt;
&lt;p&gt;Probably first thing you will check in execution plan is whether there is anywhere clustered index seek not happening and pinpoint something wrong easily. Or if all the tables involved have updated stats or not. Check also if there is blocking happening or not.&lt;/p&gt;
&lt;p&gt;If you see that despite the fact that query execution plan seem to indicate nothing wrong, please take a second look &amp;nbsp;at the COST associated with the change tracking internal table which begins something like : change_tracking_&amp;lt;object_id&amp;gt;. There could be one more important table which is also system table named syscommittab used in change tracking. Please note that cost associated with it as well:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-41/6545.2.jpg"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-56-41/6545.2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;It&amp;rsquo;s imperative we check the cost associated with the above two tables : change_tracking_&amp;lt;object_id, syscommittab.&lt;/p&gt;
&lt;p&gt;1)&amp;nbsp;&amp;nbsp;&amp;nbsp; If the ratio of the total cost of these tables (change_tracking_&amp;lt;object_id, syscommittab) to the total cost of the entire query is no higher side that means we have a very chance that our query is performing very fast within expected SLA.&lt;/p&gt;
&lt;p&gt;2)&amp;nbsp;&amp;nbsp;&amp;nbsp; But if the ratio of total cost of above these tables(change_tracking_&amp;lt;object_id, syscommittab) to the total cost of the entire query is on lower side that means query may be very slow and there may be query design issues which we may need a look ahead from here and which cannot be ruled out. This will also indicate that cost associated with user defined tables is implicitly more. For e.g. user defined tables having cost adding up to 90% in turn triggering longer wait for query response. Thereby lower ratio value.&lt;/p&gt;
&lt;p&gt;In case of 2) please check and see if there is any subquery used in your query .If yes then check if you can deploy some workaround to avoid subquery as it can lead to bad execution plan .Try to use normal join condition instead of subquery and test out the performance. If you have subquery see if you can work around the same logic using WITH clause using common table expressions:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms175972(v=sql.100).aspx"&gt;&lt;span style="color: #0563c1;"&gt;http://msdn.microsoft.com/en-us/library/ms175972(v=sql.100).aspx&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #2e74b5;"&gt;Conclusion&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;c)&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Since this post is just a pointer to indicate where to start looking for problem if you fall under 2) point above. The only rule I can recommend is to make sure that targeting ratio &amp;nbsp;of total cost of tables (change_tracking_&amp;lt;object_id, syscommittab) to the total cost of the entire query should be on higher side for e.g. 60-80% .This would ensure query involving change tracking is within our expectation and returns results quick enough. The reason I say this is because CHANGE TRACKING tables are relatively smaller tables as compared to source tables which have all the data since they keep recently modified data rows only. If the cost associated with these table is larger than it should return results quicker enough, considering the fact that clustered index seek on internal change tracking tables is bound to return results back quicker enough than the clustered index seek on its PARENT table of specific internal change tracking table.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;Thx&lt;/p&gt;
&lt;p&gt;Ashutosh Sharma&lt;/p&gt;
&lt;p&gt;SQL Consultant&lt;/p&gt;
&lt;h6&gt;&lt;span style="color: #1f4d78;"&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;&lt;/span&gt;&lt;/h6&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;The views expressed on this website/blog are mine alone and do not reflect the views of my company. All postings on this blog are provided &amp;ldquo;AS IS&amp;rdquo; with no warranties, and confers no rights.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Times New Roman;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10371407" width="1" height="1"&gt;</content><author><name>Ashutosh_Sharma</name><uri>http://blogs.msdn.com/Ashutosh_5F00_Sharma/ProfileUrlRedirect.ashx</uri></author><category term="performance" scheme="http://blogs.msdn.com/b/ashush/archive/tags/performance/" /><category term="SQL" scheme="http://blogs.msdn.com/b/ashush/archive/tags/SQL/" /><category term="query" scheme="http://blogs.msdn.com/b/ashush/archive/tags/query/" /><category term="change tracking" scheme="http://blogs.msdn.com/b/ashush/archive/tags/change+tracking/" /></entry></feed>