<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQL Server Thoughts from the Field</title><link>http://blogs.technet.com/b/rob/</link><description>Rob&amp;#39;s SQL Server &amp;amp; BI Blog</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Enabling Kerberos Authentication for Reporting Services</title><link>http://blogs.technet.com/b/rob/archive/2011/11/23/enabling-kerberos-authentication-for-reporting-services.aspx</link><pubDate>Wed, 23 Nov 2011 01:08:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3466779</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3466779</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2011/11/23/enabling-kerberos-authentication-for-reporting-services.aspx#comments</comments><description>&lt;p&gt;Recently, I&amp;rsquo;ve helped several customers with Kerberos authentication problems with Reporting Services and Analysis Services, so I&amp;rsquo;ve decided to write this blog post and pull together some useful resources in one place (there are 2 whitepapers in particular that I found invaluable configuring Kerberos authentication, and these can be found in the references section at the bottom of this post). In most of these cases, the problem has manifested itself with the Login failed for User &amp;lsquo;NT Authority\Anonymous&amp;rsquo; (&amp;ldquo;double-hop&amp;rdquo;) error.&lt;/p&gt;
&lt;p&gt;By default, Reporting Services uses Windows Integrated Authentication, which includes the Kerberos and NTLM protocols for network authentication. Additionally, Windows Integrated Authentication includes the negotiate security header, which prompts the client to select Kerberos or NTLM for authentication. The client can access reports which have the appropriate permissions by using Kerberos for authentication. Servers that use Kerberos authentication can impersonate those clients and use their security context to access network resources.&lt;/p&gt;
&lt;p&gt;You can configure Reporting Services to use both Kerberos and NTLM authentication; however this may lead to a failure to authenticate. With negotiate, if Kerberos cannot be used, the authentication method will default to NTLM. When negotiate is enabled, the Kerberos protocol is always used except when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clients/servers that are involved in the authentication process cannot use Kerberos.&lt;/li&gt;
&lt;li&gt;The client does not provide the information necessary to use Kerberos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An in-depth discussion of Kerberos authentication is beyond the scope of this post, however when users execute reports that are configured to use Windows Integrated Authentication, their logon credentials are passed from the report server to the server hosting the data source. Delegation needs to be set on the report server and Service Principle Names (SPNs) set for the relevant services. When a user processes a report, the request must go through a Web server on its way to a database server for processing. Kerberos authentication enables the Web server to request a service ticket from the domain controller; impersonate the client when passing the request to the database server; and then restrict the request based on the user&amp;rsquo;s permissions. Each time a server is required to pass the request to another server, the same process must be used.&lt;/p&gt;
&lt;p&gt;Kerberos authentication is supported in both native and SharePoint integrated mode, but I&amp;rsquo;ll focus on native mode for the purpose of this post (I&amp;rsquo;ll explain configuring SharePoint integrated mode and Kerberos authentication in a future post). Configuring Kerberos avoids the authentication failures due to double-hop issues. These double-hop errors occur when a users windows domain credentials can&amp;rsquo;t be passed to another server to complete the user&amp;rsquo;s request. In the case of my customers, users were executing Reporting Services reports that were configured to query Analysis Services cubes on a separate machine using Windows Integrated security. The double-hop issue occurs as NTLM credentials are valid for only one network hop, subsequent hops result in anonymous authentication.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-64-22-metablogapi/3187.image_5F00_0386BB14.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-64-22-metablogapi/3755.image_5F00_thumb_5F00_7EE08A8C.png" width="514" height="178" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The client attempts to connect to the report server by making a request from a browser (or some other application), and the connection process begins with authentication. With NTLM authentication, client credentials are presented to Computer 2. However Computer 2 can&amp;rsquo;t use the same credentials to access Computer 3 (so we get the Anonymous login error). To access Computer 3 it is necessary to configure the connection string with stored credentials, which is what a number of customers I have worked with have done to workaround the double-hop authentication error.&lt;/p&gt;
&lt;p&gt;However, to get the benefits of Windows Integrated security, a better solution is to enable Kerberos authentication. Again, the connection process begins with authentication. With Kerberos authentication, the client and the server must demonstrate to one another that they are genuine, at which point authentication is successful and a secure client/server session is established.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-64-22-metablogapi/0435.image_5F00_0EA01F91.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-64-22-metablogapi/0844.image_5F00_thumb_5F00_0563E450.png" width="518" height="152" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the illustration above, the tiers represent the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Client tier (computer 1): The client computer from which an application makes a request.&lt;/li&gt;
&lt;li&gt;Middle tier (computer 2): The Web server or farm where the client&amp;rsquo;s request is directed. Both the SharePoint and Reporting Services server(s) comprise the middle tier (but we&amp;rsquo;re only concentrating on native deployments just now).&lt;/li&gt;
&lt;li&gt;Back end tier (computer 3): The Database/Analysis Services server/Cluster where the requested data is stored.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In order to enable Kerberos authentication for Reporting Services it&amp;rsquo;s necessary to configure the relevant SPNs, configure trust for delegation for server accounts, configure Kerberos with full delegation and configure the authentication types for Reporting Services. These steps are outlined in greater detail in the "Manage Kerberos Authentication Issues in a Reporting Services Environment" whitepaper in the resources section at the end of this article.&lt;/p&gt;
&lt;p&gt;Service Principle Names (SPNs) are unique identifiers for services and identify the account&amp;rsquo;s type of service. If an SPN is not configured for a service, a client account will be unable to authenticate to the servers using Kerberos. You need to be a domain administrator to add an SPN, which can be added using the SetSPN utility. For Reporting Services in native mode, the following SPNs need to be registered&lt;/p&gt;
&lt;p&gt;--SQL Server Service &lt;br /&gt;SETSPN -S mssqlsvc/servername:1433 Domain\SQL&lt;/p&gt;
&lt;p&gt;For named instances, or if the default instance is running under a different port, then the specific port number should be used.&lt;/p&gt;
&lt;p&gt;--Reporting Services Service &lt;br /&gt;SETSPN -S http/servername Domain\SSRS &lt;br /&gt;SETSPN -S http/servername.domain.com Domain\SSRS&lt;/p&gt;
&lt;p&gt;The SPN should be set for the NETBIOS name of the server and the FQDN. If you access the reports using a host header or DNS alias, then that should also be registered&lt;/p&gt;
&lt;p&gt;SETSPN -S http/www.reports.com Domain\SSRS&lt;/p&gt;
&lt;p&gt;--Analysis Services Service &lt;br /&gt;SETSPN -S msolapsvc.3/servername Domain\SSAS&lt;/p&gt;
&lt;p&gt;Next, you need to configure trust for delegation, which refers to enabling a computer to impersonate an authenticated user to services on another computer:&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="76"&gt;
&lt;p&gt;&lt;b&gt;Location&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="568"&gt;
&lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="76"&gt;
&lt;p&gt;Client&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="568"&gt;
&lt;p&gt;1. The requesting application must support the Kerberos authentication protocol.&lt;/p&gt;
&lt;p&gt;2. The user account making the request must be configured on the domain controller. Confirm that the following option is not selected: &lt;b&gt;Account is sensitive and cannot be delegated&lt;/b&gt;.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="76"&gt;
&lt;p&gt;Servers&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="568"&gt;
&lt;p&gt;1. The service accounts must be trusted for delegation on the domain controller.&lt;/p&gt;
&lt;p&gt;2. The service accounts must have SPNs registered on the domain controller. If the service account is a domain user account, the domain administrator must register the SPNs.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In Active Directory Users and Computers, verify that the domain user accounts used to access reports have been configured for delegation (the &amp;lsquo;Account is sensitive and cannot be delegated&amp;rsquo; option should not be selected):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-64-22-metablogapi/6283.image_5F00_6A4B1541.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-64-22-metablogapi/5314.image_5F00_thumb_5F00_61E73FEA.png" width="395" height="366" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We then need to configure the Reporting Services service account and computer to use Kerberos with full delegation:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-64-22-metablogapi/2642.image_5F00_7B6ECD17.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-64-22-metablogapi/1588.image_5F00_thumb_5F00_5A0F277B.png" width="401" height="275" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-64-22-metablogapi/1588.image_5F00_02CA8CC5.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-64-22-metablogapi/7345.image_5F00_thumb_5F00_765C699B.png" width="407" height="249" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We also need to do the same for the SQL Server or Analysis Services service accounts and computers (depending on what type of data source you are connecting to in your reports).&lt;/p&gt;
&lt;p&gt;Finally, and this is the part that sometimes gets over-looked, we need to configure the authentication type correctly for reporting services to use Kerberos authentication. This is configured in the Authentication section of the RSReportServer.config file on the report server.&lt;/p&gt;
&lt;p&gt;&amp;lt;Authentication&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;AuthenticationTypes&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;RSWindowsNegotiate/&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;/AuthenticationTypes&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;EnableAuthPersistence&amp;gt;true&amp;lt;/EnableAuthPersistence&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;/Authentication&amp;gt;&lt;/p&gt;
&lt;p&gt;This will enable Kerberos authentication for Internet Explorer. For other browsers, see the link below. The report server instance must be restarted for these changes to take effect.&lt;/p&gt;
&lt;p&gt;Once these changes have been made, all that&amp;rsquo;s left to do is test to make sure Kerberos authentication is working properly by running a report from report manager that is configured to use Windows Integrated authentication (either connecting to Analysis Services or SQL Server back-end).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Manage Kerberos Authentication Issues in a Reporting Services Environment &lt;br /&gt;&lt;a title="http://download.microsoft.com/download/B/E/1/BE1AABB3-6ED8-4C3C-AF91-448AB733B1AF/SSRSKerberos.docx" href="http://download.microsoft.com/download/B/E/1/BE1AABB3-6ED8-4C3C-AF91-448AB733B1AF/SSRSKerberos.docx"&gt;http://download.microsoft.com/download/B/E/1/BE1AABB3-6ED8-4C3C-AF91-448AB733B1AF/SSRSKerberos.docx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Configuring Kerberos Authentication for Microsoft SharePoint 2010 Products &lt;br /&gt;&lt;a title="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=23176" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=23176"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=23176&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How to: Configure Windows Authentication in Reporting Services &lt;br /&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/cc281253.aspx" href="http://msdn.microsoft.com/en-us/library/cc281253.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc281253.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;RSReportServer Configuration File &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms157273.aspx#Authentication"&gt;http://msdn.microsoft.com/en-us/library/ms157273.aspx#Authentication&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Planning for Browser Support &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms156511.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms156511.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3466779" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Reporting+Services/">Reporting Services</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Kerberos/">Kerberos</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Analysis+Services/">Analysis Services</category></item><item><title>Hosting the Performance Dashboard Reports in SSRS</title><link>http://blogs.technet.com/b/rob/archive/2010/09/28/hosting-the-performance-dashboard-reports-in-ssrs.aspx</link><pubDate>Tue, 28 Sep 2010 16:57:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3358489</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3358489</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2010/09/28/hosting-the-performance-dashboard-reports-in-ssrs.aspx#comments</comments><description>&lt;p&gt;I blogged a while back about modifying the SQL Server 2005 Performance Dashboard reports to &lt;a target="_blank" href="http://blogs.technet.com/b/rob/archive/2009/02/18/performance-dashboard-reports-for-sql-server-2008.aspx"&gt;run on SQL Server 2008&lt;/a&gt;. I&amp;rsquo;ve since been working with several customers who use these reports for performance troubleshooting, but who would like to host them on their Reporting Services platform so they can be viewed online instead of within SQL Server Management Studio. So over the past few days I&amp;rsquo;ve been killing time on flights and trains doing just that. So here goes&amp;hellip;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s actually very simple to get the reports up and running on Reporting Services. All you have to do is install the &lt;a target="_blank" href="http://blogs.technet.com/b/rob/archive/2008/06/12/sql-server-2005-performance-dashboard.aspx"&gt;Performance Dashboard reports&lt;/a&gt;, create a new Report Server project in BIDS (or Visual Studio) and import the .rdl files from the directory they were installed to (right-click the solution name in Solution Explorer &amp;ndash;&amp;gt; Add &amp;ndash;&amp;gt; Existing Item). &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/0638.Capture1_5F00_33E9CCBA.png"&gt;&lt;img height="143" width="244" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/0741.Capture1_5F00_thumb_5F00_1FC08A64.png" alt="Capture1" border="0" title="Capture1" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;They use a shared data source, so you need to update this to point to the SQL Server instance you want to monitor (making sure that you have enabled the instance for use with the &lt;a target="_blank" href="http://blogs.technet.com/b/rob/archive/2008/06/12/sql-server-2005-performance-dashboard.aspx"&gt;Performance Dashboard reports&lt;/a&gt; first), deploy the reports and data source to your Report Server and you&amp;rsquo;re ready to roll.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/3465.Capture2_5F00_369F5BE0.png"&gt;&lt;img height="202" width="244" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/4370.Capture2_5F00_thumb_5F00_73E010A7.png" alt="Capture2" border="0" title="Capture2" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, this means that you can only look at one server. To monitor multiple servers, you would would need to repeat the process and host a separate copy of the reports for each one&amp;hellip; not very scalable !&lt;/p&gt;
&lt;p&gt;The solution I&amp;rsquo;ve come up with (and which you can download in the attached .zip file) requires you to publish the reports only once and use a parameter to dynamically determine which server we want to connect to in our data source. This parameter is set in the Performance_Dashboard_Main.rdl file when you first launch the report and is used as an expression in the report data source to dynamically build the connection string. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/8508.Capture5_5F00_0DD3D0CA.png"&gt;&lt;img height="58" width="244" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/4382.Capture5_5F00_thumb_5F00_7D0C261B.png" alt="Capture5" border="0" title="Capture5" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/7041.Capture3_5F00_5AD41A95.png"&gt;&lt;img height="185" width="244" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/7853.Capture3_5F00_thumb_5F00_5C088DA7.png" alt="Capture3" border="0" title="Capture3" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We need to modify the existing data source to be an embedded data source as using expressions in connection strings is not supported with shared data sources. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/5811.Capture4_5F00_7855CFC7.png"&gt;&lt;img height="202" width="244" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/5327.Capture4_5F00_thumb_5F00_7C137497.png" alt="Capture4" border="0" title="Capture4" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/3364.Capture6_5F00_52BC2C99.png"&gt;&lt;img height="66" width="244" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/0243.Capture6_5F00_thumb_5F00_1A4E05C1.png" alt="Capture6" border="0" title="Capture6" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This parameter is then passed through to subsequent linked reports to build the dynamic data source connection for those reports as well.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/2816.Capture7_5F00_0DB52910.png"&gt;&lt;img height="203" width="244" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22-metablogapi/5481.Capture7_5F00_thumb_5F00_0183891C.png" alt="Capture7" border="0" title="Capture7" style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve created 2 versions of the Performance_Dashboard_Main report (Performance_Dashboard_Main.rdl and Performance_Dashboard_Main_CMS.rdl) which I&amp;rsquo;ve included in the attached solution file. The first one uses a free-text field to enter the server name and the second one uses the new &lt;a target="_blank" href="http://www.sqlskills.com/BLOGS/KIMBERLY/post/SQL-Server-2008-Central-Management-Servers-have-you-seen-these.aspx"&gt;Central Management Server (CMS)&lt;/a&gt; functionality in SQL Server 2008 to dynamically populate a drop-down list of servers you have already registered on your CMS&amp;hellip; very cool !&lt;/p&gt;
&lt;p&gt;These reports have been designed and tested to work on SSRS 2008, however you can use the same technique to host them on SSRS 2005 or 2008. The data source for the reports can also either point to SQL Server 2005 or 2008 instances (as long as you&amp;rsquo;ve followed the instructions for &lt;a target="_blank" href="http://blogs.technet.com/b/rob/archive/2009/02/18/performance-dashboard-reports-for-sql-server-2008.aspx"&gt;modifying the reports for SQL Server 2008&lt;/a&gt; first). As I&amp;rsquo;ve mentioned before, these reports are not a replacement for the fantastic new &lt;a target="_blank" href="http://blogs.technet.com/b/rob/archive/2008/06/20/sql-server-2008-performance-studio.aspx"&gt;Management Data Warehouse&lt;/a&gt; functionality of SQL Server 2008, but can provide another valuable tool to help DBA&amp;rsquo;s analyse performance issues. &lt;/p&gt;
&lt;p&gt;Download the reports, have a play and let me know what you think !&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3358489" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-35-84-89/Performance-Dashboard-Reports.zip" length="301141" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2005/">2005</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance+Dashboard+Reports/">Performance Dashboard Reports</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Reporting+Services/">Reporting Services</category></item><item><title>SSUG Presentation 19th August</title><link>http://blogs.technet.com/b/rob/archive/2010/08/20/ssug-presentation-19th-august.aspx</link><pubDate>Fri, 20 Aug 2010 11:15:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3351018</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3351018</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2010/08/20/ssug-presentation-19th-august.aspx#comments</comments><description>&lt;p&gt;Thanks to all who attended the SSUG meeting in Edinburgh last night. I've included my slides and demo scripts in the attached file (SSUG_190810_ExecutionPlans.zip). I've also included some additional references relating to discussions we had during the course of the evening. If you need any other information, give me a shout.&lt;/p&gt;
&lt;p&gt;Creating a Statistics-only "Cloned" Database:&lt;br /&gt;&lt;a target="_blank" href="http://support.microsoft.com/kb/914288"&gt;http://support.microsoft.com/kb/914288&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://sqlblog.com/blogs/kalen_delaney/archive/2007/11/21/cloning-in-sql-server-2005.aspx" title="Did you know? Cloning is Legal (and Available in SQL Server 2005)"&gt;http://sqlblog.com/blogs/kalen_delaney/archive/2007/11/21/cloning-in-sql-server-2005.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Database Tuning Advisor (DTA) - Reducing the Production Server Tuning Load&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ms190389.aspx"&gt;http://technet.microsoft.com/en-us/library/ms190389.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Optimizing tempdb Performance&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms175527.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms175527.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Improving Performance of Dynamic SQL&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms175170(SQL.105).aspx"&gt;http://msdn.microsoft.com/en-us/library/ms175170(SQL.105).aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-gb/magazine/ee236412.aspx"&gt;http://msdn.microsoft.com/en-gb/magazine/ee236412.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;See you all at the next meeting !&lt;/p&gt;
&lt;p&gt;Rob&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3351018" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-35-10-18/SSUG_5F00_190810_5F00_ExecutionPlans.zip" length="645547" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance/">Performance</category><category domain="http://blogs.technet.com/b/rob/archive/tags/User+Group/">User Group</category></item><item><title>Scottish SQL Server User Group Meeting 19th August</title><link>http://blogs.technet.com/b/rob/archive/2010/08/12/scottish-sql-server-user-group-meeting-19th-august.aspx</link><pubDate>Thu, 12 Aug 2010 14:24:19 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3349761</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3349761</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2010/08/12/scottish-sql-server-user-group-meeting-19th-august.aspx#comments</comments><description>&lt;p&gt;The next Scottish SQL Server User Group meeting will take place on Thursday 19th August at the Microsoft offices in Edinburgh. I'll be talking about SQL Server execution plans and how to use them to identify issues in your application code and Martin will be educating us all with his&amp;nbsp;knowledge of Extended Events. Pizza and refreshments will be provided as always,&amp;nbsp;full details and registration information can be found below...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sqlserverfaq.com/events/241/SQL-Server-User-Group.aspx"&gt;http://www.sqlserverfaq.com/events/241/SQL-Server-User-Group.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3349761" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance/">Performance</category><category domain="http://blogs.technet.com/b/rob/archive/tags/User+Group/">User Group</category></item><item><title>SQL Server Wow64 Perfmon Issues</title><link>http://blogs.technet.com/b/rob/archive/2010/05/31/sql-server-wow64-perfmon-issues.aspx</link><pubDate>Mon, 31 May 2010 00:57:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3334733</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3334733</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2010/05/31/sql-server-wow64-perfmon-issues.aspx#comments</comments><description>&lt;p&gt;I recently came across some issues running perfmon on Windows Server 2003 where the OS is 64-bit and SQL Server is 32-bit (Wow64). The SQL Performance counters were not appearing as the default Perfmon is 64-bit, which is unable to read the 32-bit SQL counters. Running the 32-bit version of Perfmon allows us to read the SQL counters. This can be done by either running the C:\WINDOWS\syswow64\smlogsvc.exe file directly or running the following from the command-line:&lt;/p&gt;
&lt;p&gt;mmc /32 Perfmon.msc&lt;/p&gt;
&lt;p&gt;So far, so good. However, attempts to create a performance counter log were failing as the Performance Logs and Alerts service was configured to use the 64-bit version of the smlogsvc executable. This was fixed by modifying the following registry keys (the usual warnings regarding modifying the registry apply here):&lt;/p&gt;
&lt;p&gt;1) &lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SysmonLog\ImagePath, change ImagePath value from %SystemRoot%\system32\smlogsvc.exe to &lt;br /&gt;%SystemRoot%\syswow64\smlogsvc.exe &lt;br /&gt;2) &lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\SysmonLogEventMessageFile, change EventMessageFile value from &lt;br /&gt;%SystemRoot%\system32\smlogsvc.exe to %SystemRoot%\syswow64\smlogsvc.exe &lt;/p&gt;
&lt;p&gt;Perfmon can then be started with the /32 switch (or run the C:\WINDOWS\syswow64\smlogsvc.exe file directly) and the SQL counters succesfully logged.&lt;/p&gt;
&lt;p&gt;How It Works: Almost Everything You Wanted To Know About The SQL Server (2005, 2008) Performance Counter Collection Components &lt;br /&gt;&lt;a href="http://blogs.msdn.com/psssql/archive/2009/03/03/how-it-works-almost-everything-you-wanted-to-know-about-the-sql-server-2005-2008-performance-counter-collection-components.aspx"&gt;http://blogs.msdn.com/psssql/archive/2009/03/03/how-it-works-almost-everything-you-wanted-to-know-about-the-sql-server-2005-2008-performance-counter-collection-components.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3334733" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/32_2D00_bit/">32-bit</category><category domain="http://blogs.technet.com/b/rob/archive/tags/64_2D00_bit/">64-bit</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance/">Performance</category></item><item><title>SQLBits VI Slides Available</title><link>http://blogs.technet.com/b/rob/archive/2010/04/18/sqlbits-vi-slides-available.aspx</link><pubDate>Sun, 18 Apr 2010 20:50:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3325942</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3325942</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2010/04/18/sqlbits-vi-slides-available.aspx#comments</comments><description>&lt;P&gt;I had a great time at SQLBits VI last week and would like to thank everyone for coming along to my session&amp;nbsp;:-) I've attached the slides from the session&amp;nbsp;"SQL Server 2008 Reporting Services Scalability and Performance" for you to download.&lt;/P&gt;
&lt;P&gt;Cheers !&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3325942" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-32-59-42/SSRS_5F00_Scalability_5F00_SQLBitsVI.pptx" length="1932184" type="application/vnd.openxmlformats-officedocument.pres" /></item><item><title>SQLBits VI Conference - London 16th April</title><link>http://blogs.technet.com/b/rob/archive/2010/03/17/sqlbits-vi.aspx</link><pubDate>Wed, 17 Mar 2010 13:41:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3319576</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3319576</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2010/03/17/sqlbits-vi.aspx#comments</comments><description>&lt;P&gt;I am very happy to announce that I've been chosen as a speaker for the SQLBits VI conference in London on the 16th April. The theme for this conference is performance and scalability and I'll be talking about some of the new features in SQL Server Reporting Services 2008&amp;nbsp;in this area. There is a great line-up of &lt;A href="http://www.sqlbits.com/information/NewAgenda.aspx" target=_blank mce_href="http://www.sqlbits.com/information/NewAgenda.aspx"&gt;sessions and speakers&lt;/A&gt; and best of all... it's FREE to attend !&lt;/P&gt;
&lt;P&gt;Full details of the conference and how to register can be found &lt;A href="http://www.sqlbits.com/" target=_blank mce_href="http://www.sqlbits.com"&gt;here&lt;/A&gt;. Looking forward to seeing you there !&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3319576" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Community/">Community</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance/">Performance</category><category domain="http://blogs.technet.com/b/rob/archive/tags/SQLBits/">SQLBits</category></item><item><title>Scottish SQL Server User Group Meeting – 25th Feb</title><link>http://blogs.technet.com/b/rob/archive/2010/02/16/scottish-sql-server-user-group-meeting-25th-feb.aspx</link><pubDate>Tue, 16 Feb 2010 23:37:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3313305</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3313305</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2010/02/16/scottish-sql-server-user-group-meeting-25th-feb.aspx#comments</comments><description>&lt;p&gt;The next Scottish SQL Server User Group meeting will take place in the Microsoft Edinburgh office on Thursday the 25th February. Quest Software’s Iain Kick will be talking about performance troubleshooting and Alistair Board and Martin Bell will be talking about their experiences and resources available for learning SQL Server. As always, it promises to be a great event. Registration details can be found on the link below… looking forward to seeing you there !&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.sqlserverfaq.com/events/212/EndtoEnd-SQL-Server-Performance-Troubleshooting-with-Iain-Kick.aspx" href="http://www.sqlserverfaq.com/events/212/EndtoEnd-SQL-Server-Performance-Troubleshooting-with-Iain-Kick.aspx" target="_blank"&gt;http://www.sqlserverfaq.com/events/212/EndtoEnd-SQL-Server-Performance-Troubleshooting-with-Iain-Kick.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3313305" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/User+Group/">User Group</category></item><item><title>Mirroring Multiple SQL Server Databases on a Single Instance</title><link>http://blogs.technet.com/b/rob/archive/2010/02/11/mirroring-multiple-sql-server-databases-on-a-single-instance.aspx</link><pubDate>Thu, 11 Feb 2010 13:07:57 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3312139</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3312139</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2010/02/11/mirroring-multiple-sql-server-databases-on-a-single-instance.aspx#comments</comments><description>&lt;p&gt;This is a question I get asked a lot by customers (last week being the latest) and the answer really depends on which platform you are running on. There is a support policy in Books Online that states that we only support a &lt;a href="http://technet.microsoft.com/en-us/library/ms366349.aspx" target="_blank"&gt;maximum of 10 mirrored databases&lt;/a&gt; per instance on &lt;strong&gt;32-bit systems&lt;/strong&gt;, however in the 64-bit world we don’t have any such limitations. The limitation in 32-bit systems is due to the number of worker threads required for mirroring sessions and the fact that we are limited to a finite amount of memory for thread allocations.&lt;/p&gt;  &lt;p&gt;However, these restrictions do not apply on 64-bit SQL Server systems and the SQLCAT team has just released a whitepaper showing that it’s possible to mirror in excess of 100 databases on a single SQL Server instance !! The article also has information to help you calculate the value of max_worker_threads and max server memory appropriately.&lt;/p&gt;  &lt;p&gt;The article can be found here and is definitely worth a read if you plan to mirror multiple databases on a 64-bit instance of SQL Server:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://sqlcat.com/technicalnotes/archive/2010/02/10/mirroring-a-large-number-of-databases-in-a-single-sql-server-instance.aspx" href="http://sqlcat.com/technicalnotes/archive/2010/02/10/mirroring-a-large-number-of-databases-in-a-single-sql-server-instance.aspx"&gt;http://sqlcat.com/technicalnotes/archive/2010/02/10/mirroring-a-large-number-of-databases-in-a-single-sql-server-instance.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3312139" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/High+Availability/">High Availability</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2005/">2005</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Database+Mirroring/">Database Mirroring</category></item><item><title>Caching SSRS Reports for Performance</title><link>http://blogs.technet.com/b/rob/archive/2010/02/11/caching-ssrs-reports-for-performance.aspx</link><pubDate>Thu, 11 Feb 2010 01:28:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3312039</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3312039</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2010/02/11/caching-ssrs-reports-for-performance.aspx#comments</comments><description>&lt;P&gt;I’ve been fairly quiet on the blogging-front recently, but I have been busy working with SQL Server Reporting Services (SSRS) ! I've also been fortunate enough to present a session to customers on SSRS scalability at a recent Business Intelligence Operations Day in Reading, UK. One thing that struck me from that day was that very few people are aware of the caching options available in Reporting Services and how they can be used to improve report processing performance. A quick show of hands showed that no-one in my session was making use of caching, and only one person required real-time reporting on their data.&lt;/P&gt;
&lt;P&gt;When you create a report and deploy it to your report server, the default behaviour is to always run the report with the most recent data and not to implement any caching. Actually, SSRS does implement session level caching for each user request “under the covers” to improve report performance and to provide a consistent experience across a single browser session. Data remains consistent during the report session and is unaffected by changes in the underlying data source. This article provides a good discussion of &lt;A href="http://www.databasejournal.com/features/mssql/article.php/3695721/Report-Session-Caching-in-Reporting-Services-2005.htm" target=_blank mce_href="http://www.databasejournal.com/features/mssql/article.php/3695721/Report-Session-Caching-in-Reporting-Services-2005.htm"&gt;report session caching&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Unless you need real-time data in your reports, then hitting the underlying data sources each time you run the report is unnecessary and can hurt performance. In most cases, the business requirement is to report on historical data (whether that is from the last 15 minutes, hour, day or week) so we can implement caching to improve the report processing times based on these requirements. If we have no caching, a new instance of the report is created for each user who opens or requests the report; each new instance contains the results of a new query. With this approach, if ten users open the report at the same time, ten queries are sent to the data source for processing. If the report server load is heavy, or if the reports take a significant time to retrieve data and process, then this can have a negative impact on the performance of the Report Server and the underlying databases executing the report queries.&lt;/P&gt;
&lt;P&gt;We can implement 2 forms of &lt;A href="http://blogs.technet.com/controlpanel/blogs/Report%20Caching%20in%20Reporting%20Services" target=_blank&gt;caching in Reporting Services&lt;/A&gt;: temporary cached reports and report snapshots. A temporary cached instance of a report is based on the intermediate format of a report (report data merged with the layout information before any rendering is applied). The report server will cache one instance of a report based on the report name. However, if a report can contain different data based on query parameters, multiple versions of the report may be cached at any time. For example, suppose you have a parameterised report that takes a region code as a parameter value. If four different users specify four unique region codes, four cached copies will be created. The first user who runs the report with a unique region code creates a cached report that contains data for that region. Subsequent users who request a report using the same region code get the cached copy.&lt;/P&gt;
&lt;P&gt;With this approach, if ten users open the report, only the first request results in report processing. The report is subsequently cached, and the remaining nine users view the cached report. Cached reports are removed from the cache at intervals that you define. You can specify intervals in minutes, or you can schedule a specific date and time to empty the cache. Not all reports can be cached. If a report prompts users for credentials or uses Windows Authentication, it cannot be cached unless you change the data source to use stored credentials instead. There are certain other events that will invalidate the cache and cause it to be flushed for temporary cached copies of a report. These include&amp;nbsp;if the report definition is modified, report parameters are modified, data source credentials change, report execution options change or if the cache expiration timeout is reached.&lt;/P&gt;
&lt;P&gt;A report snapshot is a report that contains layout information and data that is retrieved at a specific point in time. A report snapshot is usually created and refreshed on a schedule, allowing you to time exactly when report and data processing will occur. If a report is based on queries that take a long time to run, or on queries that use data from a data source that you prefer no one access during certain hours, you should run the report as a snapshot. A report snapshot is stored in the intermediary form in the ReportServer database, where it is subsequently retrieved when a user or subscription requests the report. When a report snapshot is updated, it is overwritten with a new instance. The report server does not save previous versions of a report snapshot unless you specifically set options to add it to report history. &lt;/P&gt;
&lt;P&gt;Not all reports can be configured to run as a snapshot. For example, you cannot create a snapshot for a report that prompts users for credentials or uses Windows integrated security to get data for the report. Also, if you want to run a parameterised report as a snapshot, you must specify a default parameter to use when creating the snapshot. In contrast with reports that run on demand, it is not possible to specify a different parameter value for a report snapshot once the report is open.&lt;/P&gt;
&lt;P&gt;So how do we identify which reports to cache to improve performance? By default, Report Server saves all the details of reports that have executed in the Report Server database. This information can be accessed via the ExecutionLog2 view in SSRS 2008 or by &lt;A href="http://msdn.microsoft.com/en-us/library/ms155836(SQL.90).aspx" target=_blank&gt;this method in SSRS 2005&lt;/A&gt;. Robert Bruckner has written an excellent blog post detailing the information contained in the ExecutionLog2 view, which is &lt;A href="http://blogs.msdn.com/robertbruckner/archive/2009/01/05/executionlog2-view.aspx" target=_blank mce_href="http://blogs.msdn.com/robertbruckner/archive/2009/01/05/executionlog2-view.aspx"&gt;highly recommended reading&lt;/A&gt;. Using this data, we can analyse where these reports are spending most time during report execution (data retrieval, report processing or rendering). There’s a great article on the SQLCAT site on &lt;A href="http://sqlcat.com/technicalnotes/archive/2009/01/14/reporting-services-performance-optimizations.aspx" target=_blank mce_href="http://sqlcat.com/technicalnotes/archive/2009/01/14/reporting-services-performance-optimizations.aspx"&gt;Reporting Services Performance Optimisations&lt;/A&gt; which can help you to address some of these issues. Long-running reports or frequently accessed reports are going to give us greater performance improvements, so these would be good candidates for caching. The figure below shows an extract of data after running the following statement on the Report Server database:&lt;/P&gt;
&lt;P&gt;SELECT * FROM [ReportServer].[dbo].[ExecutionLog2]&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/photos/rob/images/3312096/original.aspx" target=_blank mce_href="http://blogs.technet.com/photos/rob/images/3312096/original.aspx"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; WIDTH: 817px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 73px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/CachingReportingServicesReportsforPerfor_8482/image_thumb.png" width=831 height=62 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/CachingReportingServicesReportsforPerfor_8482/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;So we can see that this report is taking 30 seconds to retrieve the data from the underlying data source. We can specify that this report is cached and that the cache will expire every 30 minutes by adjusting the &lt;A href="http://msdn.microsoft.com/en-us/library/ms178821.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms178821.aspx"&gt;Report Execution properties&lt;/A&gt; as shown below:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/photos/rob/images/3312097/original.aspx" target=_blank mce_href="http://blogs.technet.com/photos/rob/images/3312097/original.aspx"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/CachingReportingServicesReportsforPerfor_8482/image_thumb_1.png" width=498 height=247 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/CachingReportingServicesReportsforPerfor_8482/image_thumb_1.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The next time someone requests the report, the data will be retrieved from the data source and then cached in the ReportServerTempDB. Any subsequent requests from any user for that report (with the same parameter values) will be rendered from the cached copy. The output from the ExecutionLog2 view will now be as follows:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/photos/rob/images/3312098/original.aspx" target=_blank mce_href="http://blogs.technet.com/photos/rob/images/3312098/original.aspx"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/CachingReportingServicesReportsforPerfor_8482/image_thumb_2.png" width=834 height=70 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/CachingReportingServicesReportsforPerfor_8482/image_thumb_2.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As we can see, the report&amp;nbsp;is now&amp;nbsp;rendered from cache and the data source not queried, resulting in a&amp;nbsp;huge performance improvement. If we change the parameters of the report, then we will go back to the data source to retrieve the new data and a temporary cached copy of the report will be created for the new combination of parameters:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/photos/rob/images/3312099/original.aspx" target=_blank mce_href="http://blogs.technet.com/photos/rob/images/3312099/original.aspx"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/CachingReportingServicesReportsforPerfor_8482/image_thumb_3.png" width=835 height=94 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/CachingReportingServicesReportsforPerfor_8482/image_thumb_3.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I worked recently with a customer who had set up caching for a report but they were using dynamic date functions in the values for their parameters. Every time the report was executed they had different values for the start and end date parameters, so they were constantly hitting the database with new queries even though they only required to report on the data from the previous evening. We were able to schedule a snapshot of the report to run each evening and then render the reports from that snapshot throughout the day… report execution time went from 20 minutes to a few milliseconds as a result ! The benefit of scheduling a snapshot is that the data is already pre-loaded in cache ready for users the next morning. We don’t suffer the initial performance hit that the first user would experience (in order to refresh data) if we used a temporary cached report.&lt;/P&gt;
&lt;P&gt;As you can see, utilising SSRS's&amp;nbsp;caching mechanisms&amp;nbsp;can provide a very powerful&amp;nbsp;way to improve report processing performance and to lighten the load on your database servers !&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3312039" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/2005/">2005</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance/">Performance</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Reporting+Services/">Reporting Services</category></item><item><title>Scottish SQL Server User Group Meeting - Oct 8th</title><link>http://blogs.technet.com/b/rob/archive/2009/09/24/scottish-sql-server-user-group-meeting-oct-8th.aspx</link><pubDate>Thu, 24 Sep 2009 18:38:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3282954</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3282954</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2009/09/24/scottish-sql-server-user-group-meeting-oct-8th.aspx#comments</comments><description>&lt;P&gt;I have the great pleasure of speaking at the next Scottish SQL Server User Group meeting being held in Mocrosoft's Edinburgh ofice on Thursday the 8th of October. Full details can be found on the &lt;A href="http://www.sqlserverfaq.com/events/202/SQL-Server-Performance-Analysis-Tools-and-Powershell.aspx" target=_blank mce_href="http://www.sqlserverfaq.com/events/202/SQL-Server-Performance-Analysis-Tools-and-Powershell.aspx"&gt;UK User Group site&lt;/A&gt;. My talk will focus on some of the great tools we have for collecting and analysing SQL Server performance data. Martin Bell MVP will also be talking about using Powershell with SQL Server, which should be excellent as always.&lt;/P&gt;
&lt;P&gt;Hope to see you there !&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3282954" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-28-29-54/Performance-Tools.pptx" length="1974164" type="application/vnd.openxmlformats-officedocument.pres" /><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Tools/">Tools</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance/">Performance</category><category domain="http://blogs.technet.com/b/rob/archive/tags/User+Group/">User Group</category></item><item><title>Troubleshooting SQL Server 2008 Performance Problems</title><link>http://blogs.technet.com/b/rob/archive/2009/04/12/troubleshooting-sql-2008-performance-problems.aspx</link><pubDate>Sun, 12 Apr 2009 23:26:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3225605</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3225605</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2009/04/12/troubleshooting-sql-2008-performance-problems.aspx#comments</comments><description>&lt;P&gt;A new whitepaper covering the topic of performance troubleshooting in SQL Server 2008 has now been released. You can&amp;nbsp;download the paper&amp;nbsp;from the following link:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd672789.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/dd672789.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd672789.aspx&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3225605" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance/">Performance</category></item><item><title>SQL Server 2005 Multi-Site Clustering with Windows Server 2008</title><link>http://blogs.technet.com/b/rob/archive/2009/03/15/sql-server-2005-multi-site-clustering-with-windows-server-2008.aspx</link><pubDate>Sun, 15 Mar 2009 22:12:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213295</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3213295</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2009/03/15/sql-server-2005-multi-site-clustering-with-windows-server-2008.aspx#comments</comments><description>&lt;P&gt;I was working recently with a customer who was looking to deploy a SQL Server 2005 cluster across 2 geographically dispersed sites using Windows Server 2008. They were looking to utilise the new clustering improvements in Windows Server 2008 to build a highly available SQL Server solution. The customer required automatic failover between the sites in the event of a disaster, but their current solution required manual intervention by an administrator in order to failover to the disaster recovery site. Automatic failover would increase application availability, and reduce the complexity of the solution. Each site has it's own SAN storage and the customer planned to replicate data between each site using SRDF replication.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;This led me to do further research into clustering SQL Server in this type of environment. Windows Server 2008 introduces greater flexibility in the choice of Quorum configuration. The concept of quorum moves away from the requirement of a shared storage resource, but now refers to the number of votes needed to establish a majority. All nodes and a witness resource&amp;nbsp; can get a vote, which removes the disk as the single point of failure as in previous clustering models. The 4 Quorum Models available are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Node and Disk Majority &lt;/LI&gt;
&lt;LI&gt;Disk Only &lt;/LI&gt;
&lt;LI&gt;Node Majority &lt;/LI&gt;
&lt;LI&gt;Node and File Share Majority &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;As there is no shared storage between the nodes in a multi-site cluster, 2 of these Quorum models are suitable for multi-site clustering: Node Majority and Node and File Share Majority. Node and Disk Majority and Disk Only should only be used in a multi-site cluster if specifically directed by your storage vendor as your disk replication software needs to support these configurations.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Node and File Share Majority:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This allows the creation of up to 16 nodes with no shared disks. A file share acts as a witness, meaning that a 2 node cluster will have have 3 votes, so connectivity can be lost by either one of the nodes or the witness and the cluster can still continue to function. &lt;/P&gt;
&lt;P&gt;A cluster quorum configured to use a node-and-file-share majority is a great solution for multi-site clusters. The file share witness can reside at a third site independent of either site hosting a cluster node for high disaster resilience. A single file server can serve as a witness to multiple clusters (with each cluster using a separate file share witness on the file server).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_4.png" mce_href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_thumb_1.png" width=240 height=170 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;This configuration gives the highest resilience as the cluster can automatically recover from the loss of any one site without manual intervention.&lt;/P&gt;
&lt;P&gt;The File Share Witness (FSW) needs to be in the same forest as the nodes and be running Windows Server 2003 or Windows Server 2008. For maximum resilience, it is best to locate the FSW at a 3rd site separate from the cluster nodes. The FSW does not need to be attached to shared storage and should NOT be a node in the same cluster.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR&gt;Node Majority:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A node-majority cluster consists of 3 or more nodes without shared storage. Each of the nodes has a vote and there is no shared disk vote. A majority of votes are necessary to operate the cluster if 2 nodes fail in a 3 node cluster, then the remaining node drops out of the cluster. An administrator can manually over-ride this and force the remaining node to start. When the other nodes come back, majority quorum is achieved again and the cluster comes back online seamlessly.&lt;/P&gt;
&lt;P&gt;This configuration works best with an odd number of cluster nodes as it is not enough to have half the cluster nodes functioning in this model. If four nodes were set up in a node-majority configuration, the cluster would continue to operate with the loss of one node but not with the loss of two nodes. You should use an odd number of nodes with Node Majority as 4 nodes can only survive 1 failure, which is the same as 3 nodes.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_2.png" mce_href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_thumb.png" width=240 height=133 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The node-majority quorum configuration can work when there is more than one cluster node at each site. Consider a multi-site cluster consisting of five nodes, three of which reside at Site A and the remaining two at Site B. With a break in connectivity between the two sites, Site A can still communicate with three nodes (which is greater than 50 percent of the total), so all of the nodes at Site A stay up. The nodes in Site B are able to communicate with each other, but no one else. Since the two nodes at Site B cannot communicate with the majority, they drop out of cluster membership. (Were Site A is to go down in this case, in order to bring up the cluster at Site B, it would require manual intervention to override the non-majority.)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_6.png" mce_href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_6.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_thumb_2.png" width=240 height=143 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2005GeoClusteringwithWindowsSer_14C48/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;As a result, the Node Majority configuration does not give automatic failover between sites as nodes 4 and 5 cannot achieve quorum. In this situation, you would need to manually force a failover. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SQL Server Networking Considerations:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Windows Server 2008 now allows nodes in the same cluster to reside in different network subnets and communicate across network routers. &lt;STRONG&gt;However, be aware that SQL Server 2005 and 2008 still require all cluster nodes to reside in the same network subnet, so you will still need to set up virtual local area networks (VLANs) to connect geographically separated cluster nodes. &lt;/STRONG&gt;This can have some benefits with regard to client response times though, as DNS replication may impact client re-connection times in the event of a failover from one site to another. VLAN's allow DNS names to stay the same, so can increase availability.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Storage Considerations:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;As there is no shared storage between the nodes in a multi-site cluster, the main consideration is how to keep the data replicated between the sites. The choice of 3rd-party replication solution is important and can have a major effect on how you deploy your cluster. As such, you should work closely with your storage vendor from an early stage in the design process.&lt;/P&gt;
&lt;P&gt;Synchronous replication results in no data loss, but requires shorter distances between nodes and higher bandwidth to avoid write latency from impacting performance. Asynchronous allows you to stretch cluster nodes across longer distances, however there is a potential for data loss in the event of a failure. Asynchronous data replication also assumes a large enough network bandwidth to keep up with data changes and does not significantly impact application performance.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;As data replication is key in a multi-site SQL Server cluster, work with your storage vendor from an early stage to ensure they support your cluster configuration. Multi-site clustering allows you to achieve high availability and disaster recovery, however it can be a costly and complex solution. You should evaluate your business requirements first and then decide on the best technology to meet these. It could be the case that Database Mirroring, for example, could be used to give you the required level of resilience across geographical sites.&lt;/P&gt;
&lt;P&gt;In this case, the customer chose to implement a 2-node, 3-site solution using the Node and File Share Majority quorum model, with a File Share Witness located in the 3rd site. This gives site-level resilience in the event of a disaster and also allows automatic failover between the cluster nodes without having to re-write client applications, meeting the business requirements.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Additional Resources:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=75566F16-627D-4DD3-97CB-83909D3C722B&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=75566F16-627D-4DD3-97CB-83909D3C722B&amp;amp;displaylang=en"&gt;Windows Server 2008 Multi-Site Clustering Whitepaper&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032364834&amp;amp;CountryCode=US" target=_blank mce_href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032364834&amp;amp;CountryCode=US"&gt;TechNet Webcast: Geographically Dispersed Failover Clustering in Windows Server 2008&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032364842&amp;amp;CountryCode=US" target=_blank mce_href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032364842&amp;amp;CountryCode=US"&gt;TechNet Webcast: Failover Clustering and Quorum in Windows Server 2008 Enterprise&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://support.microsoft.com/default.aspx?scid=kb;en-us;953170&amp;amp;sd=rss&amp;amp;spid=2855" target=_blank mce_href="http://support.microsoft.com/default.aspx?scid=kb;en-us;953170&amp;amp;sd=rss&amp;amp;spid=2855"&gt;Support Webcast: Microsoft SQL Server 2005 Failover Clustering on Windows Server 2008&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms179530(SQL.90).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms179530(SQL.90).aspx"&gt;How to: Create a New SQL Server 2005 Failover Cluster (Setup)&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213295" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Windows/">Windows</category><category domain="http://blogs.technet.com/b/rob/archive/tags/High+Availability/">High Availability</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Clustering/">Clustering</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2005/">2005</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category></item><item><title>Performance Dashboard Reports for SQL Server 2008</title><link>http://blogs.technet.com/b/rob/archive/2009/02/18/performance-dashboard-reports-for-sql-server-2008.aspx</link><pubDate>Wed, 18 Feb 2009 17:20:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3204082</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>26</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3204082</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2009/02/18/performance-dashboard-reports-for-sql-server-2008.aspx#comments</comments><description>&lt;p&gt;During a recent visit to Seattle for a Microsoft conference, I&amp;nbsp;learned from my colleague Michael Thomassy&amp;nbsp;that it's possible to run the SQL Server 2005 Performance Dashboard reports on SQL Server 2008, with a slight modification. There is a great&amp;nbsp;new feature in SQL Server 2008 called&amp;nbsp;Performance Data Collection, which I have &lt;a target="_blank" href="http://blogs.technet.com/rob/archive/2008/06/20/sql-server-2008-performance-studio.aspx"&gt;blogged about in the past&lt;/a&gt;, and this is excellent for tracking&amp;nbsp;SQL Server performance over time across your 2008&amp;nbsp;estate. There is also the excellent revamped&amp;nbsp;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/cc879320.aspx"&gt;Activity Monitor&lt;/a&gt; in SQL 2008. However, if you want to continue to use the Performance Dashboard reports, which many DBA's have found invaluable, they are not supported in SQL Server 2008. If you try to install the Performance Dashboard reports, you&amp;nbsp;get the following error:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #ff3300;"&gt;Msg 207, Level 16, State 1, Procedure usp_Main_GetCPUHistory, Line 6&lt;br /&gt;Invalid column name 'cpu_ticks_in_ms'.&lt;br /&gt;Msg 15151, Level 16, State 1, Line 1&lt;br /&gt;Cannot find the object 'usp_Main_GetCPUHistory', because it does not exist or you do not have permission.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The reason for this is due to a change in the sys.dm_os_sys_info DMV from SQL Server 2005 to 2008 (the cpu_ticks_in_ms column has been removed&amp;nbsp;in 2008 &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms175048.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms175048.aspx&lt;/a&gt;). Download and install the &lt;a target="_blank" href="http://blogs.technet.com/rob/archive/2008/06/12/sql-server-2005-performance-dashboard.aspx"&gt;performance dashboard reports&lt;/a&gt; as normal (but save the files in the Program Files\Microsoft SQL Server\&lt;strong&gt;100&lt;/strong&gt;\Tools\PerformanceDashboard directory) and then&amp;nbsp;modify the setup.sql file as shown below before&amp;nbsp;running it against your SQL Server 2008 instance.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-64-22/2553.Capture.PNG" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Please note that SQL Server 2008&amp;nbsp;has introduced new wait types that the Performance Dashboard reports currently&amp;nbsp;don't handle. I would strongly recommend using the new Management Data Warehouse reports in SQL Server 2008 in order to get the best user&amp;nbsp;experience. However, this workaround will help you get the Performance Dashboard Reports up and&amp;nbsp;running on your SQL Server 2008 instances (see the screenshot below).&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://blogs.technet.com/photos/rob/images/3204100/original.aspx"&gt;&lt;img height="116" width="160" src="http://blogs.technet.com/photos/rob/images/3204100/secondarythumb.aspx" alt="Click to see larger version" title="Click to see larger version" style="width: 160px; height: 116px;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3204082" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance+Dashboard+Reports/">Performance Dashboard Reports</category></item><item><title>Scottish SQL Server User Group Meeting - 29th January</title><link>http://blogs.technet.com/b/rob/archive/2009/01/27/scottish-sql-server-user-group-meeting-29th-january.aspx</link><pubDate>Wed, 28 Jan 2009 00:41:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3192376</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3192376</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2009/01/27/scottish-sql-server-user-group-meeting-29th-january.aspx#comments</comments><description>&lt;P&gt;I have uploaded my slides from my Upgrading to SQL Server 2008 session at the recent Scottish SQL Server User Group meeting held in Edinburgh on the 29th January. It was good to see a number of new faces at the meeting,&amp;nbsp;and if you fancy coming along in the future, register for updates at the url below:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.sqlserverfaq.com/"&gt;http://www.sqlserverfaq.com/&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have any other questions, please drop me an email.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3192376" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-19-23-76/Upgrade2008.pptx" length="646620" type="application/vnd.openxmlformats-officedocument.pres" /></item><item><title>CU #3 for SQL Server 2008 Released</title><link>http://blogs.technet.com/b/rob/archive/2009/01/20/cu-3-for-sql-server-2008-released.aspx</link><pubDate>Tue, 20 Jan 2009 09:39:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3186301</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3186301</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2009/01/20/cu-3-for-sql-server-2008-released.aspx#comments</comments><description>&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;On January 19, 2009&amp;nbsp;Microsoft shipped the &lt;B&gt;Third&lt;/B&gt; Cumulative Update for SQL Server 2008 RTM.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"&gt;&lt;/v:path&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:lock aspectratio="t" v:ext="edit"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;v:shape style="Z-INDEX: -1; POSITION: absolute; MARGIN-TOP: 2.65pt; WIDTH: 182.25pt; HEIGHT: 155.95pt; VISIBILITY: visible; MARGIN-LEFT: 404.35pt; mso-wrap-distance-left: 2.88pt; mso-wrap-distance-top: 2.88pt; mso-wrap-distance-right: 2.88pt; mso-wrap-distance-bottom: 2.88pt; mso-position-horizontal: right" id=Picture_x0020_7 insetpen="t" alt="New Picture" type="#_x0000_t75" o:spid="_x0000_s1026"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;v:imagedata o:title="New Picture" src="file:///C:\Users\rocarrol\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"&gt;&lt;/v:imagedata&gt;&lt;?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" /&gt;&lt;w:wrap type="square"&gt;&lt;/w:wrap&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/v:shape&gt;&lt;FONT size=3 face=Calibri&gt;This CU represents &lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;36 Resolved Issues and &lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;30 Unique Customer Requests. More details and download details can be found here:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;A href="http://support.microsoft.com/kb/960484/en-us"&gt;http://support.microsoft.com/kb/960484/en-us&lt;/A&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1" class=MsoListParagraph mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3186301" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Support/">Support</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Cumulative+Update/">Cumulative Update</category></item><item><title>SQL Server 2008 Upgrade Technical Reference Guide Released</title><link>http://blogs.technet.com/b/rob/archive/2008/11/26/sql-server-2008-upgrade-technical-refernece-guide-released.aspx</link><pubDate>Wed, 26 Nov 2008 13:11:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3159771</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3159771</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2008/11/26/sql-server-2008-upgrade-technical-refernece-guide-released.aspx#comments</comments><description>&lt;P&gt;The &lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=66d3e6f5-6902-4fdd-af75-9975aea5bea7&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=66d3e6f5-6902-4fdd-af75-9975aea5bea7&amp;amp;displaylang=en"&gt;SQL Server 2008 Technical Reference Guide&lt;/A&gt; has just been released,&amp;nbsp;covering the essential steps and best practices&amp;nbsp;to upgrade existing 2000 and 2005 instances to 2008. There is also a list of other upgrade resources available at &lt;A href="http://msdn.microsoft.com/en-us/library/cc936623.aspx" minmax_bound="true"&gt;http://msdn.microsoft.com/en-us/library/cc936623.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;These guides are intended to suppliment the information already available in SQL Server 2008 Books Online.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3159771" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Tools/">Tools</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Upgrade/">Upgrade</category></item><item><title>SQL Server 2008 Cumulative Update #2 Released</title><link>http://blogs.technet.com/b/rob/archive/2008/11/18/cumulative-update-2-for-sql-server-2008-released.aspx</link><pubDate>Tue, 18 Nov 2008 14:09:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3155750</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3155750</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2008/11/18/cumulative-update-2-for-sql-server-2008-released.aspx#comments</comments><description>&lt;P&gt;Cumulative Update package 2 has now been released for SQL Server 2008. See the following KB article for full details:&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://support.microsoft.com/kb/958186/en-us" target=_blank mce_href="http://support.microsoft.com/kb/958186/en-us"&gt;http://support.microsoft.com/kb/958186/en-us&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3155750" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Support/">Support</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Cumulative+Update/">Cumulative Update</category></item><item><title>Scottish Area SQL Server User Group</title><link>http://blogs.technet.com/b/rob/archive/2008/11/06/scottish-area-sql-server-user-group.aspx</link><pubDate>Fri, 07 Nov 2008 02:53:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3148841</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3148841</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2008/11/06/scottish-area-sql-server-user-group.aspx#comments</comments><description>&lt;P&gt;I'm happy to announce that the next Scottish SQL Server User Group will be hosted at Microsoft Edinburgh on the evening of the 13th November. Full details of the agenda and how to register can be found on the UK SQL Server User Group site here:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlserverfaq.com/events/144/Scottish-Area-SQL-Server-User-Group-Jammin-SQL-Server-2008.aspx" mce_href="http://sqlserverfaq.com/events/144/Scottish-Area-SQL-Server-User-Group-Jammin-SQL-Server-2008.aspx"&gt;http://sqlserverfaq.com/events/144/Scottish-Area-SQL-Server-User-Group-Jammin-SQL-Server-2008.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The theme of the meeting is "Jammin' with SQL Server 2008", so I'm looking forward to some freestyle SQL Server 2008 demos and discussions !&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3148841" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category><category domain="http://blogs.technet.com/b/rob/archive/tags/User+Group/">User Group</category></item><item><title>Weird Problem with Virtual PC 2007</title><link>http://blogs.technet.com/b/rob/archive/2008/07/16/weird-problem-with-virtual-pc.aspx</link><pubDate>Wed, 16 Jul 2008 18:54:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3089716</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3089716</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2008/07/16/weird-problem-with-virtual-pc.aspx#comments</comments><description>&lt;P&gt;Had a weird problem with Virtual PC 2007 where the blue screen would flash up when I ran the program, yet the console window would not appear even though Virtual PC was running in the task manager and the system tray.&amp;nbsp;The Virtual PC&amp;nbsp;console had effectively disappeared. All this was bad enough, but this happened to me when I was visiting a customer site and just about to demo some cool new features of SQL Server 2008 ! I had even checked my demos before setting out that morning, so this was very weird (and not to mention embarrassing) ! After uninstalling and reinstalling and scratching my head for a while, I came across the solution here...&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.essjae.com/blog/default.asp?id=43" mce_href="http://www.essjae.com/blog/default.asp?id=43"&gt;http://www.essjae.com/blog/default.asp?id=43&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3089716" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/Windows/">Windows</category></item><item><title>SQL Server 2008 - Performance Studio</title><link>http://blogs.technet.com/b/rob/archive/2008/06/20/sql-server-2008-performance-studio.aspx</link><pubDate>Fri, 20 Jun 2008 19:50:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3075089</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>13</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3075089</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2008/06/20/sql-server-2008-performance-studio.aspx#comments</comments><description>&lt;P&gt;I've been looking at this new feature of SQL Server 2008 in order to demo it to customers, and I have to say it's pretty cool ! Along with Resource Governor and compression, it's one of my favourite new features and a good reason to consider an upgrade. Performance Studio builds on the concept of the Database Reports in SQL Server 2005 and the Performance Dashboard introduced in SQL Server 2005 SP2. Like it's predecessors, it's built on top of standard DMV's but with one crucial advantage... data is historical and is persisted across service restarts. Previously, you had to roll your own code in order to persist DMV data, now SQL Server 2008 gives you it straight out the box.&lt;/P&gt;
&lt;P&gt;Setting it up is easy... expand the 'Management' folder and then right-click 'Data Collection' then 'Configure Management Data Warehouse'. This opens a wizard which guides you through the configuration of the Management Data Warehouse (MDW). Select the 'Create or Upgrade a Management Data Warehouse' option and enter your server details. You can either configure a new database or use an existing one in order to collect the performance data.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/mdw_config_2.jpg" mce_href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/mdw_config_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=132 alt=mdw_config src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/mdw_config_thumb.jpg" width=244 border=0 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/mdw_config_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Once the MDW has been configured, run through the wizard again and select the 'Set up Data Collection' option. At this point you need to also ensure that SQL Server Agent is running or else the performance counters will not be uploaded to the database. Also, SQL Server Integration Services is required to manage collections. There are 3 new database roles in the MDW database: MDW Admin, MDW Writer, MDW Reader. It's a good idea to restrict access to this database, especially if you are collecting sensitive data. Performance Studio will only collect data against SQL Server 2008 databases, so unfortunately you can't use it to monitor older versions of SQL Server. MSDB is used to store the log entries, Agent jobs and SSIS packages.&lt;/P&gt;
&lt;P&gt;When creating the MDW, plan for data growth of up to 250 - 500 MB a day, depending on your query plans and consider running an archive job to aggregate summary data before SQL Server runs it's purge job after 14 days. Regarding performance overhead, Microsoft detected approximately 3 - 4% increase in CPU performance on it's TPC-C tests, which is fairly low overhead.&lt;/P&gt;
&lt;P&gt;Performance Studio comes with 3 built-in Collection Sets: Disk Usage Collection Set, Query Activity Collection Set and Server Activity Collection Set. The Disk Usage Collection Set collects data every 6 hours and retains it for a default of 730 days. It gathers data and log disk usage and plots them over time. This gives a nice visual view of data file growth over time.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/disk_usage_2.jpg" mce_href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/disk_usage_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=160 alt=disk_usage src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/disk_usage_thumb.jpg" width=244 border=0 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/disk_usage_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The Query Activity Collection Set uploads query activity every 15 minutes and retains it for 14 days. It caches active sessions and requests from DMV's every 10 seconds. It uses dm_exec_query_stats and uploads the 3 most "interesting" queries and any queries where the query plan has changed. What constitutes an interesting query, I have no idea :-) These can then be viewed graphically based on CPU, Duration, Total I/O, Physical Reads or Logical Writes. You can drill-down into the reports to show the query text, query plan, showplan and any missing indexes identified that could improve the query execution.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/queries_2.jpg" mce_href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/queries_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=186 alt=queries src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/queries_thumb.jpg" width=244 border=0 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/queries_thumb.jpg"&gt;&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The Server Activity Collection Set may turn out to be the most useful performance tuning weapon. Data is uploaded every 15 minutes to the MDW and is collected every 10/60 seconds depending on the particular counter. This data is retained for 14 days before being purged. It collects data on Server CPU usage, Memory, Waitstats, Disk I/O and Network Usage, amongst others. Again, you can click through these reports for detailed information.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/server_2.jpg" mce_href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/server_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=221 alt=server src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/server_thumb.jpg" width=244 border=0 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/server_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;In addition to the built-in functionality, you can also create your own collection sets, however be careful doing this or you may end up collecting huge amounts of data, particularly if you run a SQL Trace collection. If you do want to&amp;nbsp;create a custom Profiler collection, set up a trace in Profiler then select the "Save as Trace Collection" option. This will then script out the XML trace definition for you which can then be executed against your SQL Server system...&amp;nbsp;simple as that&amp;nbsp;!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/profiler_2.jpg" mce_href="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/profiler_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=118 alt=profiler src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/profiler_thumb.jpg" width=244 border=0 mce_src="http://blogs.technet.com/blogfiles/rob/WindowsLiveWriter/SQLServer2008PerformanceStudio_EFC0/profiler_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;For more information, see the following Webcast. It's well worth taking a look !&lt;/P&gt;
&lt;P&gt;&lt;A title=https://msevents.microsoft.com/cui/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032349947&amp;amp;CountryCode=US href="https://msevents.microsoft.com/cui/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032349947&amp;amp;CountryCode=US" mce_href="https://msevents.microsoft.com/cui/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032349947&amp;amp;CountryCode=US"&gt;https://msevents.microsoft.com/cui/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032349947&amp;amp;CountryCode=US&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3075089" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Tools/">Tools</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance/">Performance</category></item><item><title>Indexing Strategies</title><link>http://blogs.technet.com/b/rob/archive/2008/06/17/indexing-strategies.aspx</link><pubDate>Tue, 17 Jun 2008 10:02:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3072266</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3072266</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2008/06/17/indexing-strategies.aspx#comments</comments><description>&lt;P&gt;I attended&amp;nbsp;a SQL Server User Group meeting earlier this year and heard a presentation about favourite DMV's.&amp;nbsp;Mentioned in the discussion was sys.dm_db_index_usage_stats and that got me thinking about indexing strategies. I have been involved in performance troubleshooting databases that have used a variety of indexing stategies, ranging from none to lots of narrow indexes on practically every column ! However, there is no right and wrong indexing strategy, it depends entirely on your application and the type and frequency of queries being executed against the database.&lt;/P&gt;
&lt;P&gt;So how do you know if you have a problem? For me, it's usually when users tell me that the application is "running slow" or they get timeouts. However, poor perfomance&amp;nbsp;can be open to interpretation. There could be a whole host of factors&amp;nbsp;to take into account when you are dealing with web applications, such as network connections&amp;nbsp;and&amp;nbsp;web servers problems.&amp;nbsp;However,&amp;nbsp;this shows that you need to have good benchmarks in place in order to compare performance over a period of time. Another sign could be high CPU, high memory usage or increased disk IO activity. The SQLCAT team has a post detailing the top &lt;A class="" href="http://sqlcat.com/top10lists/archive/2007/11/21/top-sql-server-2005-performance-issues-for-oltp-applications.aspx" target=_blank mce_href="http://sqlcat.com/top10lists/archive/2007/11/21/top-sql-server-2005-performance-issues-for-oltp-applications.aspx"&gt;OLTP performance issues on 2005&lt;/A&gt; and some basic performance counters to monitor can be &lt;A class="" href="http://www.sqlservercentral.com/articles/Administering/performancemonitoringbasiccounters/1348/" target=_blank mce_href="http://www.sqlservercentral.com/articles/Administering/performancemonitoringbasiccounters/1348/"&gt;found here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;So once you've determined that there is a problem, what do you do? If you know the specific query that is causing the issue, then you can&amp;nbsp;verify the query execution plan. You do this by chosing the 'Display Estimated Execution Plan' option under the 'Query' menu in Management Studio. This does not execute the query, but returns the estimated execution plan based on the statistics the server has. As a result, you need to ensure that the statistics are up to date, or you may get the wrong results. It's also a good idea to turn on statistics IO. Things to look out for in the execution plan are table or index scans and hash aggregates. Scans imply that there are no indexes for SQL Server to use or the indexes are not selective enough and SQL Server has decided it's less expensive to run a scan. Bear in mind that a clustered index scan is exactly the same as a table scan. Hash aggregates have to create a worktable i.e. a temp table in TempDB. Watch out for Hash aggregates as Statistics IO does not show the cost of the worktables, which can often be very expensive. As a rule of thumb, anytime you see "Hash" in your plan it means temp tables and this can be done better ! Another cool thing about showplan is that you can force the queries to use different indexes and run them side by side. This will show the execution plan for both queries and the cost of each relative to the batch. This is a quick way to see which index choices&amp;nbsp;are most expensive.&lt;/P&gt;
&lt;P&gt;However, on shared systems with multiple applications running against the SQL Server instance, chances are you will not know the queries that are causing the performance issues and you will need to do some digging. You can use DMV's in 2005, but as I work in a mixed environment (2000 and 2005) I prefer to use profiler to give me an idea what is going on. I run a server side trace and remotely log the results to a file as oppossed to a SQL Server table to minimise overhead on the system. I will typically run this for short periods (10 - 15 mins)&amp;nbsp;just to get a feel for the queries executing against the server. This is a quick way to see if there are any expensive queries running and how frequently. This gives me some clues as to which database is causing the problems. Once I know this, I can really focus in on that database application.&amp;nbsp;More information on running Profiler traces is available &lt;A class="" href="http://www.sql-server-performance.com/article_print.aspx?id=110&amp;amp;type=tip" target=_blank mce_href="http://www.sql-server-performance.com/article_print.aspx?id=110&amp;amp;type=tip"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Once I have identified the database, the hardest part is deciding which queries to index. Lots of frequently run queries can give you a far bigger overall performance gain than a large query run once a month. It is important to use Profiler and run traces over longer periods to get a feel for the mix of reads and writes. Never build an index in isolation, always consider the workload over the course of time. You can then combine these traces with DTA in order to fully analyse your workload and come up with the proper indexing strategy based on your application's specific needs. It is also worth restoring a backup of your database on a test system and use this for running your DTA analysis on.&amp;nbsp;I cannot stress highly enough, do not create indexes for indexes sake. I often ask the question when interviewing, "when would droping an index actually help to increase performance"? A lot of people are conditioned to believe that you need to build lots of indexes to increase performance, but this is not true. If you have lots of inserts, updates and deletes then this is a significant overhead to keep all these indexes updated if they are not required in the first place.&lt;/P&gt;
&lt;P&gt;Before going off and building indexes it is worth looking at alternative options. It is a good idea to update your statistics to ensure that SQL Server has&amp;nbsp;most up to date information to work out the optimal execution plan. If you are working with&amp;nbsp;stored procedures, you can consider recompiling them. You can also consider re-writting the code, especially if you are using cursors!&lt;/P&gt;
&lt;P&gt;Generally, SQL Server does better with wider indexes (covering several columns) and fewer of them than it does with narrower ones. Narrow indexes will require a bookmark lookup to get the rest of the data if you don't cover the query. Bookmark lookups are expensive and SQL Server may even decide not to use the index at all and perform a table scan. In this situation, the narrow indexes will not be used and are an unecesary overhead. You can use the DMV sys.dm_db_missing_index_details to see which multi-column indexes could give better performance. Another word of warning here if you are using the 2005 DMV's, such as sys.dm_db_index_usage_stats. Remember that the data in these DMV's is not persisted across server shutdowns, or database restores. Do not assume that because the DMVs show that an index has not been used you can safely drop it. This only means that it hasn't been used since the cache was cleared out. If you are going to rely on the DMV's, you need to persist the data over a period of time and then analyse it. This is easy to do as you can select directly from the DMV's into tables, which can then persist the data. A good time period would be to persist the data every 30 mins. Paul Randal has a post here with information how to&amp;nbsp;&lt;A class="" href="http://www.sqlskills.com/blogs/paul/2007/10/05/IndexesFromEveryAngleHowCanYouTellIfAnIndexIsBeingUsed.aspx" target=_blank mce_href="http://www.sqlskills.com/blogs/paul/2007/10/05/IndexesFromEveryAngleHowCanYouTellIfAnIndexIsBeingUsed.aspx"&gt;persist&amp;nbsp;the index usage data from&amp;nbsp;DMVs&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The final thing I'd like to say about indexing (for the time being !) is that you can't just create indexes and walk away. You need to regularly maintain them in order to reduce fragmentation. Fragmentation in indexes can be caused by inserts, updates and deletes and can be a problem if you have a busy system. By default, indexes are created with 100% fill factor, which means they are densely packed as soon as you create them. If you then need to insert rows or update data, SQL Server will need to carry out page splits in order to do so. To avoid this happening, it is advisable to create indexes with a fill factor of around 80 - 90%, however this may vary&amp;nbsp;depending on the frequency of data updates. Not only will this increase the performance of inserts and updates, it will also keep fragmentation at a minimum. You can check for fragementation using DBCC SHOWCONTIG (2000) and sys.dm_db_index_physical_stats (2005) and remove fragmentation using DBCC INDEXDEFRAG or DBCC DBREINDEX in 2000, and ALTER INDEX REORGANIZE or REBUILD in 2005. There is further information and advce here for &lt;A class="" href="http://www.sqlskills.com/blogs/paul/2008/01/27/SearchEngineQA10RebuildingIndexesAndUpdatingStatistics.aspx" target=_blank mce_href="http://www.sqlskills.com/blogs/paul/2008/01/27/SearchEngineQA10RebuildingIndexesAndUpdatingStatistics.aspx"&gt;rebuilding indexes and updating statistics&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;This is a huge topic and I could go on all day, but the importance of good indexing cannot be stressed highly enough ! In summary, you need to ensure that you understand your application's workload, you need to check that the indexes you have are&amp;nbsp;actually being used&amp;nbsp;and that you are not missing any indexes. Finally, you need to maintain your indexes so they are kept in optimal shape. Good indexing means good performance&amp;nbsp;which means&amp;nbsp;happy users !&lt;/P&gt;
&lt;P&gt;[This was originally posted on &lt;A href="http://sqlblogcasts.com/"&gt;http://sqlblogcasts.com/&lt;/A&gt; in&amp;nbsp;February 2008]&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3072266" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Tools/">Tools</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance/">Performance</category></item><item><title>SQL Server 2005 Performance Dashboard</title><link>http://blogs.technet.com/b/rob/archive/2008/06/12/sql-server-2005-performance-dashboard.aspx</link><pubDate>Thu, 12 Jun 2008 14:25:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3069902</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3069902</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2008/06/12/sql-server-2005-performance-dashboard.aspx#comments</comments><description>&lt;p&gt;I've had one or two requests recently to set up the Performance Dashboard reports on SQL Server so I've created this blog post to step through the process. Firstly, the Performance Dashboard was created to allow customers and support engineers to monitor the general performance characteristics of a server and investigate the cause of any performance problems that may occur. The goal of the Performance Dashboard is to reduce the time spent discovering the problem so effort can be focused on actually resolving it.&lt;/p&gt;
&lt;p&gt;The SQL Server 2005 Performance Dashboard Reports are available for &lt;a href="http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&amp;amp;id=22602" target="_blank"&gt;download here&lt;/a&gt;. The Performance Dashboard reports are built on the SQL Server 2005 dynamic management views,&amp;nbsp;accessing data that is already captured by SQL Server 2005.&amp;nbsp; Consequently there is no performance impact of using the dashboard except when you actually open/refresh a report. This allows engineers and customers to go much further on a performance problem while the problem is happening. The Performance Dashboard requires SQL Server 2005 SP2 or later.&lt;/p&gt;
&lt;p&gt;Install the Dashboard by running the msi from the link above, which will install to a default location of Program Files\Microsoft SQL Server\90\Tools\PerformanceDashboard. After setup finishes, open Management Studio and connect to the server and run the SETUP.SQL script (once for each SQL instance you want to monitor). Then from Object Explorer select the server, right mouse click and choose Reports &amp;ndash; Custom Reports and browse to find the PERFORMANCE_DASHBOARD_MAIN.RDL file. This report is the only report intended to be directly loaded from SSMS; all other reports are accessed as a drill through off of the main report. The help file, PERFDASH.CHM has details about setup and permission requirements, how each report is accessed, details about the general methodology used in the dashboard and how you can use/interpret the information on each individual report.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3069902" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2005/">2005</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Tools/">Tools</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance/">Performance</category><category domain="http://blogs.technet.com/b/rob/archive/tags/Performance+Dashboard+Reports/">Performance Dashboard Reports</category></item><item><title>SQL Server 2008 RC0 Available</title><link>http://blogs.technet.com/b/rob/archive/2008/06/10/sql-server-2008-rc0-available.aspx</link><pubDate>Tue, 10 Jun 2008 11:26:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3068905</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3068905</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2008/06/10/sql-server-2008-rc0-available.aspx#comments</comments><description>&lt;P&gt;The release of SQL Server 2008 has hit another milestone&amp;nbsp;with the news that&amp;nbsp;Release Candidate 0 (RC0) has been made available for &lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=35F53843-03F7-4ED5-8142-24A4C024CA05&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=35F53843-03F7-4ED5-8142-24A4C024CA05&amp;amp;displaylang=en"&gt;public download&lt;/A&gt; this morning. This was initially released to Technet Plus and MSDN subscribers last Friday. It is expected that this will be the final release prior to SQL Server 2008 RTM in Q3 this calendar year. This release includes support for upgrading failover clusters from previous versions of SQL Server, as well as several bug fixes and minor improvements that&amp;nbsp;have been&amp;nbsp;made in response to the customer feedback&amp;nbsp;Microsoft has&amp;nbsp;received from previous CTPs.&lt;/P&gt;
&lt;P&gt;Interest and excitement is continuing to build for the release of 2008, with 100,000 people downloading the last CTP (CTP6 Feb), and 250,000 total downloads of SQL Server 2008 CTP's. I am also seeing huge amounts of interest from customers who are looking to upgrade straight to 2008 to get the full benefit of features such as Policy Based Management, Resource Governor, Filestream data, Business Intelligence and Compression.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3068905" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/rob/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.technet.com/b/rob/archive/tags/2008/">2008</category></item><item><title>OpsDB SQL Server Automation Tools Released</title><link>http://blogs.technet.com/b/rob/archive/2008/06/04/opsdb-sql-server-automation-tools-released.aspx</link><pubDate>Wed, 04 Jun 2008 02:16:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3065646</guid><dc:creator>Rob_Carrol</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/rob/rsscomments.aspx?WeblogPostID=3065646</wfw:commentRss><comments>http://blogs.technet.com/b/rob/archive/2008/06/04/opsdb-sql-server-automation-tools-released.aspx#comments</comments><description>&lt;P&gt;A great set of SQL Server&amp;nbsp;automation tools has just been released by&amp;nbsp;Microsoft onto the SQL Server Community Worldwide site...&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlcommunity.com/ScriptsTools/OpsDBOperationsDatabaseforSQLServer/tabid/275/language/en-US/Default.aspx"&gt;http://sqlcommunity.com/ScriptsTools/OpsDBOperationsDatabaseforSQLServer/tabid/275/language/en-US/Default.aspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;These are excellent resources to add to your DBA toolset.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3065646" width="1" height="1"&gt;</description></item></channel></rss>