tag:blogger.com,1999:blog-66647015859718609852024-03-13T17:46:44.470+00:00SQL Server 365Chris McGowan's SQL Server perspicuity, for all things SQL related and some, no doubt, not!Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.comBlogger83125tag:blogger.com,1999:blog-6664701585971860985.post-7523738520238376822014-01-22T13:38:00.000+00:002014-01-22T13:38:11.121+00:00Volunteers Needed For PASS SUMMIT<span style="font-family: Arial, Helvetica, sans-serif;">Last night I submitted my application to volunteer for the 2014 PASS Summit Program Committee.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Not know what PASS is? head over to the <a href="http://www.sqlpass.org/Home.aspx" target="_blank"><span style="color: blue;">website</span></a> and check it out. </span><span style="font-family: Arial, Helvetica, sans-serif;">You can also get involved on </span><a href="http://twitter.com/sqlpass" style="font-family: Arial, Helvetica, sans-serif;" target="_blank"><span style="color: blue;">twitter</span></a><span style="font-family: Arial, Helvetica, sans-serif;"> I love the bio "Connect, Share, Learn</span><span style="font-family: Arial, Helvetica, sans-serif;">". This is in essence what PASS is all about, us as a community. I urge you to get involved and promise you it will benefit your career as a data professional.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">An event like PASS just wouldn't be possible without the sponsors and also the volunteers. Seeing as I will not be attending this year, I thought the least I could do is give up some of my spare time (or at least apply to) to help make PASS </span><span style="font-family: Arial, Helvetica, sans-serif;">Summit</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">the success it is.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Already registered with PASS? Did you know the Program Committee is looking for volunteers? Get noticed by adding your info to MyVolunteering in your #SQLPASS Profiles!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span>Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-40422501255541199582013-12-31T12:18:00.000+00:002013-12-31T12:18:01.451+00:002013 - The Year of Community Speaking<span style="font-family: Arial, Helvetica, sans-serif;">So, the end of 2013 is upon us and what a year it has been. The SQL Server 365 blog saw the number of site hits double from last year, which I am thrilled with. The biggest personal achievement this year was popping my speaking cherry at the Leeds SQL Server User Group, on top of that I also spoke at the inaugural Newcastle SQL Server User Group, many thanks to Chris Taylor for having me. If that wasn't enough I was also honored to have spoken at the Manchester leg of SQL Relay R2, taking my tally to 3 appearances, 2 user groups and 1 conference! I also attended my first virtual chapter, seeing as most of these are US time it works perfectly for me as they are around 18:00 or 19:00 UK time. These are definitely worth a look, some fantastic content that can be attended from anywhere, check out the <a href="http://www.sqlpass.org/PASSChapters/VirtualChapters.aspx"><span style="color: blue;">PASS </span></a>site for more details.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">So here is SQL Server 365 in numbers.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Site Hits - 24,210</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Total Posts - 81</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Top 5 Posts</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://sqlserver365.blogspot.co.uk/2012/01/dont-be-balloon.html"><span style="color: blue;">Don't be a Balloon</span></a> - 2447 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://sqlserver365.blogspot.co.uk/2012/01/sql-server-error-logs.html"><span style="color: blue;">SQL Server Error Logs</span></a> - 1134 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://sqlserver365.blogspot.co.uk/2013/02/cost-threshold-for-parallelism.html"><span style="color: blue;">Cost Threshold for Parallelism</span></a> - 897</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://sqlserver365.blogspot.co.uk/2013/02/script-replication-with-powershell.html"><span style="color: blue;">Script Replication with Powershell</span></a> - 716</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://sqlserver365.blogspot.co.uk/2013/05/dedicated-administrator-connection-dac.html"><span style="color: blue;">Dedicated administrator Connection</span></a> - 497 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Top 5 Countries</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">United States - 10,335 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">United Kingdom - 3528 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">India - 860 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Germany - 671 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">China - 647 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Top 5 Browsers</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Internet Explorer - 9573 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Chrome - 6377 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Firefox - 5604 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Safari - 829 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Mobile Safari - 232 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Top 5 OS's</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Windows - 20,626 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Macintosh - 1314 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Linux - 583 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">iPhone - 435 Views</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Android - 338 Views</span><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">In 2014 I want to get even more involved in our fantastic SQL Server community, I have a couple of ideas for some collaboration and networking, which I want to get the ball rolling with early in the new year. As for the blog I will continue to post as often as I can, I already have a backlog of about 5 posts to keep me busy.</span><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">If there is anything you would like me to to do a post on or would like to do a guest post then please get in touch and we can arrange it! <span style="color: black;">ckwmcgowan@gmail.com</span> or <span style="color: blue;"><a href="http://twitter.com/ckwmcgowan">@ckwmcgowan</a>.</span></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Thank you to the entire SQL Server community worldwide for their continuing support and general awesomeness, keep it up and hears to a prosperous 2014.</span><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">Happy New Year!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span>Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-88631527573989858552013-10-17T11:33:00.002+01:002013-10-17T11:36:13.117+01:00PASS Summit<span style="font-family: Arial, Helvetica, sans-serif;">It's that time of year again, the annual PASS Summit is under way in Charlotte, NC!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">For those of you who don't know, PASS Summit is the world's largest and most intensive technical training conference for Microsoft SQL Server and BI professionals. But more than that, it’s your conference – planned and presented by the SQL Server community for the SQL Server community.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Not everyone, myself included, is lucky enough to attend the PASS Summit, but all is not lost because we have the best community in the world! There are live sessions streamed throughout the day for FREE over on the PASS <a href="http://www.sqlpass.org/summit/2013/Live.aspx" target="_blank"><span style="background-color: white; color: blue;">website</span></a>. You can also download the session material where applicable and buy the session recordings. If you are a SQL Server professional I suggest you go and take a look, your head will explode with the amount of information, best practices, tips and tricks brought to you by some of the greatest SQL minds in the world!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">It is also worth keeping an eye on the #SQLPASS and #SUMMIT13 hashtags on twitter as there will be a multitude of blogs, scripts and slides relating to all things PASS :)</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Happy Learning, Enjoy!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><br />
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-69555690149507544032013-09-11T15:24:00.002+01:002013-09-11T15:24:51.915+01:00Encryption Decryption Routine<span style="font-family: Arial, Helvetica, sans-serif;">In this post we will look at a complete end to end routine for encrypting, storing, decrypting data in SQL Server and just how easy it is to set-up and maintain. SQL Server encrypts data with a hierarchical encryption and key management infrastructure. Each layer encrypts the layer below it by using a combination of certificates, asymmetric keys, and symmetric keys. It is important to understand the different layers of protection, how they interact the performance overhead and best practices. Books Online has a great visualisation of the SQL Server encryption hierarchy which I have included below.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-UH3TmM-59fQ/Ui8LzD3N3LI/AAAAAAAABig/qDNJjsVW9Vg/s1600/SQLServerEncryptionHierachy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://4.bp.blogspot.com/-UH3TmM-59fQ/Ui8LzD3N3LI/AAAAAAAABig/qDNJjsVW9Vg/s640/SQLServerEncryptionHierachy.png" width="465" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Script</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Below is the script used to create both the encryption / decryption routine and the equivalent routine without encryption. You will need to Modify the below;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="color: green; font-family: 'Courier New'; font-size: 10pt;">-- Change the database name below</span><br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
SQLServer365<span style="color: grey;">;<o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Change the path to the database master key backup<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">OPEN</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">MASTER</span> <span style="color: blue;">KEY</span> <span style="color: blue;">DECRYPTION</span> <span style="color: blue;">BY</span> <span style="color: blue;">PASSWORD</span> <span style="color: grey;">=</span> <span style="color: red;">'rZVb3DwZ8Vptc2#vm4wapspB'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BACKUP</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">MASTER</span> <span style="color: blue;">KEY</span> <span style="color: blue;">TO</span> <span style="color: blue;">FILE</span> <span style="color: grey;">=</span> <span style="color: red;">'C:\SQL\Backup\DatabaseMasterKeys\SQLServer365DatabaseMasterKey'</span>
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">ENCRYPTION</span> <span style="color: blue;">BY</span> <span style="color: blue;">PASSWORD</span> <span style="color: grey;">=</span> <span style="color: red;">'ratr7XgGGSJ5dM4QzAaXc8cj'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<span style="font-family: "Courier New"; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-GB; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-no-proof: yes;"><span style="color: red;"><br /></span></span>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- <o:p></o:p></span><span style="color: green; font-family: 'Courier New'; font-size: 13px;">Change the path to the certificate backup</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BACKUP</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">CERTIFICATE</span> CertBankDetails <span style="color: blue;">TO</span>
<span style="color: blue;">FILE</span> <span style="color: grey;">=</span> <span style="color: red;">'C:\SQL\Backup\Certificates\CertBankDetails'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
</div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<span style="font-family: "Courier New"; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-GB; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-no-proof: yes;"><span style="color: red;"><br /></span></span>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Encryption / Decryption Routine<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> For more SQL resources, check out
SQLServer365.blogspot.com<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may alter this code for your own
purposes.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may republish altered code as long as
you give due credit.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You must obtain prior permission before
blogging this code.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> THIS CODE AND INFORMATION ARE PROVIDED
"AS IS"<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
SQLServer365<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create table<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'dbo.BankDetails'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span> [type] <span style="color: grey;">=</span> <span style="color: red;">'U'</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TABLE</span> dbo<span style="color: grey;">.</span>BankDetails<span style="color: grey;">(<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> BankDetailsID <span style="color: blue;">INT</span> <span style="color: blue;">IDENTITY</span><span style="color: grey;">(</span>1<span style="color: grey;">,</span>1<span style="color: grey;">)</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL</span> <span style="color: blue;">CONSTRAINT</span> [PK_BankDetails:BankDetailsID] <span style="color: blue;">PRIMARY</span> <span style="color: blue;">KEY</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CustomerID <span style="color: blue;">INT</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SortCode <span style="color: blue;">VARBINARY</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> AccountNumber <span style="color: blue;">VARBINARY</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> InsertDate <span style="color: blue;">DATETIME</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL</span> <span style="color: blue;">CONSTRAINT</span> [DF_BankDetails:InsertDate] <span style="color: blue;">DEFAULT </span><span style="color: grey;">(</span><span style="color: magenta;">GETDATE</span><span style="color: grey;">())</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">)</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">ON</span> [PRIMARY]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">ELSE<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">PRINT</span> <span style="color: red;">'Error:
Table "dbo.BankDetails" already exists, please modify the script to
create a table name that does not already exist'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
database master key<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> This is the database master key that is
used to encrypt all certificates when a password is not supplied<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1 <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">symmetric_keys</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> name <span style="color: grey;">=</span> <span style="color: red;">'##MS_DatabaseMasterKey##'</span>
<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">MASTER</span> <span style="color: blue;">KEY</span> <span style="color: blue;">ENCRYPTION</span> <span style="color: blue;">BY</span> <span style="color: blue;">PASSWORD</span> <span style="color: grey;">=</span> <span style="color: red;">'rZVb3DwZ8Vptc2#vm4wapspB'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">ELSE<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">PRINT</span> <span style="color: red;">'Error:
Database master key already exists!'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Backup master
key<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">OPEN</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">MASTER</span> <span style="color: blue;">KEY</span> <span style="color: blue;">DECRYPTION</span> <span style="color: blue;">BY</span> <span style="color: blue;">PASSWORD</span> <span style="color: grey;">=</span> <span style="color: red;">'rZVb3DwZ8Vptc2#vm4wapspB'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BACKUP</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">MASTER</span> <span style="color: blue;">KEY</span> <span style="color: blue;">TO</span> <span style="color: blue;">FILE</span> <span style="color: grey;">=</span> <span style="color: red;">'C:\SQL\Backup\DatabaseMasterKeys\SQLServer365DatabaseMasterKey'</span>
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">ENCRYPTION</span> <span style="color: blue;">BY</span> <span style="color: blue;">PASSWORD</span> <span style="color: grey;">=</span> <span style="color: red;">'ratr7XgGGSJ5dM4QzAaXc8cj'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
certificate<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> This is the certificate used to protect
the symmetric key<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">certificates<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> name <span style="color: grey;">=</span> <span style="color: red;">'CertBankDetails'</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">CERTIFICATE</span> CertBankDetails<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WITH</span> <span style="color: blue;">SUBJECT</span> <span style="color: grey;">=</span> <span style="color: red;">'Bank Details Certificate'</span><span style="color: grey;">,</span>
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">EXPIRY_DATE</span> <span style="color: grey;">=</span> <span style="color: red;">'02/25/2014'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">ELSE<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">PRINT</span> <span style="color: red;">'Error:
Certificate "CertBankDetails" already exists, please modify the
script to create a certificate that does not already exist'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Backup the
certificate<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BACKUP</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">CERTIFICATE</span> CertBankDetails <span style="color: blue;">TO</span>
<span style="color: blue;">FILE</span> <span style="color: grey;">=</span> <span style="color: red;">'C:\SQL\Backup\Certificates\CertBankDetails'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
symmetric key<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> This is the symmetric key used in
conjunction with the certificate to encrypt / decrypt the data<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">symmetric_keys<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> name <span style="color: grey;">=</span> <span style="color: red;">'SymKeyBankDetails'</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SYMMETRIC</span> <span style="color: blue;">KEY</span>
SymKeyBankDetails<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WITH</span> <span style="color: blue;">ALGORITHM</span>
<span style="color: grey;">=</span> <span style="color: blue;">AES_256<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">ENCRYPTION</span> <span style="color: blue;">BY</span> <span style="color: blue;">CERTIFICATE</span>
CertBankDetails<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">ELSE<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">PRINT</span> <span style="color: red;">'Error:
Symmetric key "SymKeyBankDetails" already exists, please modify the
script to create a symmetric key that does not already exist'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
Encryption Proc<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'dbo.spInsertBankDetails'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span>
[type] <span style="color: grey;">IN</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: red;">'P'</span> <span style="color: grey;">)</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BEGIN<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DROP</span> <span style="color: blue;">PROCEDURE</span> dbo<span style="color: grey;">.</span>spInsertBankDetails<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">PROCEDURE</span> dbo<span style="color: grey;">.</span>spInsertBankDetails<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">AS<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Open Symetric
Key<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">OPEN</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SYMMETRIC</span> <span style="color: blue;">KEY</span>
SymKeyBankDetails<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DECRYPTION</span> <span style="color: blue;">BY</span> <span style="color: blue;">CERTIFICATE</span>
CertBankDetails<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Insert a
record<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INSERT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">INTO</span> SQLServer365<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>BankDetails<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CustomerID<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SortCode<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> AccountNumber<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> InsertDate<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">VALUES<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">1<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">EncryptByKey</span><span style="color: grey;">(</span><span style="color: magenta;">Key_GUID</span><span style="color: grey;">(</span><span style="color: red;">'SymKeyBankDetails'</span><span style="color: grey;">),</span> <span style="color: red;">'01-02-03'</span><span style="color: grey;">),</span> <span style="color: green;">-- Encrypt SortCode<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">EncryptByKey</span><span style="color: grey;">(</span><span style="color: magenta;">Key_GUID</span><span style="color: grey;">(</span><span style="color: red;">'SymKeyBankDetails'</span><span style="color: grey;">),</span> <span style="color: red;">'01234567'</span><span style="color: grey;">),</span> <span style="color: green;">-- Encrypt AccountNumber<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">GETDATE</span><span style="color: grey;">());<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">END<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
Decryption Proc<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'dbo.spGetBankDetails'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span>
[type] <span style="color: grey;">IN</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: red;">'P'</span> <span style="color: grey;">)</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BEGIN<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DROP</span> <span style="color: blue;">PROCEDURE</span> dbo<span style="color: grey;">.</span>spGetBankDetails<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">PROCEDURE</span> dbo<span style="color: grey;">.</span>spGetBankDetails<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">AS<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Open Symetric
Key<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">OPEN</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SYMMETRIC</span> <span style="color: blue;">KEY</span>
SymKeyBankDetails<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DECRYPTION</span> <span style="color: blue;">BY</span> <span style="color: blue;">CERTIFICATE</span>
CertBankDetails<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Return
decrypted record<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
BankDetailsID<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CustomerID<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">CONVERT</span><span style="color: grey;">(</span><span style="color: blue;">VARCHAR</span><span style="color: grey;">,</span> <span style="color: magenta;">DecryptByKey</span><span style="color: grey;">(</span>SortCode<span style="color: grey;">))</span> <span style="color: blue;">AS</span> SortCode<span style="color: grey;">,</span> <span style="color: green;">-- Decrypt SortCode<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">CONVERT</span><span style="color: grey;">(</span><span style="color: blue;">VARCHAR</span><span style="color: grey;">,</span> <span style="color: magenta;">DecryptByKey</span><span style="color: grey;">(</span>AccountNumber<span style="color: grey;">))</span> <span style="color: blue;">AS</span> AccountNumber<span style="color: grey;">,</span> <span style="color: green;">-- Decrypt AccountNumber<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> InsertDate<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
SQLServer365<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>BankDetails<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">END<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Insert an
encrypted record<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
SQLServer365<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>spInsertBankDetails<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Return
encrypted data<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
BankDetailsID<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CustomerID<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SortCode<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> AccountNumber<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> InsertDate<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span>
SQLServer365<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>BankDetails<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Return
decrypted data<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
SQLServer365<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>spGetBankDetails<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Unencrypted data for performance
comparison<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
SQLServer365<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create table<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'dbo.BankDetailsNoEncryption'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span> [type] <span style="color: grey;">=</span> <span style="color: red;">'U'</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TABLE</span> dbo<span style="color: grey;">.</span>BankDetailsNoEncryption<span style="color: grey;">(<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> BankDetailsNoEncryptionID <span style="color: blue;">INT</span> <span style="color: blue;">IDENTITY</span><span style="color: grey;">(</span>1<span style="color: grey;">,</span>1<span style="color: grey;">)</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL</span> <span style="color: blue;">CONSTRAINT</span>
[PK_BankDetailsNoEncryption:BankDetailsNoEncryptionID] <span style="color: blue;">PRIMARY</span>
<span style="color: blue;">KEY</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CustomerID <span style="color: blue;">INT</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SortCode <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>50<span style="color: grey;">)</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> AccountNumber <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>50<span style="color: grey;">)</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> InsertDate <span style="color: blue;">DATETIME</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL</span> <span style="color: blue;">CONSTRAINT</span> [DF_BankDetailsNoEncryption:InsertDate] <span style="color: blue;">DEFAULT </span><span style="color: grey;">(</span><span style="color: magenta;">GETDATE</span><span style="color: grey;">())</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">)</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">ON</span> [PRIMARY]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">ELSE<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">PRINT</span> <span style="color: red;">'Error:
Table "dbo.BankDetailsNoEncryption" already exists, please modify the
script to create a table name that does not already exist'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create Insert
Proc<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'dbo.spInsertBankDetailsNoEncryption'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span>
[type] <span style="color: grey;">IN</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: red;">'P'</span> <span style="color: grey;">)</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BEGIN<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DROP</span> <span style="color: blue;">PROCEDURE</span> dbo<span style="color: grey;">.</span>spInsertBankDetailsNoEncryption<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">PROCEDURE</span> dbo<span style="color: grey;">.</span>spInsertBankDetailsNoEncryption<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">AS<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Insert a
record<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INSERT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">INTO</span> SQLServer365<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>BankDetailsNoEncryption<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CustomerID<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SortCode<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> AccountNumber<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> InsertDate<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">VALUES<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">1<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">'01-02-03'</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">'01234567'</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">GETDATE</span><span style="color: grey;">());<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">END<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create Get
Proc<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'dbo.spGetBankDetailsNoEncryption'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span>
[type] <span style="color: grey;">IN</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: red;">'P'</span> <span style="color: grey;">)</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BEGIN<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DROP</span> <span style="color: blue;">PROCEDURE</span> dbo<span style="color: grey;">.</span>spGetBankDetailsNoEncryption<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">PROCEDURE</span> dbo<span style="color: grey;">.</span>spGetBankDetailsNoEncryption<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">AS</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BEGIN</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SELECT</span> BankDetailsNoEncryptionID <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CustomerID <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SortCode <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> AccountNumber InsertDate<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> SQLServer365<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>BankDetailsNoEncryption<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Insert
unencrypted record<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
SQLServer365<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>spInsertBankDetailsNoEncryption<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Return data<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
SQLServer365<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>spGetBankDetailsNoEncryption<span style="color: grey;">;<o:p></o:p></span></span></div>
<br />
<div class="MsoNormal">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; line-height: 115%; mso-no-proof: yes;">GO</span><o:p></o:p></div>
<br />
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Performance Comparison</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">I did some performance analysis comparing the insert encrypting the data / the select decrypting the data to the equivalent without encryption and decryption. I used <a href="http://www.datamanipulation.net/sqlquerystress/" target="_blank"><span style="color: blue;">SQLQueryStress</span></a> by Adam Machanic to execute the insert and select of both routines 100 times across 10 threads, the results of which I have to say might surprise a few of you;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<table border="0" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; margin-left: 4.65pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184; width: 549px;">
<tbody>
<tr style="height: 15.0pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td nowrap="" style="height: 15.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"></td>
<td nowrap="" style="background: #00B0F0; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">UnencryptedInsert<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="background: #00B0F0; border-left: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">EncryptedInsert<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="background: #00B0F0; border-left: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">IncreasePercentage<o:p></o:p></span></b></div>
</td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 1;">
<td nowrap="" style="background: #00B0F0; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">Execution
Time<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.73<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">2.5712<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">252.22<o:p></o:p></span></div>
</td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 2;">
<td nowrap="" style="background: #00B0F0; border-top: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">Client
Seconds / Iteration (Avg)<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.0055<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.022<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">300.00<o:p></o:p></span></div>
</td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 3;">
<td nowrap="" style="background: #00B0F0; border-top: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">Logical
Reads / Iteration (Avg)<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">2.034<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">2.114<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">3.93<o:p></o:p></span></div>
</td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 4;">
<td nowrap="" style="background: #00B0F0; border-top: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">CPU
Seconds / Iteration (Avg)<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.0002<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.0033<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">1550.00<o:p></o:p></span></div>
</td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 5;">
<td nowrap="" style="background: #00B0F0; border-top: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">Actual
Seconds / Iteration (Avg)<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.0076<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.0288<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">278.95<o:p></o:p></span></div>
</td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 6;">
<td nowrap="" style="height: 15.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"></td>
<td nowrap="" style="height: 15.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"></td>
<td nowrap="" style="height: 15.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"></td>
<td nowrap="" style="height: 15.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"></td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 7;">
<td nowrap="" style="height: 15.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"></td>
<td nowrap="" style="background: #00B0F0; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">UnencryptedSelect<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="background: #00B0F0; border-left: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">EncryptedSelect<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="background: #00B0F0; border-left: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">IncreasePercentage<o:p></o:p></span></b></div>
</td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 8;">
<td nowrap="" style="background: #00B0F0; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">Execution
Time<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.582<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">3.7593<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">545.93<o:p></o:p></span></div>
</td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 9;">
<td nowrap="" style="background: #00B0F0; border-top: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">Client
Seconds / Iteration (Avg)<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.0032<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.0267<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">734.38<o:p></o:p></span></div>
</td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 10;">
<td nowrap="" style="background: #00B0F0; border-top: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">Logical
Reads / Iteration (Avg)<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">10<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">26<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">160.00<o:p></o:p></span></div>
</td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 11;">
<td nowrap="" style="background: #00B0F0; border-top: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">CPU
Seconds / Iteration (Avg)<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.0012<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.0103<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">758.33<o:p></o:p></span></div>
</td>
</tr>
<tr style="height: 15.0pt; mso-yfti-irow: 12; mso-yfti-lastrow: yes;">
<td nowrap="" style="background: #00B0F0; border-top: none; border: solid windowtext 1.0pt; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 147.75pt;" valign="bottom" width="197"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-size: 10pt;">Actual
Seconds / Iteration (Avg)<o:p></o:p></span></b></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 89.75pt;" valign="bottom" width="120"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.0017<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 82.2pt;" valign="bottom" width="110"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">0.0319<o:p></o:p></span></div>
</td>
<td nowrap="" style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 15.0pt; mso-border-bottom-alt: solid windowtext .5pt; mso-border-right-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 92.15pt;" valign="bottom" width="123"><div align="right" class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: right;">
<span style="font-size: 10pt;">1776.47<o:p></o:p></span></div>
</td>
</tr>
</tbody></table>
<span style="font-family: Arial, Helvetica, sans-serif;"><br />With this significant overhead, I recommend you make sure you have the capacity to make use of SQL Servers encryption hierarchy. It is important to be selective, only encrypt data that you actually need to. Investigate the use of an Hardware Security Module (HSM) as these add a layer of abstraction by keeping the encryption keys separate from the the encrypted data. It is also possible to offload the encryption overhead from the SQL Server to the HSM for improved performance.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">I will finish with 3 recommendations;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Backup the certificates and keys!</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Simple really, make sure you backup all your database master keys and all your certificates, the usual precautions apply here as they do for all backups;</span><br />
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Back them up to a different drive </span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Back them up to tape / different array</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Get them off site</span></li>
</ul>
<b style="font-family: Arial, Helvetica, sans-serif;">Be aware of the expiry date of the certificates!</b><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Again this goes without saying but you don't want the be the person responsible when the applications are throwing errors as the certificate has expired :)</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Scripts Save Life's!</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">As I have said many times before, I'm not a GUI fan. Each to their own but you really should be scripting this stuff! Scripts can be saved, backed up, recovered and the end result is achieved quicker than a GUI or Wizard if you have the scripts to hand.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span>Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-51936989148253056962013-09-05T14:00:00.005+01:002013-09-05T14:01:05.948+01:00Free Tools For The DBA<span style="font-family: Arial, Helvetica, sans-serif;">In this post we will look at 5 free tools that I use on a daily basis, I'll give a little bit of detail about them, why I find them useful and the links for you to download them.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>1 - Maintenance Scripts - Ola Hallengren</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">What can I say about these maintenance scripts? They just work, the only time I have ever seen a failure is when I have been a bit of a numpty! They quite literally cater for every eventuality when backing up / consistency checking and performing index maintenance. For example if you are taking native SQL Server backups on any version of SQL Server and are not using these scripts I would have a bit of a re-think.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="color: blue; font-family: Arial, Helvetica, sans-serif;"><a href="http://ola.hallengren.com/" target="_blank">http://ola.hallengren.com/</a></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>2 - SSMS Tools Pack - Mladen Prajdic</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">I have been using the SSMS Tools Pack for at least 3 years now. There are some great features but my two favourites are Window Connection Colouring and Local SQL Query History. Window Connection Colouring allows you to configure a different coloured strip for all instances which appears at the top of each Query Window in SSMS. I use a traffic light scheme of Red for Live, Orange for QA and Reporting and Green for Dev and my local instance. It is in the peripheral view so no need to reach for the mouse or check the bottom left of the Window for the instance I am working on before truncating a table or dropping a database. Local SQL Query History has saved my ass on numerous occasions, each and every time I personally thank Mladen via Twitter. I have been burned many times in the past when SSMS has crashed and the script(s) I was working on have not been saved and do not get recovered. With Local SQL Query History, every time you run a query it gets saved. Simple but extremely effective.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="color: blue; font-family: Arial, Helvetica, sans-serif;"><a href="http://www.ssmstoolspack.com/" target="_blank">http://www.ssmstoolspack.com/</a></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>3 - SQL Sentry Plan Explorer - SQL Sentry</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">SQL Sentry plan explorer is a must for me. If you spend any time analysing execution plans then download this tool! You will save so much time especially in larger more complex plans as all the information in the execution plan is more easily visible / accessible. The traffic light scheme for the most expensive operators in the graphical plan view alone makes this tool worth a look. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="color: blue; font-family: Arial, Helvetica, sans-serif;"><a href="http://www.sqlsentry.net/plan-explorer/sql-server-query-view.asp" target="_blank">http://www.sqlsentry.net/plan-explorer/sql-server-query-view.asp</a></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>4 - Internals Viewer</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Internals viewer is a tool for looking into the SQL Server storage engine and seeing how data is physically allocated, organised and stored. I am new to internals viewer and it is fantastic, If like me you are a geek and enjoy learning about how and why SQL Server does what it does, then this is a must!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="color: blue; font-family: Arial, Helvetica, sans-serif;"><a href="http://intview2.codeplex.com/" target="_blank">http://intview2.codeplex.com/</a></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>5 - SQL Fragmentation Analyzer - Idera</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Apart from the adverts, which can be found just about everywhere (but hey it is free!) this is a fantastic little application. It allows you to quickly and easily check the fragmentation of table, there are quite a few options for filtering but you can just as easily choose a table or entire database.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="color: blue; font-family: Arial, Helvetica, sans-serif;"><a href="http://www.idera.com/productssolutions/freetools/sqlfragmentationanalyzer">http://www.idera.com/productssolutions/freetools/sqlfragmentationanalyzer</a></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span>Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-11370851828797082102013-08-26T12:03:00.000+01:002013-08-27T19:23:48.927+01:00Bank Holiday Fun - DDL Trigger<span style="font-family: Arial, Helvetica, sans-serif;">Following on from my previous post on <a href="http://sqlserver365.blogspot.co.uk/2013/08/trigger-status_20.html" target="_blank"><span style="color: blue;">triggers</span></a>, I had made a mental note to make sure I did a post about a DDL trigger I use. As a DBA I am a gatekeeper to the companies SQL Server estate, I would love to say that every instance is locked down tighter than Fort Knox but this is not true. The reality is that there are inevitably permissions nested that give a level of access that exceeds what the person actually requires to fulfill their role. Sure I could just cart blanch everything I deem as being excessive and go on a REVOKE spree, but there would be a whole host of political repercussions as a result. Rightly or Wrongly, the cold harsh reality is that some of these permissions will remain.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">As a safety net I use a DDL Trigger in every single production database to notify me if someone has abused the privilege of having elevated permission. It is worth highlighting that while I was creating the script used in this post I ran into the 2000 line limit of the undocumented sp_msforeachdb stored procedure and was just about to revert to using a while loop when <a href="http://twitter.com/SQLChicken" target="_blank"><span style="color: blue;">@sqlchicken</span></a> pointed out I should look at using an improved version created by <a href="http://twitter.com/AaronBertrand" target="_blank"><span style="color: blue;">@AaronBertrand</span></a>. You can find the sp_foreachdb procedure <a href="http://sqlblog.com/blogs/aaron_bertrand/archive/2010/12/29/a-more-reliable-and-more-flexible-sp-msforeachdb.aspx" target="_blank"><span style="color: blue;">here</span></a>. It is so much more flexible than the original Microsoft system procedure and one that I have now rolled out to our SQL Estate. I will also be going back and updating all the routines I have that use sp_msforeachdb and replacing them with sp_foreachdb.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The below script will create a DDL Trigger trgDDLTableModification in every user database which will fire for the below statements;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">ALTER_TABLE</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">CREATE_TRIGGER</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">ALTER_TRIGGER</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">DROP_TRIGGER</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">You will need to change the below two lines accordingly</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">@profile_name<span class="Apple-tab-span" style="white-space: pre;"> </span>= 'DBA',</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">@recipients = 'Chris@SQLServer365.com',</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DDL Trigger<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> For more SQL resources, check out
SQLServer365.blogspot.com<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may alter this code for your own
purposes.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may republish altered code as long as
you give due credit.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You must obtain prior permission before
blogging this code.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> THIS CODE AND INFORMATION ARE PROVIDED
"AS IS"<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -----------------------------------------------------------------<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Drop trigger
in all user databases<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
sp_foreachdb<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@command <span style="color: grey;">=</span> <span style="color: red;">'USE ?;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF EXISTS (SELECT
1 FROM sys.triggers WHERE parent_class_desc = ''DATABASE'' AND name =
''trgDDLTableModification'')<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DROP TRIGGER
trgDDLTableModification ON DATABASE;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO'</span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@user_only <span style="color: grey;">=</span> 1<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@print_command_only <span style="color: grey;">=</span> 1<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Print the
create trigger command for all user databases<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
sp_foreachdb<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@command <span style="color: grey;">=<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">'USE ?;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE TRIGGER
trgDDLTableModification ON DATABASE<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FOR ALTER_TABLE,
CREATE_TRIGGER, ALTER_TRIGGER, DROP_TRIGGER<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">AS<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- SET options<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SET NOCOUNT ON;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- Declare variables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DECLARE @xmlEventData XML;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DECLARE @DDLStatement VARCHAR(MAX);<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DECLARE @Msg VARCHAR(MAX);<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DECLARE @MailSubject VARCHAR(255);<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DECLARE @DatabaseName VARCHAR(255);<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DECLARE @User NVARCHAR(50);<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- Build variables from event data<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SELECT @xmlEventData = EVENTDATA();<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SET @DDLStatement = @xmlEventData.value(
''(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]'', ''nvarchar(max)'' );<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SET @DatabaseName = CONVERT(VARCHAR(150),
@xmlEventData.query(''data(/EVENT_INSTANCE/DatabaseName)''));<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SET @User = CONVERT(VARCHAR(150),
@xmlEventData.query(''data(/EVENT_INSTANCE/LoginName)''));<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IF CHARINDEX(''DROP TRIGGER
trgDDLTableModification'',@DDLStatement) != 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> AND CHARINDEX(''ALTER TRIGGER
trgDDLTableModification'',@DDLStatement) != 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SELECT @Msg = ''ALERT FIRED AS A RESULT OF A DDL TABLE LEVEL
EVENT IN DATABASE: '' + @DatabaseName + CHAR(13) + CHAR(13) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + ''*** Start DDL
Statement ***'' + CHAR(13) + CHAR(13) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + @DDLStatement +
CHAR(13) + CHAR(13) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + ''*** End DDL
Statement ***'' + CHAR(13) + CHAR(13) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + ''*** Start Event
Data ***'' + CHAR(13) + CHAR(13) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> +
CAST(@xmlEventData AS NVARCHAR(MAX)) + CHAR(13) + CHAR(13) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + ''*** End Event
Data ***'' + CHAR(13) + CHAR(13) ; <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SELECT @MailSubject = ''DDL TABLE LEVEL
EVENT MODIFICATION DETECTED ON: '' + @@SERVERNAME;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- Send mail alert<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> EXEC msdb.dbo.sp_send_dbmail <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @profile_name = ''DBA'',<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @recipients = ''Chris@SQLServer365.com'',<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @subject = @MailSubject,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @body = @Msg , <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @importance = ''high'';<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> END<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">END;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO'</span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@user_only <span style="color: grey;">=</span> 1<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@print_command_only <span style="color: grey;">=</span> 1<span style="color: grey;">;<o:p></o:p></span></span></div>
<br />
<div class="MsoNormal">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; line-height: 115%; mso-no-proof: yes;">GO</span><o:p></o:p></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">I have used the </span><span style="font-family: 'Courier New'; font-size: 13px;">@print_command_only </span><span style="color: grey; font-family: 'Courier New'; font-size: 13px;">=</span><span style="font-family: 'Courier New'; font-size: 13px;"> 1 </span><span style="font-family: Arial, Helvetica, sans-serif;">for both the drop and create statements for consistency </span><span style="font-family: Arial, Helvetica, sans-serif;">because 'CREATE TRIGGER' must be the first statement in a query batch, so the second execution of </span><span style="font-family: Arial, Helvetica, sans-serif;">sp_foreachdb would fail otherwise. All you need to do once run is copy the results from the messages window paste them in a new query window and execute.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span>Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-75771668855426333162013-08-20T13:20:00.001+01:002013-08-26T12:06:09.114+01:00Trigger Status<span style="font-family: Arial, Helvetica, sans-serif;">Have you ever spent hours looking at an issue only to have your investigation hindered by a trigger? I know I have and on more than one occasion! This little script can be added to a SQL Agent Job and scheduled as you require to email an operator with a list of all triggers for all user databases, the table they are on and the status.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Trigger Status<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> For more SQL resources, check out
SQLServer365.blogspot.com<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may alter this code for your own
purposes.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may republish altered code as long as
you give due credit.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You must obtain prior permission before
blogging this code.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> THIS CODE AND INFORMATION ARE PROVIDED
"AS IS"<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -----------------------------------------------------------------<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Declare
variables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@EmailProfile <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@EmailRecipient <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@EmailSubject <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set variables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@EmailProfile <span style="color: grey;">=</span> <span style="color: red;">'SQLReports'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@EmailRecipient <span style="color: grey;">=</span> <span style="color: red;">'Chris@SQLServer365.co.uk'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">--Drop temporary
table if exists<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'tempDB.dbo.#TriggerStatus'</span><span style="color: grey;">)</span>
<span style="color: grey;">IS</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DROP</span> <span style="color: blue;">TABLE</span> #TriggerStatus <span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
temporary table <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TABLE</span> #TriggerStatus<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DatabaseName <span style="color: blue;">SYSNAME</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> TableName <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">),</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> TriggerName <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">),<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> TriggerStatus <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>8<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Insert
triggers<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INSERT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">INTO</span> #TriggerStatus<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: maroon;">sp_msforeachdb<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">'<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF ''?'' NOT IN
(''master'', ''model'', ''msdb'', ''tempdb'', ''distribution'',
''reportserver'', ''reportservertempdb'')<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE [?]; <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT DB_NAME() AS DatabaseName,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> OBJECT_NAME(parent_id) AS TableName,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> name AS TriggerName,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CASE is_disabled<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> WHEN 0 THEN ''Enabled''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ELSE ''Disabled''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> END AS TriggerStatus<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM sys.triggers WITH ( NOLOCK )<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">WHERE is_ms_shipped = 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> AND parent_class = 1;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">END'<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Check for
unused indexes<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span>
#TriggerStatus<span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BEGIN<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DECLARE</span>
@tableHTML <span style="color: blue;">NVARCHAR</span><span style="color: grey;">(</span><span style="color: magenta;">MAX</span><span style="color: grey;">);</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SET</span>
@tableHTML <span style="color: grey;">=</span> <span style="color: red;">N'<style
type="text/css">'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'.h1 {font-family: Arial,
verdana;font-size:16px;border:0px;background-color:white;} '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'.h2 {font-family: Arial,
verdana;font-size:12px;border:0px;background-color:white;} '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'body {font-family: Arial, verdana;} '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'table{font-size:12px; border-collapse:collapse;border:1px
solid black; padding:3px;} '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'td{background-color:#F1F1F1; border:1px solid black;
padding:3px;} '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'th{background-color:#99CCFF; border:1px solid black;
padding:3px;}'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'</style>'</span> <span style="color: grey;">+</span> <span style="color: red;">N'<table border="1">'</span> <span style="color: grey;">+</span> <span style="color: red;">N'<tr>'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'<th>DatabaseName</th>'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'<th>TableName</th>'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'<th>TriggerName</th>'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'<th>TriggerStatus</th>'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'</tr>'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: magenta;">CAST</span><span style="color: grey;">((</span> <span style="color: blue;">SELECT</span> td <span style="color: grey;">=</span>
DatabaseName<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">''</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> td <span style="color: grey;">=</span> TableName<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">''</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> td <span style="color: grey;">=</span> TriggerName<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">''</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> td <span style="color: grey;">=</span> TriggerStatus<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">''</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> #TriggerStatus<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FOR<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">XML</span>
<span style="color: blue;">PATH</span><span style="color: grey;">(</span><span style="color: red;">'tr'</span><span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TYPE<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">)</span>
<span style="color: blue;">AS</span> <span style="color: blue;">NVARCHAR</span><span style="color: grey;">(</span><span style="color: magenta;">MAX</span><span style="color: grey;">))</span> <span style="color: grey;">+</span> <span style="color: red;">N'</table>'</span><span style="color: grey;">;</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Set subject<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SET</span> @EmailSubject <span style="color: grey;">=</span> <span style="color: red;">'Trigger Status Report For
'</span> <span style="color: grey;">+</span> <span style="color: magenta;">@@SERVERNAME<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Email results <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">EXEC</span>
msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_send_dbmail</span><span style="color: blue;"> </span>@profile_name
<span style="color: grey;">=</span> @EmailProfile<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @recipients <span style="color: grey;">=</span> @EmailRecipient<span style="color: grey;">,</span> @subject <span style="color: grey;">=</span> @EmailSubject<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @body <span style="color: grey;">=</span>
@tableHTML<span style="color: grey;">,</span> @body_format <span style="color: grey;">=</span> <span style="color: red;">'HTML'</span><span style="color: grey;">;</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END<o:p></o:p></span></span></div>
<br />
<div class="MsoNormal">
<span style="font-family: "Courier New"; font-size: 10.0pt; line-height: 115%; mso-no-proof: yes;"> <span style="color: blue;">GO</span></span><o:p></o:p></div>
<br /></div>
<span style="font-family: Arial, Helvetica, sans-serif;">Remember, fully understanding your environment, the features you use and what is the norm is something that pays dividends when things go bad.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span>Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-57316349074768313012013-08-09T14:50:00.001+01:002013-08-09T14:50:36.612+01:00Windows Failover Cluster Monitor<span style="font-family: Arial, Helvetica, sans-serif;">Windows Failover Clusters are fantastic, they provide High Availability for mission critical SQL Server instances and make my life as a DBA better in so many ways. Can they though, sometimes be too good? I have had SQL Server instances failover between cluster nodes in the past that none of our alerting has picked up on! I've only noticed the failover by stumbling across it days or even weeks later. One way to prevent these "Ghost" failovers going unnoticed for prolonged periods of time that I use is to have a startup procedure on the instance to email an operator when a failover occurs.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Below is the script to create a startup procedure to achieve this. You will need to update the @profile_name = 'SQLErrors' and @recipients = 'Chris@SQLServer365.co.uk' accordingly</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">I have played about with the WAITFOR DELAY a bit and found that 15 seconds is sufficient after the SQL Server Service has started and executed the startup procedure for the database mail engine to be ready and successfully send the email.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Check if
procedure exists<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'dbo.spEmailSQLServerRestart'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span>
[type] <span style="color: grey;">IN</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: red;">'P'</span> <span style="color: grey;">)</span> <span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Drop procedure <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DROP</span> <span style="color: blue;">PROCEDURE</span> dbo<span style="color: grey;">.</span>spEmailSQLServerRestart<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
procedure <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">PROCEDURE</span> dbo<span style="color: grey;">.</span>spEmailSQLServerRestart<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">AS</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BEGIN<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Declare Variables<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DECLARE</span>
@strServer <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">=</span> <span style="color: magenta;">CONVERT</span><span style="color: grey;">(</span><span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>128<span style="color: grey;">),</span> <span style="color: magenta;">SERVERPROPERTY</span><span style="color: grey;">(</span><span style="color: red;">'ComputerNamePhysicalNetBIOS'</span><span style="color: grey;">))<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DECLARE</span>
@strMailSubject <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">=</span> <span style="color: red;">'SQL Server '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: magenta;">UPPER</span><span style="color: grey;">(</span><span style="color: magenta;">@@SERVERNAME</span><span style="color: grey;">)</span> <span style="color: grey;">+</span> <span style="color: red;">' restarted!'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DECLARE</span>
@strMailBody <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>1000<span style="color: grey;">)</span> <span style="color: grey;">=</span> <span style="color: red;">'SQL Server '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: magenta;">UPPER</span><span style="color: grey;">(</span><span style="color: magenta;">@@SERVERNAME</span><span style="color: grey;">)</span> <span style="color: grey;">+</span> <span style="color: red;">' restarted at '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: magenta;">CONVERT</span><span style="color: grey;">(</span><span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>12<span style="color: grey;">),</span> <span style="color: magenta;">GETDATE</span><span style="color: grey;">(),</span> 108<span style="color: grey;">)</span> <span style="color: grey;">+</span> <span style="color: red;">' on '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: magenta;">CONVERT</span><span style="color: grey;">(</span><span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>12<span style="color: grey;">),</span> <span style="color: magenta;">GETDATE</span><span style="color: grey;">(),</span> 103<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">' Now running on server: '</span> <span style="color: grey;">+</span>
@strServer <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Wait for the database mail
engine to start<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WAITFOR</span>
<span style="color: blue;">DELAY</span> <span style="color: red;">'00:00:15'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Send Email<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">EXEC</span>
msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_send_dbmail</span><span style="color: blue;"> </span>@profile_name
<span style="color: grey;">=</span> <span style="color: red;">'SQLErrors'</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @recipients <span style="color: grey;">=</span> <span style="color: red;">'Chris@SQLServer365.co.uk'</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @subject <span style="color: grey;">=</span>
@strMailSubject<span style="color: grey;">,</span> @body <span style="color: grey;">=</span>
@strMailBody<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @body_format <span style="color: grey;">=</span> <span style="color: red;">'HTML'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set procedure
as startup procedure <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: maroon;">sp_procoption</span><span style="color: blue;"> </span>@ProcName
<span style="color: grey;">=</span> <span style="color: red;">'spEmailSQLServerRestart'</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @OptionName <span style="color: grey;">=</span>
<span style="color: red;">'STARTUP'</span><span style="color: grey;">,</span>
@OptionValue <span style="color: grey;">=</span> <span style="color: red;">'ON'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<br />
<div class="MsoNormal">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; line-height: 115%; mso-no-proof: yes;">GO</span><o:p></o:p></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span>Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-37272522491328440192013-07-26T15:24:00.001+01:002013-07-26T15:24:35.854+01:00Disaster Recovery - Part 1 - Possibly Almost Everything But the Kit<span style="font-family: Arial, Helvetica, sans-serif;">Over the years I have been fortunate or unfortunate enough, depending on who you are to have experienced several disasters along with a couple of very near misses. In this post I am going to explore some of the areas of DR that are not related to the physical kit. Let me just start by defining what I mean by a disaster, a disaster is not a cluster fail-over, it is not a drive failure in a RAID array and it is not a UPS failure. Disasters can be classified in two categories. The first are natural disasters such as floods, fires or earthquakes. The second are man made disasters, for example, infrastructure failure, or even terrorism.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Disaster strikes when you least expect it! Disaster is unforgiving! Disaster doesn't care! One day it will come and it will bite you, of that you can be sure!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">So let us take a look at the things you might not have considered.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Plan</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Do you even have a plan? If not then you better start praying! If you do you are in with a fighting chance. Everyone involved should have visibility of the plan, the actions required and the order in which they need to be followed. It is pointless having the plan just on a file server in the building that is now ablaze! A physical copy is a great idea, or if you have a laptop, tablet or even a phone, a copy there would also suffice. The more locations the better, but always remember, everyone MUST have the same plan, when it is updated, circulate it!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Who</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Who is required? Who is available? Not every member of the team will be required to help with the recovery process. Not every member of the team will be available, as I have mentioned earlier, disaster is unforgiving, disaster doesn't care. Chances are you will have team members who would have been involved in the recovery process, that are on annual leave, incapacitated or otherwise engaged. Personally I don't think it is overkill to have a weekly list of personnel that are available with contact details, this will make a massive difference.</span><br />
<b style="font-family: Arial, Helvetica, sans-serif;"><br /></b>
<b style="font-family: Arial, Helvetica, sans-serif;">Where</b><br />
<span style="font-family: Arial, Helvetica, sans-serif;">If your lucky your office will still be in one piece and you may be able to conduct all your work from there. If your office is still standing, can the required personnel gain access? do you have keys, security fobs and access codes available? In the event that your office is inaccessible, what do you do? Is there another office or remote site that can be used? Again, can the required personnel gain access? do you have keys, security fobs and access codes available? Is the VPN even available to be an option? Things can deteriorate rapidly if there isn't somewhere from which the required personnel can work from.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Hours</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Depending on the extent of the disaster and or your environment you may be looking at a very lengthy recovery process. No one person can function at 100% for 24 or 48 hours, what I find works here is to have as many bodies available, working to start with then to split into multiple teams and work in shifts. This way a lot of the initial work can be started by as many people as possible, which is then continued by one team giving other teams chance to get some much needed rest in anticipation for taking over later in the recovery process. It is pointless having a team of 10 people working flat out for 24 hours as mistakes will be made as fatigue sets in, it is much safer to have 2 teams of 5 working 6-8 hour shifts.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Communication</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Who is going to be responsible for communications? You don't want 10 engineers sending out potentially conflicting messages to the business. You also don't want someone stood over your shoulder asking you how long is left, where on the plan are we up to. Someone should be responsible for collating, and communicating this information, this also helps the other way by the business having a single point of communication, having only one person to contact for updates.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Other Commitments</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">No one person can be available 24/7. There may be team members with children that need to be cared for, chances are they will need to be looked after by friends or family but may have to be brought into the office, or remote site and "entertained". DR is not much fun for a 5 year old on a sunny Saturday afternoon mid-summer.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Food & Drink</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">That is right folks, fuel! We all need watering and feeding, without this after about 12 hours you will seriously start to flag, concentration levels will fall dramatically and again mistakes will be made. Someone should responsible for keeping everyone fed and watered and the relevant expenses agreed beforehand.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Testing</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">So you have a plan, know exactly who, where, when and how to recover, great job, but that is only half the battle. Have you tested the recovery process? If the answer is no then I would be inclined to say your plan will fail. Why? Well in my experience, even with the best minds in the world something will have been missed. Testing the recovery plan will highlight this, some config file, DLL or permission will not have been taken into consideration. The proof really is in the pudding, get testing!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Summary</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">If all of the above are covered, then there is a good chance your business and infrastructure are in good hands. There will always be something that is forgotten, always some spanner thrown into the mix, it is up to us as professionals to make sure we have catered for as much as is conceivably possible to make sure that when disaster does strike we are armed to the back teeth with the tools to help us succeed.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span>Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-59660735715177496242013-07-25T13:58:00.002+01:002013-07-25T21:17:33.818+01:00First Time Speaker<span style="font-family: Arial, Helvetica, sans-serif;">So this week was another first for me, I finally bit the bullet and gave a talk at the Leeds SQL Server User Group and it was great, I thoroughly enjoyed it!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Public speaking is something that I have wanted to do for a while now but have put off because of nerves to be honest. I have given plenty talks to colleagues at a number of previous employers but never publicly, I had the mindset that I would be more comfortable speaking to my peers, rather than as I had previously envisaged a "rowdy bunch of data professionals". My talk was about indexes and in particular demonstrating practices that I employ in my position as a production DBA. You can find the PowerPoint presentation and accompanying scripts <a href="https://www.dropbox.com/s/nu0nddr22jkq4oj/IndexTalk.rar" target="_blank"><span style="color: blue;">here</span></a>. The scripts were developed and used on SQL Server 2008 R2.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">I can honestly say that it was an enjoyable experience, I wanted to involve the audience so rather than just listening there could be some interaction between us, which I thought worked very well. I have taken a lot away from the evening and learned a few things about myself as well as how I can improve the next time I give a talk. Yes I want to continue to do public speaking, why? Well, I want to continue to give back to the fantastic SQL Server Community we have, to teach and also to learn. I believe this will make me not only a better DBA, but a better person.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span>Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-26074954993229109532013-06-24T12:56:00.002+01:002013-06-24T12:56:59.661+01:00Baseline SQL Server with SQL Sentry Performance Advisor<span style="font-family: Arial, Helvetica, sans-serif;">Baselines can be any set of metrics that have been recorded to give you an understanding of what is the norm. Having a baseline gives you another piece to the puzzle when troubleshooting performance issues. It is the “base” that is used as a comparison to highlight areas of performance degradation.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">We are all aware how important it is to baseline our SQL Servers right?! We all take regular baselines of our SQL Servers right?! For some reason I’m guessing there is quite a high percentage of people who were thinking wrong to at least one of the above statements. Why do I say that? Well in October 2012 Paul Randal carried out a survey on <a href="http://www.sqlskills.com/blogs/paul/survey-do-you-have-a-baseline/" target="_blank"><span style="color: blue;">baselines</span></a> and posted the results <a href="http://www.sqlskills.com/blogs/paul/make-life-easier-on-yourself-get-a-baseline/" target="_blank"><span style="color: blue;">here</span></a>. I was surprised to see not only that more people did not have baselines than did, but also the reasoning for not having a baseline. In my opinion there is no excuse for not taking baselines, after all it doesn’t take much time or effort to create a baseline to capture only the most significant SQL Server metrics. My stance on this is firm but fair; if you’re a DBA and you are not taking baselines then you aren’t doing your job to the best of your abilities! Still don’t agree? Erin Stellato did a fantastic article over at SQL Server Central on <a href="http://www.sqlservercentral.com/articles/baselines/94656/" target="_blank"><span style="color: blue;">Capturing Baselines on Production SQL Servers</span></a>. With this you don’t even need to write anything, it is a simple copy and paste job with some familiarisation of the routine. Go on, take a look and give it a go and I’m sure you will see the value when the gremlins get into your environment and you’re frantically trying to find the problem.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Understanding how to measure performance allows you to analyse the impact on your environments the decisions you've made have had, while also assisting you with future decisions. Too many times I have seen decisions being made incorrectly, myself included, because of a lack of information. Without a full picture it is impossible to be sure the decision you are about to make is correct. Basically what I am getting at is the more information about your environments you have at your disposal the better the chance of you making the right decisions. It is worth mentioning at this point I don’t mean go and collect every single performance counter in perfmon and or all the meta-data information in the DMV’s. The key is to find the right metrics for your environments.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The main area that most people measure is the performance of the SQL Server itself, including both Windows (perfmon) and SQL Server (DMV’s). While this information is invaluable to have not many people measure the performance of the databases, specifically the associated code within SQL Server and the applications that abuse it. In this post I am going to provide one way which I have used over the years to give me a representation of the performance of the statements being run against a server.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Below are just a few things over the years I have used baselines for;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">•<span class="Apple-tab-span" style="white-space: pre;"> </span>Give me a representation of “normal” performance</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">•<span class="Apple-tab-span" style="white-space: pre;"> </span>Troubleshoot performance issues</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">•<span class="Apple-tab-span" style="white-space: pre;"> </span>Capacity Planning</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">•<span class="Apple-tab-span" style="white-space: pre;"> </span>Monitoring the Impact of an application release</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Recently however I used a baseline for something completely different; to show some of the benefits that SQL Sentry Performance Advisor would give us as a DBA team in our day to day roles. For those of you not familiar with SQL Sentry, the products they offer, in particular Performance Advisor I suggest you head over to their website <a href="http://www.sqlsentry.net/" target="_blank"><span style="color: blue;">here</span></a>. In summary;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">“Performance Advisor for SQL Server provides unparalleled insight, awareness and control over the true source of SQL Server performance issues. Performance Advisor is packed with ground-breaking features that aren’t found in any other performance monitoring software, all designed with the singular goal of simplifying the process of SQL Server performance tuning and optimization”.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Performance Advisor comprises of a Monitor Service which monitors one or more SQL Server Instances a Repository Database which requires SQL Server and a client application for viewing the collected trace data. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">For the purposes of this post I will protect sensitive information by replacing names etc. The environment I have configured is as below;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>ServerA</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">This Server runs the SQL Sentry Performance Advisor Monitor Service and SQL Sentry repository database. This server also runs an instance of Reporting Services that a small reporting solution is deployed too.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>ServerB</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">This is a production SQL Server that is monitored by SQL Sentry Performance Advisor.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">To configure this environment you will also need a minimum of two servers as above. Below is a breakdown of the process.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Configure ServerA</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Install SQL Sentry Performance Advisor and monitor at least one instance of SQL Server.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Create the baseline routine</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">While Performance Advisor is “doing its thang” create the routine to aggregate the trace data and produce our baseline.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Take the initial baseline</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">This is simple leave Performance Advisor to run for 7 days monitoring ServerB, don’t react to or change anything that is not business critical during this time to ensure results are as accurate as possible.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Analyse the initial baseline</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">The initial baseline will be based on 7 days of trace data, analyse this data based on the baseline routine created.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Tune, Tune, Tune</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Spend the next 7 days performance tuning as you see fit based on the picture that Performance Advisor has painted.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Take the second baseline</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Once you are happy with the amount of tuning you have done take the second baseline. My advice here is that you align the initial and second baselines to start and end on the same weekday and time. I start on Monday at 00:00 and end on Sunday at 23:59:59.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Compare the initial and second baselines</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Compare the results of the initial and second baselines.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">NOTE – This routine has been developed and deployed to SQL Server 2008 R2 and has not been tested on any other version. Although every care has been taken to ensure it works with SQL Server 2008, 2008R2 and 2012, I cannot guarantee it.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The routine can be found <a href="https://www.dropbox.com/s/pp9x3k71w7a12ua/BaselineSQLServerWithSQLSentryPerformanceAdvisor.zip" target="_blank"><span style="color: blue;">here</span></a> to download and implement.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Configure ServerA</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">As I mentioned earlier this Server will run the Monitor Service and also house the SQL Sentry repository database. The <a href="http://www.sqlsentry.net/downloads/docs/SQL_Sentry_Quick_Start.pdf" target="_blank"><span style="color: blue;">SQL Sentry Quick Start Guide</span></a> will detail how to install and configure Performance Advisor. The trial is for 15 days however this baseline exercise may last for 21-28 days depending on the length of the tuning process. Alternatively you could reduce the period that the initial and second baselines are captured for so the entire process fits within the 15 days. The reason I used 7 days is that there are processes that run over the weekend which I wanted to capture, tune and compare. The SQL Sentry team are very good, they offer some of the best vendor support I have ever received, I would suggest speaking to them if you need to extend the trial beyond the 15 days. Once Performance Advisor is installed and configured on ServerA to monitor ServerB you are ready to move onto the next step.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">There is a ReadMe.txt in the DatabaseScripts folder that details a few requirements, but the scripts are pretty straight forward to follow.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The routine aggregates data and records the SpeedIndex (this is the metric used throughout the routine) for different intervals. One of the intervals Business Day is defined in the routine as 08:00 to 22:00, this is specific to my current employer and if this does not reflect your business day you will need to update this in 3 of the scripts and save the files before running them.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Update the 2 - CreateDatabaseObjects.sql script;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>There are three instances of 08:00 and 22:00 in this script.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Update the 3 - InsertLookupTableData.sql script;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>There is one instance of 08:00 and 22:00 in this script.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Update the 4 - CreateJobs.sql script;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>There are two instances of 08:00 and 22:00 in this script</span><br />
<span class="Apple-tab-span" style="white-space: pre;"><span style="font-family: Arial, Helvetica, sans-serif;"> </span></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">There is also a stored procedure used by the Reporting Solution in 2 - CreateDatabaseObjects.sql script that uses REPLACE to remove the trailing domain from the server name. This will need updating to your domain if you also want to remove the trailing domain for neatness. There are two instances of .YourDomain.Here in 2 - CreateDatabaseObjects.sql that you will need update accordingly. For example if your domain was sql365.local then you would replace .YourDomain.Here with .sql365.local</span><br />
<span class="Apple-tab-span" style="white-space: pre;"><span style="font-family: Arial, Helvetica, sans-serif;"> </span></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Create the baseline routine</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">To create the baseline routine you will need to run 4 scripts in the DatabaseScripts folder, in order, which I have listed below;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">1 - CreateITInternalDatabase.sql</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">2 - CreateDatabaseObjects.sql</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">3 - InsertLookupTableData.sql</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">4 - CreateJobs.sql</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">A list of the objects created by the scripts is below;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>1 x Database</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">ITInternal</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>3 x Schemas</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Archive</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Kpi</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Reports</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>6 x Tables</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Archive.tblSpeedIndexByMinute</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Archive.tblSpeedIndexSummary</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">kpi.tblLookupServerName</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">kpi.tblLookupSpeedIndexDescription</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">kpi.tblSpeedIndexByMinute</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">kpi.tblSpeedIndexSummary</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>16 x Stored Procedures</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Archive.spArchivetblSpeedIndexByMinute</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Archive.spArchivetblSpeedIndexSummary</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">kpi.spGetInfoForInsertSpeedIndexByMinute</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">kpi.spInsertSpeedIndexByMinute</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">kpi.spInsertSpeedIndexSummary</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">kpi.spInsertSpeedIndexSummaryMoreThanOneDay</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">kpi.spShowPerformanceSpeedIndex</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">kpi.spShowPerformanceSpeedIndexMoreThan1Day</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Reports.spGetAverageSpeedIndexForCurrentMonth</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Reports.spGetMaxSpeedIndexSummaryCurrentBusinessDay</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Reports.spGetServerName</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Reports.spGetSpeedIndexByDay</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Reports.spGetSpeedIndexByMinuteCurrentBusinessDay</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Reports.spGetSpeedIndexDescription</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Reports.spGetSpeedIndexSummary</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Reports.spGetSpeedIndexSummaryYesterday<span class="Apple-tab-span" style="white-space: pre;"> </span></span><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;"><b>8 x Jobs</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">(00:30) - Insert Speed Index For Last 24 Hours</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">(22:30) - Insert Speed Index For Last Business Day</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">(Every 5 Minutes) - Insert Speed Index For Last 5 Minutes</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">(Every Hour) - Insert Speed Index For Last Hour</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">(Every Minute) - Insert Speed Index For The Minute</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">(Mon 01:00) - Insert Speed Index For Last Week</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">(Monthly) - ArchiveSpeedIndexByMinuteData</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">(Monthly) - Insert Speed Index For Last Month</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Once the scripts have been run, you can then deploy the Reporting Services Solution. The solution is in the ReportingServicesSolution folder and comprises of;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>2 x Data Sources</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">ITInternal</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">SQLSentry</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>2 x Shared Data sets</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">ServerName</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">SpeedIndexDescription</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>3 x Reports</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">SpeedIndexByDay</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>This shows a 30 day representation of the SpeedIndex for a given server.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">SpeedIndexCurrentBusinessDay</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>This shows a one day representation of the SpeedIndex for the current day along with the SpeedIndex for;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-tab-span" style="font-weight: bold; white-space: pre;"> </span>Max 5 Min Period</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Max 1 Hour Period</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Last 24 Hours</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">SpeedIndexForBusinessDay – Email</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>This is the same as SpeedIndexCurrentBusinessDay but has an added date parameter, I use this for historical checks and also for subscriptions hence the Email in the title.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Both Data Sources need to be set to use the server that you configured earlier (ServerA);</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Double click each Data Source and at the Shared Data Source Properties window (see below) click Edit.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-b2-loYw_dCg/UcgzA2T7qfI/AAAAAAAABhQ/nm1WA3FdTwE/s1600/SharedDataSourceProperties.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="235" src="http://2.bp.blogspot.com/-b2-loYw_dCg/UcgzA2T7qfI/AAAAAAAABhQ/nm1WA3FdTwE/s320/SharedDataSourceProperties.jpg" width="320" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">At the Connection properties window (see below) type the server name you have used as ServerA and click OK.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-6-A3H3azK6c/UcgzH5IIWpI/AAAAAAAABhY/3JZJvgt4R6c/s1600/ConnectionProperties.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://2.bp.blogspot.com/-6-A3H3azK6c/UcgzH5IIWpI/AAAAAAAABhY/3JZJvgt4R6c/s320/ConnectionProperties.jpg" width="234" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The only other thing to change is to update the Deployment Settings to point to the Report Server instance and path where you want to deploy the reports and of course deploy the solution.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">To do this right click DatabaseTeamKPI top level in solution explorer (see below) and select properties;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-l2BYqWK7fNg/UcgzNunzcyI/AAAAAAAABhg/c1u-4gT1fcQ/s1600/DatabaseTeamKPIProprtyPages.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="194" src="http://4.bp.blogspot.com/-l2BYqWK7fNg/UcgzNunzcyI/AAAAAAAABhg/c1u-4gT1fcQ/s320/DatabaseTeamKPIProprtyPages.jpg" width="320" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The TargetServerURL needs to be updated to reflect the server you want to house the reports. If this is different to ServerA then the servernamehere will need to reflect this. Once amended, simply right click DatabaseTeamKPI again and select Build, then right click DatabaseTeamKPI one last time and click deploy.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The routine and reports are now setup; it is time to take the initial baseline.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Take the initial baseline</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Not too much to do here, the SQL Agent jobs created by the database scripts will aggregate the trace data collected by Performance Advisor and create the baseline. You can view the data collected by querying the tables or using the reports in the reporting solution, to familiarise yourself with the routine while the initial baseline is being collected so you can hit the ground running with the analysis.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">What I suggest here is that you export the SpeedIndexByDay report once a day for use when comparing the two baselines. This is not an essential as the data the reports use is still record so can be used historically.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Analyse the initial baseline</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">The SpeedIndex is the figure we are using here, the lower the better, however each environment will be different so you will have to use your own judgement as to what is acceptable in your environment. I’ve included a summary of the how the SpeedIndex is calculated below;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">SpeedIndex = ((QueryHitCount * QueryAverageDuration / 1000000) * 420 / Duration of Aggregation)</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Tune, Tune, Tune</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">The SQLSentryPerformance.sql file contains two queries that both return the SpeedIndex and the most expensive queries run against ServerB. The first will be run against data between two dates the second will be run against data between two times on the same day. The second result set that contains the queries will give execution duration and read / write data. I would take the top 25 – 50 queries and tune them. Now when I say tune this can vary dramatically from removing an order by or adding an index, to completely refactoring a query. SQL Sentry Plan Explorer that ships with Performance Advisor is invaluable here to help identify expensive operators in the execution plans.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Take the second baseline</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Not too much to do here, the SQL Agent jobs created by the database scripts will aggregate the trace data collected by Performance Advisor and create the baseline.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">NOTE – Do not make any changes during this period that are not business critical. This will help improve the accuracy of the baselines and the impact of the tuning.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">What I suggest here is that you export the SpeedIndexByDay report once a day for use when comparing the two baselines. This is not an essential as the data the reports use is still record so can be used historically. Another piece of advice that I mentioned earlier is that you align the initial and second baselines to start and end on the same weekday and time. I start on Monday at 00:00 and end on Sunday at 23:59:59.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">At my current employer we were able to achieve a 40% – 50% reduction in the SpeedIndex KPI during one week of tuning. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Compare the initial and second baselines</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Another simple task here, compare the SpeedIndex values of the initial and second baselines. How in depth you want to go here is entirely up to you. The lowest level of granularity for the SpeedIndex that the routine captures is 1 minute.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">This routine has proved extremely valuable and the impact visible not only to the DBA team but to the IT management team. So much so that off the back of this and a few other bells and whistles that Performance Advisor provides, we were approved to purchase the required licenses of Performance Advisor to monitor our core SQL Server clusters!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">I hope this post gives you an insight into the importance of baselines and the role they play in the day to day monitoring of your SQL Servers. I also hope that the routine allows you to gain in my eyes “another valuable metric” and a means by which to “Sell” SQL Sentry Performance Advisor to your management team as a truly fantastic tool which gives you so much more than just the data that the routine uses.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">As always, Enjoy!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span>Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-39007998404299287572013-05-23T13:20:00.004+01:002013-05-23T13:20:35.523+01:00Dedicated Administrator Connection (DAC)<span style="font-family: Arial, Helvetica, sans-serif;">We all dread the scenario whereby SQL Server is under so much load and has a complete lack of resources that no further connections can be made. Although extreme and a situation I have never been in there is a saving grace, one last chance before opting for measures that will induce outages, the Dedicated Administrator Connection or DAC. </span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">First introduced in SQL Server 2005 t</span><span style="font-family: Arial, Helvetica, sans-serif;">he DAC is a special connection that is accessible when all other connections fail. The DAC is available via both SQLCMD and SSMS however it is recommended to use SQLCMD as it uses fewer resources than the GUI of SSMS. </span><span style="font-family: Arial, Helvetica, sans-serif;">The sole purpose of the DAC is for diagnosing problems when no other connection can be made, it is not to be used as a regular connection. It is also recommended</span><span style="font-family: Arial, Helvetica, sans-serif;"> that you connect to the master database when using the DAC and that you do not run any resource intensive queries.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">There are some limitations which I will detail below;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">1 - Only one connection to the DAC is allowed, if already in use any further connections will be rejected</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">The below query it will return the SPID for the DAC if it is in use;</span><br />
<pre class="prettyprint" style="background-color: white; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(136, 136, 136); color: #333333; font-family: Menlo, Monaco, 'Courier New', monospace; font-size: 12.025px; line-height: 18px; margin-bottom: 18px; padding: 2px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;"><span class="kwd" style="color: #000088; float: inherit;">SELECT</span><span class="pln" style="color: black; float: inherit;"> </span><span class="pln" style="color: black; float: inherit;">s.session_id</span><span class="pln" style="color: black; float: inherit;">
</span><span class="kwd" style="color: #000088; float: inherit;">FROM</span><span class="pln" style="color: black; float: inherit;"> </span><span class="str" style="color: #008800; float: inherit;">sys.tcp_endpoints</span><span class="pln" style="color: black; float: inherit;"> </span><span class="kwd" style="color: #000088; float: inherit;">AS</span><span class="pln" style="color: black; float: inherit;"> </span><span class="pln" style="color: black; float: inherit;">E</span><span class="pln" style="color: black; float: inherit;">
</span><span class="pun" style="color: #666600; float: inherit;">INNER</span><span class="pln" style="color: black; float: inherit;"> </span><span class="pun" style="color: #666600; float: inherit;">JOIN</span><span class="pln" style="color: black; float: inherit;"> </span><span class="str" style="color: #008800; float: inherit;">sys.dm_exec_sessions</span><span class="pln" style="color: black; float: inherit;"> </span><span class="kwd" style="color: #000088; float: inherit;">AS</span><span class="pln" style="color: black; float: inherit;"> </span><span class="pln" style="color: black; float: inherit;">S</span><span class="pln" style="color: black; float: inherit;"> </span><span class="kwd" style="color: #000088; float: inherit;">ON</span><span class="pln" style="color: black; float: inherit;"> </span><span class="pln" style="color: black; float: inherit;">E.endpoint_id</span><span class="pln" style="color: black; float: inherit;"> </span><span class="pun" style="color: #666600; float: inherit;">=</span><span class="pln" style="color: black; float: inherit;"> </span><span class="pln" style="color: black; float: inherit;">S.endpoint_id</span><span class="pln" style="color: black; float: inherit;">
</span><span class="kwd" style="color: #000088; float: inherit;">WHERE</span><span class="pln" style="color: black; float: inherit;"> </span><span class="pln" style="color: black; float: inherit;">E.name</span><span class="pln" style="color: black; float: inherit;"> </span><span class="pun" style="color: #666600; float: inherit;">=</span><span class="pln" style="color: black; float: inherit;"> </span><span class="str" style="color: #008800; float: inherit;">'Dedicated Admin Connection'</span><span class="pln" style="color: black; float: inherit;">;</span></pre>
<span style="font-family: Arial, Helvetica, sans-serif;">2 - By default the DAC is only available locally, this can be changed by enabling remote admin connections using sp_configure</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">3 - Only users with membership in the sysadmin fixed server role can connect to the DAC</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">4 - Some SQL Statements are unavailable using the DAC, for example BACKUP or RESTORE.</span><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">Below are some examples of connecting to the DAC using both SQLCMD and SSMS, If you have never connected to the DAC or used SQLCMD for that matter, I recommend testing connectivity to the DAC and becoming familiar with SQLCMD. This will save precious time in the event of a serious problem, you really don't want to be googling or boling when facing a potential outage.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Example 1: Connect to the DAC using SQLCMD and integrated security</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Open command prompt and run;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">sqlcmd -S ServerNameHere\InstanceNameHere -d master -A</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<b><span style="font-family: Arial, Helvetica, sans-serif;">Example 2:</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">Connect to the DAC using SQLCMD and SQL authentication</span></b><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Open command prompt and run;</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">sqlcmd -S ServerNameHere\</span><span style="font-family: Arial, Helvetica, sans-serif;">InstanceNameHere</span><span style="font-family: Arial, Helvetica, sans-serif;"> -U UserNameHere -P PasswordHere -d master -A</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<b><span style="font-family: Arial, Helvetica, sans-serif;">Example 3: </span><span style="font-family: Arial, Helvetica, sans-serif;">Connect to the DAC using SSMS</span></b><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Open SSMS, at the connection window prefix the ServerName or ServerName\InstanceName with ADMIN:</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">ADMIN:SQL365</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">or</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">ADMIN:SQL365\INST01</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-33220221009766524102013-05-15T14:16:00.000+01:002013-05-15T14:16:07.487+01:00Object Qualification<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-family: Arial, Helvetica, sans-serif;">I came across an interesting issue recently with NHibernate, now it is
widely known I despise ORM’s, in my experience they do a pretty mediocre job at
best and at times can be absolutely horrific.
The issue was that the statements being fired at an instance of SQL
Server from an application using NHibernate were not schema qualified. Now this is not a rant at ORM’s as the issue
I will show below is experienced with stored procedures, ad-hoc sql and any
T-SQL you execute against SQL Server for that matter. In fact I will be using a stored procedure in
the example ;)</span><br />
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;"><o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Now for those of you that don’t know SQL Server has to do an awfull lot of
work before a statement is actually executed, here I want to show you the
performance improvements that can be achieved by schema qualifying your
objects. The below quote is from
Microsoft and will set the scene for the rest of the post.</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 12.75pt;">
"<i>If user "dbo" owns object
dbo.mystoredproc, and another user "Harry" runs this stored procedure
with the command "exec mystoredproc," the initial cache lookup by
object name fails because the object is not owner-qualified. (It is not yet
known whether another stored procedure named Harry.mystoredproc exists, so SQL
cannot be sure that the cached plan for dbo.mystoredproc is the right one to
execute.) SQL Server then acquires an exclusive compile lock on the procedure
and makes preparations to compile the procedure, including resolving the object
name to an object ID. Before it compiles the plan, SQL Server uses this object
ID to perform a more precise search of the procedure cache and is able to
locate a previously compiled plan even without the owner qualification.</i><o:p></o:p></div>
<div class="MsoNormal" style="background: white; line-height: 12.75pt;">
<i> If an existing plan is found, SQL Server
reuses the cached plan and does not actually compile the stored procedure.
However, the lack of owner-qualification forces SQL to perform a second cache
lookup and acquire an exclusive compile lock before determining that the
existing cached execution plan can be reused. Acquiring the lock and performing
lookups and other work that is needed to get to this point can introduce a
delay that is sufficient for the compile locks to lead to blocking. This is
especially true if a large number of users who are not the stored procedure's
owner simultaneously run it without supplying the owner name. Note that even if
you do not see SPIDs waiting on compile locks, lack of owner-qualification can
introduce delays in stored procedure execution and unnecessarily high CPU
utilization</i>."<o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<b><span style="font-family: Arial, Helvetica, sans-serif;">Script<o:p></o:p></span></b></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">To demonstrate this I used the below script, I am running SQL Server 2008
R2 developer edition on my local instance and used the AdventureWorks2008R2
databasewhich is available <a href="http://msftdbprodsamples.codeplex.com/releases/view/93587"><span style="color: blue;">here</span></a>.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">The script creates a schema called Chris in the AdventureWorks2008R2
database, a user SQL365\Chris is created for the login SQL365\Chris with the
default schema of Chris. Finally a
procedure called dbo.spGetSalesOrderHeader is created that returns every record
from AdventureWorks2008R2.dbo.SalesOrderHeader.</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Object Qualification<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> For more SQL resources, check out
SQLServer365.blogspot.com<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may alter this code for your own
purposes.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may republish altered code as long as
you give due credit.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You must obtain prior permission before
blogging this code.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> THIS CODE AND INFORMATION ARE PROVIDED
"AS IS"<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set Database
Context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
AdventureWorks2008R2<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Declare
variable<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @SQL <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set variable<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @SQL <span style="color: grey;">=</span> <span style="color: red;">'CREATE SCHEMA Chris
AUTHORIZATION dbo'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create Schema<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">schemas<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> name <span style="color: grey;">=</span> <span style="color: red;">'Chris'</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BEGIN</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">EXEC </span><span style="color: grey;">(</span>@SQL<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create user
mapped to login with default schema of the above created schema<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">database_principals<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> name <span style="color: grey;">=</span> <span style="color: red;">'SQL365\chris'</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BEGIN</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">CREATE</span> <span style="color: magenta;">USER</span> [SQL365\Chris] <span style="color: blue;">FOR</span>
<span style="color: blue;">LOGIN</span> [SQL365\Chris] <span style="color: blue;">WITH</span>
<span style="color: blue;">DEFAULT_SCHEMA</span> <span style="color: grey;">=</span>
Chris<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
procedure in dbo schema to be executed by the above user<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">N'[dbo].[spGetSalesOrderHeader]'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span>
<span style="color: blue;">type</span> <span style="color: grey;">IN</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: red;">N'P'</span><span style="color: grey;">,</span> <span style="color: red;">N'PC'</span> <span style="color: grey;">)</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DROP</span> <span style="color: blue;">PROCEDURE</span> [dbo]<span style="color: grey;">.</span>[spGetSalesOrderHeader]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">PROCEDURE</span> dbo<span style="color: grey;">.</span>spGetSalesOrderHeader<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">AS</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BEGIN<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SELECT</span> SalesOrderID <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> RevisionNumber <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> OrderDate <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DueDate <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ShipDate <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> [Status] <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> OnlineOrderFlag <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SalesOrderNumber <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> PurchaseOrderNumber <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> AccountNumber <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CustomerID <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SalesPersonID <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> TerritoryID <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> BillToAddressID <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ShipToAddressID <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ShipMethodID <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CreditCardID <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CreditCardApprovalCode <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CurrencyRateID <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SubTotal <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> TaxAmt <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Freight <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> TotalDue <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Comment <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> rowguid <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ModifiedDate<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> sales<span style="color: grey;">.</span>SalesOrderHeader<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END<o:p></o:p></span></span></div>
<div class="MsoNoSpacing">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">I use a great tool <a href="http://www.datamanipulation.net/SQLQueryStress/"><span style="color: blue;">SQLQueryStress</span></a> developed by Adam Machanic (<a href="http://sqlblog.com/blogs/adam_machanic"><span style="color: blue;">B</span></a> - <a href="https://twitter.com/AdamMachanic"><span style="color: blue;">T</span></a>) quite frequently when
testing the effects of changes under load, it is ingeniously simple to use and
I love it. I used SQLQueryStress to
record the results of executing the procedure and without schema qualification and
with schema qualification, I used 4 threads (the number of cores in my laptop)
and ran a thousand iterations to get a good average. Results of which are included below;<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing" style="text-align: justify;">
<b><span style="font-family: Arial, Helvetica, sans-serif;"><u>Non Schema Qualified</u></span><o:p></o:p></b></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal">
<!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Picture_x0020_3" o:spid="_x0000_i1026" type="#_x0000_t75"
style='width:451.5pt;height:309pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\mcgowc\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><img border="0" src="file:///C:/Users/mcgowc/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg" v:shapes="Picture_x0020_3" /></div>
<div class="MsoNoSpacing">
<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-GZC0GChSqz4/UZOJs3Pa8sI/AAAAAAAABgs/d0w9Pk4Q3lA/s1600/NonSchemaQualified.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="219" src="http://2.bp.blogspot.com/-GZC0GChSqz4/UZOJs3Pa8sI/AAAAAAAABgs/d0w9Pk4Q3lA/s320/NonSchemaQualified.jpg" width="320" /></a></div>
<br />
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<b><u><span style="font-family: Arial, Helvetica, sans-serif;">Schema Qualified</span><o:p></o:p></u></b></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-gxT7fsvjOyQ/UZOJxgTnmfI/AAAAAAAABg0/yyqrN08dXU0/s1600/SchemaQualified.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="219" src="http://2.bp.blogspot.com/-gxT7fsvjOyQ/UZOJxgTnmfI/AAAAAAAABg0/yyqrN08dXU0/s320/SchemaQualified.jpg" width="320" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">As you can see the results are pretty damn conclusive every
metric measured by SQLQueryStress saw a performance improvement by schema
qualifying objects.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Run Time - <b>27.01%</b>
Improvement<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">ClientSeconds/Iteration (Avg) - <b>11.99%</b> Improvement<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">CPU Seconds/Iteration (Avg) - <b>1.13%</b> Improvement<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Actual Seconds/Iteration (Avg) - <b>12.54%</b> Improvement<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">There is no excuse for not schema qualifying your objects,
performance improvements like this just cannot be ignored.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><o:p></o:p></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-60931556744424406752013-05-09T12:01:00.000+01:002013-05-10T12:31:56.767+01:00DTA and Hypothetical Indexes<span style="font-family: Arial, Helvetica, sans-serif;">For those of you that don’t know DTA stands for Database
Engine Tuning Adviser and is available from the Tools menu in Management
Studio. This tool was first introduced
in SQL Server 2005 and has been a much used tool by DBA’s and Developers alike
in most of the companies I have worked for.</span><br />
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;"><o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">There are two main problems I have with DTA firstly the
default object name prefixes are terrible, no really I mean absolutely
awful. See the table below for examples.</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div align="center">
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableLightGridAccent6" style="border-collapse: collapse; border: none; mso-border-alt: solid #F79646 1.0pt; mso-border-themecolor: accent6; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-table-layout-alt: fixed; mso-yfti-tbllook: 1184; width: 659px;">
<tbody>
<tr>
<td style="border-bottom: solid #F79646 2.25pt; border: solid #F79646 1.0pt; mso-border-bottom-themecolor: accent6; mso-border-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 125.9pt;" valign="top" width="168"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 5;">
<b><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">Object type<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #F79646 2.25pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: solid #F79646 1.0pt; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 163.0pt;" valign="top" width="217"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 1;">
<b><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">Default object name prefixes<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #F79646 2.25pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: solid #F79646 1.0pt; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 205.55pt;" valign="top" width="274"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 1;">
<b><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">Example<o:p></o:p></span></b></div>
</td>
</tr>
<tr>
<td style="background: #FDE4D0; border-top: none; border: solid #F79646 1.0pt; mso-background-themecolor: accent6; mso-background-themetint: 63; mso-border-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 125.9pt;" valign="top" width="168"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 68;">
<b><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">Indexes<o:p></o:p></span></b></div>
</td>
<td style="background: #FDE4D0; border-bottom: solid #F79646 1.0pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: none; mso-background-themecolor: accent6; mso-background-themetint: 63; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 163.0pt;" valign="top" width="217"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 64;">
<span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-bidi-font-weight: bold; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">_dta_index_</span><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;"><o:p></o:p></span></div>
</td>
<td style="background: #FDE4D0; border-bottom: solid #F79646 1.0pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: none; mso-background-themecolor: accent6; mso-background-themetint: 63; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 205.55pt;" valign="top" width="274"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 64;">
<span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">_dta_index_dta_mv_1_7_1150627142_K2<o:p></o:p></span></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid #F79646 1.0pt; mso-border-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 125.9pt;" valign="top" width="168"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 132;">
<b><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">Statistics<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #F79646 1.0pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: none; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 163.0pt;" valign="top" width="217"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 128;">
<span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-bidi-font-weight: bold; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">_dta_stat_</span><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;"><o:p></o:p></span></div>
</td>
<td style="border-bottom: solid #F79646 1.0pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: none; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 205.55pt;" valign="top" width="274"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 128;">
<span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">_dta_stat_2041058307_2_5<o:p></o:p></span></div>
</td>
</tr>
<tr>
<td style="background: #FDE4D0; border-top: none; border: solid #F79646 1.0pt; mso-background-themecolor: accent6; mso-background-themetint: 63; mso-border-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 125.9pt;" valign="top" width="168"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 68;">
<b><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">Views<o:p></o:p></span></b></div>
</td>
<td style="background: #FDE4D0; border-bottom: solid #F79646 1.0pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: none; mso-background-themecolor: accent6; mso-background-themetint: 63; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 163.0pt;" valign="top" width="217"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 64;">
<span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-bidi-font-weight: bold; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">_dta_mv_</span><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;"><o:p></o:p></span></div>
</td>
<td style="background: #FDE4D0; border-bottom: solid #F79646 1.0pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: none; mso-background-themecolor: accent6; mso-background-themetint: 63; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 205.55pt;" valign="top" width="274"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 64;">
<span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">_dta_mv_3<o:p></o:p></span></div>
</td>
</tr>
<tr>
<td style="border-top: none; border: solid #F79646 1.0pt; mso-border-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 125.9pt;" valign="top" width="168"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 132;">
<b><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">Partition functions<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #F79646 1.0pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: none; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 163.0pt;" valign="top" width="217"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 128;">
<span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-bidi-font-weight: bold; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">_dta_pf_</span><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;"><o:p></o:p></span></div>
</td>
<td style="border-bottom: solid #F79646 1.0pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: none; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 205.55pt;" valign="top" width="274"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 128;">
<span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">_dta_pf_1043<o:p></o:p></span></div>
</td>
</tr>
<tr>
<td style="background: #FDE4D0; border-top: none; border: solid #F79646 1.0pt; mso-background-themecolor: accent6; mso-background-themetint: 63; mso-border-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 125.9pt;" valign="top" width="168"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 68;">
<b><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">Partition schemes<o:p></o:p></span></b></div>
</td>
<td style="background: #FDE4D0; border-bottom: solid #F79646 1.0pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: none; mso-background-themecolor: accent6; mso-background-themetint: 63; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 163.0pt;" valign="top" width="217"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 64;">
<span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-bidi-font-weight: bold; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">_dta_ps_</span><span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;"><o:p></o:p></span></div>
</td>
<td style="background: #FDE4D0; border-bottom: solid #F79646 1.0pt; border-left: none; border-right: solid #F79646 1.0pt; border-top: none; mso-background-themecolor: accent6; mso-background-themetint: 63; mso-border-bottom-themecolor: accent6; mso-border-left-alt: solid #F79646 1.0pt; mso-border-left-themecolor: accent6; mso-border-right-themecolor: accent6; mso-border-top-alt: solid #F79646 1.0pt; mso-border-top-themecolor: accent6; padding: 0cm 5.4pt 0cm 5.4pt; width: 205.55pt;" valign="top" width="274"><div class="MsoNormal" style="line-height: 13.5pt; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 7.5pt; margin-right: 7.5pt; margin-top: 0cm; mso-yfti-cnfc: 64;">
<span style="color: #2a2a2a; font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-GB;">_dta_ps_1040<o:p></o:p></span></div>
</td>
</tr>
</tbody></table>
</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Now there is no right or wrong way to standardise the
names of your database objects but indexes for example I go with the below;<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Single Index Key Column - IDX_TableName:ColumnName<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Multi Index Key Column – IDX_TableName:CompositeX <o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Some people will agree some won’t, but in my experience
this makes life easier for me and the team when maintaining our SQL estate.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">The other problem is that while DTA is analysing a
workload, it automatically creates the recommended indexes with the meaningless
names as mentioned above. DTA will
always clean up the indexes it creates; well actually that is a lie. If the DTA process exits then the indexes it
has created so far will persist!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">We can identify these indexes by the value of the
is_hypothetical column of the sys.indexes catalog view, this will be = 1.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">I have created the below script which will email a list
of hypothetical indexes and the script to drop them, simply schedule this as a
SQL Server Agent job as you see fit changing the @EmailProfile and
@EmailRecipient variables accordingly;</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: 15.0pt; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Hypothetical Indexes<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> For more SQL resources, check out
SQLServer365.blogspot.com<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may alter this code for your own
purposes.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may republish altered code as long as
you give due credit.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You must obtain prior permission before
blogging this code.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> THIS CODE AND INFORMATION ARE PROVIDED
"AS IS"<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Declare
variables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@EmailProfile <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@EmailRecipient <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@EmailSubject <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set variables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@EmailProfile <span style="color: grey;">=</span> <span style="color: red;">'DBA'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@EmailRecipient <span style="color: grey;">=</span> <span style="color: red;">'Chris@SQLServer365.com'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@EmailSubject <span style="color: grey;">=</span> <span style="color: red;">'ALERT
- Hypothetical Indexes found on '</span> <span style="color: grey;">+</span> <span style="color: magenta;">@@SERVERNAME<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Drop
temporary table if exists<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'tempDB.dbo.#HypotheticalIndexDropScript'</span><span style="color: grey;">)</span> <span style="color: grey;">IS</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DROP</span> <span style="color: blue;">TABLE</span> #HypotheticalIndexDropScript<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
Temporary Table<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TABLE</span> #HypotheticalIndexDropScript<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DatabaseName <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> HypotheticalIndexDropScript <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>4000<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INSERT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">INTO</span>
#HypotheticalIndexDropScript<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">EXEC</span> <span style="color: maroon;">sp_msforeachdb</span><span style="color: blue;"> </span><span style="color: red;">'USE [?]; SELECT
DB_NAME(DB_ID()), ''USE '' + ''['' + DB_NAME(DB_ID()) + ''];'' + ''
IF EXISTS (SELECT 1 FROM
sys.indexes AS i WHERE i.[object_id] =
'' + ''object_id('' + + '''''''' + ''['' + SCHEMA_NAME(o.[schema_id]) + ''].''
+ ''['' + OBJECT_NAME(i.[object_id]) +
'']'' + '''''''' + '')'' + '' AND name = '' + '''''''' + i.NAME + '''''''' +
'') '' <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + '' DROP INDEX '' + ''['' + i.name +
'']'' + '' ON '' + ''['' + SCHEMA_NAME(o.[schema_id]) + ''].'' + ''['' +
OBJECT_NAME(o.[object_id]) + ''];'' AS HypotheticalIndexDropScript<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM sys.indexes i<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> INNER JOIN sys.objects o ON
o.[object_id] = i.[object_id] <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">WHERE
is_hypothetical = 1'<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Check for
hypothetical indexes<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> #HypotheticalIndexDropScript <span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BEGIN<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DECLARE</span>
@tableHTML <span style="color: blue;">NVARCHAR</span><span style="color: grey;">(</span><span style="color: magenta;">MAX</span><span style="color: grey;">);</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SET</span>
@tableHTML <span style="color: grey;">=</span> <span style="color: red;">N'<style
type="text/css">'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'.h1 {font-family: Arial,
verdana;font-size:16px;border:0px;background-color:white;} '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'.h2 {font-family: Arial,
verdana;font-size:12px;border:0px;background-color:white;} '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'body {font-family: Arial, verdana;} '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'table{font-size:12px; border-collapse:collapse;border:1px
solid black; padding:3px;} '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'td{background-color:#F1F1F1; border:1px solid black;
padding:3px;} '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'th{background-color:#99CCFF; border:1px solid black;
padding:3px;}'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'</style>'</span> <span style="color: grey;">+</span> <span style="color: red;">N'<table border="1">'</span> <span style="color: grey;">+</span> <span style="color: red;">N'<tr>'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'<th>DatabaseName</th>'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">N'<th>HypotheticalIndexDropScript</th>'</span> <span style="color: grey;">+</span> <span style="color: red;">N'</tr>'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: magenta;">CAST</span><span style="color: grey;">((</span> <span style="color: blue;">SELECT</span> td <span style="color: grey;">=</span>
DatabaseName <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">''</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> td <span style="color: grey;">=</span> HypotheticalIndexDropScript <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">''<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> #HypotheticalIndexDropScript<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FOR<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">XML</span>
<span style="color: blue;">PATH</span><span style="color: grey;">(</span><span style="color: red;">'tr'</span><span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TYPE<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">)</span> <span style="color: blue;">AS</span> <span style="color: blue;">NVARCHAR</span><span style="color: grey;">(</span><span style="color: magenta;">MAX</span><span style="color: grey;">))</span> <span style="color: grey;">+</span> <span style="color: red;">N'</table>'</span><span style="color: grey;">;</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Email
results <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">EXEC</span>
msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_send_dbmail</span><span style="color: blue;"> </span>@profile_name
<span style="color: grey;">=</span> @EmailProfile<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @recipients <span style="color: grey;">=</span> @EmailRecipient<span style="color: grey;">,</span> @subject <span style="color: grey;">=</span> @EmailSubject<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @body <span style="color: grey;">=</span>
@tableHTML<span style="color: grey;">,</span> @body_format <span style="color: grey;">=</span> <span style="color: red;">'HTML'</span><span style="color: grey;">;</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END<o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="font-family: "Courier New"; font-size: 10.0pt; line-height: 115%; mso-no-proof: yes;"> <span style="color: blue;">GO</span></span><o:p></o:p></div>
</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">DTA is not coming out to play as he has been (and will
continue to be) a very naughty boy.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><o:p></o:p></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com1tag:blogger.com,1999:blog-6664701585971860985.post-22366813559908782842013-05-07T18:54:00.001+01:002013-05-07T18:55:42.440+01:00SQL Server Hardware and Acronyms<span style="font-family: Arial, Helvetica, sans-serif;">Over the weekend I finished reading yet another Red Gate
book, this one was SQL Server Hardware by Glenn Berry (</span><a href="https://twitter.com/GlennAlanBerry" style="font-family: Arial, Helvetica, sans-serif;"><span style="color: blue;">t</span></a><span style="font-family: Arial, Helvetica, sans-serif;"> - </span><a href="http://sqlserverperformance.wordpress.com/" style="font-family: Arial, Helvetica, sans-serif;"><span style="color: blue;">b</span></a><span style="font-family: Arial, Helvetica, sans-serif;">). Having earned my crust as a Windows Engineer
before honing my SQL Server Skills and becoming a DBA, I have had this book on
my reading list since it was published but thought others would give me more benefit and
teach me more. Oh how wrong I was, I
honestly thought 99% of this book I would already know but the reality is that quite
a few of the ideas and practices in this book I have overlooked. There are some great nuggets in here like
Windows Power Plans for example. Windows
Power Plans to quote Glenn are;</span><br />
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">“Designed to let you manage how your server uses power,
this setting can have a dramatic effect on processor performance, and is
controlled through Windows as well as the firmware BIOS settings”<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Our SQL Server estate was indeed using the Balanced plan,
taking Glenn’s advice and testing the changes we were able to achieve around a
15% improvement in CPU performance on a 2 CPU server. Given this has no up-front cost, is a low
risk change with no downtime surely this is a no brainer?! Yes there is a small increase in power
consumption somewhere around 5%-10% between the Balanced and High performance
plans but the performance increase is surly worth this.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Go on have a look, I would be interested to see if anyone
else has overlooked this setting. Glenn’s
book can be found over at <a href="http://www.sqlservercentral.com/articles/books/71809/"><span style="color: blue;">SQL Server Central</span></a>,
the eBook format is also FREE!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Anyway, back to what I wanted to bring to your attention,
the IT industry is full off acronyms many of which are duplicated across
technologies. One of the cool features
of Glenn’s book is that Appendix C contains a list of abbreviations used in the
book. Below is the complete list;<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184;">
<tbody>
<tr>
<td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">AMB<o:p></o:p></span></span></div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Advanced Memory Buffer<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 1;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">AMD<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Advanced Micro Devices<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 2;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">API<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Application Programming Interface<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 3;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">AWE<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Address Windowing Extensions<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 4;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">BI<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Business Intelligence<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 5;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">BIOS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Basic Input Output System<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 6;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">CAL<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Client Access License<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 7;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">CDC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Change Data Capture<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 8;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">CIFS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Common Internet File System<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 9;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">CISC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Complex Instruction Set Computer<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 10;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">CPI<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Cost per Instruction<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 11;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">CSS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Customer Service and Support<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 12;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">CU<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Cumulative Update<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 13;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DAC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Data Tier Application<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 14;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DACPAC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Data Tier Application Package<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 15;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DAS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Direct Attached Storage<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 16;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DDL<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Data Definition Language<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 17;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DDR<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Data Dependent Routing<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 18;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DESC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">in T-SQL, Descending<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 19;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DIMM<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Dual in-line Memory Modules<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 20;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DML<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Data Manipulation Language<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 21;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DMV<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Dynamic Management View<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 22;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DPV<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Distributed Partitioned Views<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 23;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DRAM<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Dynamic Random Access Memory<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 24;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DSS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Decision Support System<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 25;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">DW<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Data Warehouse<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 26;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">EE<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Enterprise Edition<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 27;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">EFD<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Enterprise Flash Disks<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 28;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">EIST<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Enhanced Intel Speedstep Technology<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 29;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">EP<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Extended Protection<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 30;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">EPIC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Explicitly Parallel Instruction
Computing<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 31;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">EPT<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Extended Page Tables<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 32;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">FDR<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Full Disclosure Report<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 33;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">HBA<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Host Bus Adaptors<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 34;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">HT<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Hyper-threading<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 35;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">IDE<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Integrated Drive Electronics<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 36;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">ILP<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Instruction Level Parallelism<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 37;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">IOP<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Input Output Operation<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 38;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">IOPS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Input/Output Operations per Second<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 39;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">ISM<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Incremental Servicing Model<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 40;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">ISV<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Independent Software Vendor<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 41;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">LPIM<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Lock Pages in Memory<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 42;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">LUN<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Logical Unit Number<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 43;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">MAXDOP<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Max Degree of Parallelism<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 44;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">MCH<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Memory Controller Hub<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 45;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">MDS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Master Data Services<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 46;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">MLC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Multi Level Cell<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 47;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">MMC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Microsoft Management Console<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 48;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">MPIO<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Multi Path Input Output<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 49;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">NIC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Network Interface Card<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 50;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">NTLM<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">NT Lan Manager<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 51;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">NUMA<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Non-Uniform Memory Architecture<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 52;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">ODBC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Open Database Connectivity<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 53;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">OEM<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Original Equipment Manufacturer<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 54;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">OLAP<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Online Analytical Processing<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 55;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">OLTP<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Online Transaction Processing<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 56;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">OMSA<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Open Manage System Administrator<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 57;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">PAE<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Physical Address Extension<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 58;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">PATA<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Parallel Advanced Technology
Attachment<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 59;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">PCU<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Public Cumulative Update<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 60;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">PK<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Primary Key<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 61;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">POST<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Power On Self-Test<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 62;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">QPI<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Quick Path Interconnect<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 63;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">RAID<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Redundant Array of Independent Disk<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 64;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">RAS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Reliability, Availability and
Serviceability<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 65;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">RDIMM<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Registered Dual In-line Memory
Modules<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 66;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">RISC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Reduced Instruction Set Computer<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 67;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">RPO<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Recovery Point Objective<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 68;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">RTM<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Release to Manufacturing<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 69;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">RTO<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Recovery Time Objective<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 70;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">RVI<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Rapid Virtualization Indexing<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 71;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SAN<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Storage Area Network<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 72;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SAS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Serial Attached SCSI<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 73;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SATA<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Serial Advanced Technology
Attachment<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 74;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SCOM<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">System Center Operations Manager<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 75;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SCSI<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Small Computer System Interface<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 76;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SKU<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Stock Keeping Unit<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 77;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SLAT<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Second Level Address Translation<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 78;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SLC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Single Level Cell<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 79;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SMB<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Server Message Block<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 80;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SMP<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Symmetrical Multiprocessing<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 81;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SPD<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Serial Presence Detect<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 13.35pt; mso-yfti-irow: 82;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 13.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SPEC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 13.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Standard Performance Evaluation
Corporation<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 83;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SQLCAT<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SQL Server Customer Advisory Team<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 84;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SQLIO<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SQL IO, a disk benchmarking utility<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 85;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SQLOS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SQL Server Operating System<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 86;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SSAS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SQL Server Analysis Services<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 87;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SSD<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Solid-State Drives<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 88;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SSMS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SQL Server Management Studio<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 89;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SSRS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SQL Server Reporting Services<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 90;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">SUT<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">System Under Test<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 91;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">TAP<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Technology Adoption Program<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 92;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">TDE<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Transparent Data Encryption<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 13.35pt; mso-yfti-irow: 93;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 13.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">TPC<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 13.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Transaction Processing Performance
Council<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 13.35pt; mso-yfti-irow: 94;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 13.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">TpsE<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 13.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Transactions per second for TPC-E benchmark<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 95;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">UCP<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Utility Control Point<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 96;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">VAS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Virtual Address Space<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 97;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">VT<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Virtual Technology<o:p></o:p></span></span></div>
</td>
</tr>
<tr style="height: 5.35pt; mso-yfti-irow: 98; mso-yfti-lastrow: yes;">
<td style="border-top: none; border: solid windowtext 1.0pt; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 69.2pt;" valign="top" width="92"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">WSUS<o:p></o:p></span></span></div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 5.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 7.0cm;" valign="top" width="265"><div class="MsoNormal" style="line-height: 9.05pt; margin-bottom: 7.0pt; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-size: 9pt;"><span style="font-family: Arial, Helvetica, sans-serif;">Windows Server Update Services<o:p></o:p></span></span></div>
</td>
</tr>
</tbody></table>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><o:p></o:p></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-89515564771227302462013-03-14T14:55:00.002+00:002013-04-20T11:22:25.860+01:00Index Tuning<span style="font-family: Arial, Helvetica, sans-serif;">This week I've been carrying out some performance tuning
of some of the more intensive procedures in one of our environments.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">Using </span><a href="http://www.sqlsentry.net/" style="font-family: Arial, Helvetica, sans-serif;"><span style="color: blue;">SQL
Sentry Performance Advisor</span></a><span style="font-family: Arial, Helvetica, sans-serif;"> I highlighted four or five procedures to start
with.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">I was able to get a couple of
quick wins which was a result, then analysing one of the execution plans I noticed
a rather expensive index update.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">A bit
of digging using the </span><a href="http://www.sqlskills.com/blogs/kimberly/use-this-sp_helpindex-rewrites/" style="font-family: Arial, Helvetica, sans-serif;"><span style="color: blue;">help
index scripts</span></a><span style="font-family: Arial, Helvetica, sans-serif;"> created by Kimberley Tripp of SQL Skills revealed the table
in question had 24 indexes, one clustered index and 23 non clustered indexes, a
little excessive considering the table has 29 columns don’t you think?</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">My first thought was that there must be some duplicate
indexes, so I turned to yet more </span><a href="http://www.sqlskills.com/blogs/kimberly/removing-duplicate-indexes/" style="font-family: Arial, Helvetica, sans-serif;"><span style="color: blue;">index
scripts</span></a><span style="font-family: Arial, Helvetica, sans-serif;"> created by Kimberly Tripp, but to my surprise there were no
duplicate indexes.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">This got me thinking,
indexes are great for reads but inherently bad for writes, there are no two
ways about it, every index you create affects every insert, update and delete
operation on the table.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">There was no
doubt in my mind that this number of indexes was impacting performance, it was
crystal clear in the execution plan in the form of the red highlighted operator
courtesy of </span><a href="http://www.sqlsentry.net/" style="font-family: Arial, Helvetica, sans-serif;"><span style="color: blue;">SQL Sentry Plan Explorer</span></a><span style="font-family: Arial, Helvetica, sans-serif;">
(which is built in to Performance Advisor).</span><br />
<br />
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">So what now? I
have identified the cause of the poorly performing procedure as being an index
update, which in turn led to me finding 24 indexes on the table in
question. I can’t just blindly drop some
of the indexes and hope the performance improves, what do I do? I turn to my trusty DMV’s, when I say mine I
mean mine, sure you have your DMV’s but the metadata they expose are for your
environment not mine. Right then too the
DMV’s we turn, I have the below query which gets the index usage stats for all
indexes on a particular table;</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set Database
Context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create table<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'dbo.IndexUsageStats'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span> [type] <span style="color: grey;">=</span> <span style="color: red;">'U'</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">CREATE</span> <span style="color: blue;">TABLE</span> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>IndexUsageStats<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IndexName <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> UserReads <span style="color: blue;">BIGINT</span>
<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> UserWrites <span style="color: blue;">BIGINT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">ELSE<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- If table exists truncate it before
population<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRUNCATE</span> <span style="color: blue;">TABLE</span> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>IndexUsageStats<span style="color: grey;">;</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
DatabaseName<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set isolation
level<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRANSACTION</span> <span style="color: blue;">ISOLATION</span>
<span style="color: blue;">LEVEL</span> <span style="color: blue;">READ</span> <span style="color: blue;">UNCOMMITTED</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @TableName
<span style="color: blue;">AS</span> <span style="color: blue;">NVARCHAR</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">=</span> <span style="color: red;">'TableName'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Insert index
usage data<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INSERT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">INTO</span> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>IndexUsageStats<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SELECT</span> i<span style="color: grey;">.</span>[name] <span style="color: blue;">AS</span> [index_name] <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ddius<span style="color: grey;">.</span>[user_seeks]
<span style="color: grey;">+</span> ddius<span style="color: grey;">.</span>[user_scans]
<span style="color: grey;">+</span> ddius<span style="color: grey;">.</span>[user_lookups]
<span style="color: blue;">AS</span> [user_reads] <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ddius<span style="color: grey;">.</span>[user_updates]
<span style="color: blue;">AS</span> [user_writes]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">dm_db_index_usage_stats</span>
ddius<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">INNER</span>
<span style="color: grey;">JOIN</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">indexes</span> i <span style="color: blue;">ON</span> ddius<span style="color: grey;">.</span>[object_id] <span style="color: grey;">=</span> i<span style="color: grey;">.</span>[object_id]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span> i<span style="color: grey;">.</span>[index_id] <span style="color: grey;">=</span> ddius<span style="color: grey;">.</span>[index_id]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">INNER</span>
<span style="color: grey;">JOIN</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">partitions</span> SP <span style="color: blue;">ON</span> ddius<span style="color: grey;">.</span>[object_id] <span style="color: grey;">=</span> SP<span style="color: grey;">.</span>[object_id]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
<span style="color: grey;">AND</span> SP<span style="color: grey;">.</span>[index_id]
<span style="color: grey;">=</span> ddius<span style="color: grey;">.</span>[index_id]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">INNER</span>
<span style="color: grey;">JOIN</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects</span> o <span style="color: blue;">ON</span> ddius<span style="color: grey;">.</span>[object_id] <span style="color: grey;">=</span> o<span style="color: grey;">.</span>[object_id]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">INNER</span>
<span style="color: grey;">JOIN</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">sysusers</span> su <span style="color: blue;">ON</span> o<span style="color: grey;">.</span>[schema_id] <span style="color: grey;">=</span> su<span style="color: grey;">.</span>[UID]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> ddius<span style="color: grey;">.</span>[database_id]
<span style="color: grey;">=</span> <span style="color: magenta;">DB_ID</span><span style="color: grey;">()</span> <span style="color: green;">-- current database only<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span>
ddius<span style="color: grey;">.</span>[object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span>@TableName<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">GROUP</span> <span style="color: blue;">BY</span> su<span style="color: grey;">.</span>[name] <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> o<span style="color: grey;">.</span>[name]
<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> i<span style="color: grey;">.</span>[name]
<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ddius<span style="color: grey;">.</span>[user_seeks]
<span style="color: grey;">+</span> ddius<span style="color: grey;">.</span>[user_scans]
<span style="color: grey;">+</span> ddius<span style="color: grey;">.</span>[user_lookups]
<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ddius<span style="color: grey;">.</span>[user_updates]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">ORDER</span> <span style="color: blue;">BY</span> ddius<span style="color: grey;">.</span>[user_seeks]
<span style="color: grey;">+</span> ddius<span style="color: grey;">.</span>[user_scans]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span>
ddius<span style="color: grey;">.</span>[user_lookups] <span style="color: blue;">DESC</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNoSpacing">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Return index
Usage Stats<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">'Index Usage Stats'</span>
<span style="color: blue;">AS</span> ResultType<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IUS<span style="color: grey;">.</span>IndexName<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IUS<span style="color: grey;">.</span>UserReads<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IUS<span style="color: grey;">.</span>UserWrites<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>IndexUsageStats
<span style="color: blue;">AS</span> IUS<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">From this I was able to identify that 21 of the 24
indexes have been used to satisfy a query signified by the UserReads column,
great that’s three indexes that are being updated for every INSERT, UPDATE and
DELETE statement and are being maintained by expensive index reorganise and
index rebuild operations but are never read from. I script the drop and create of these three
indexes and save the script file. But we
are not done yet, now this is the really cool part. It is thanks to another SQL Skills member
that I was able to achieve what I wanted to do next, interrogate the plan
cache. I came across a post from <a href="http://www.sqlskills.com/blogs/jonathan/finding-what-queries-in-the-plan-cache-use-a-specific-index/"><span style="color: blue;">Jonathan
Kehayias</span></a> which shows how to find what queries in the plan cache used a
specific index. I tweaked this slightly
as I wanted to find what queries in the plan cache accessed the table and which
indexes they used to satisfy the query.
Below is the modified query;</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set Database
Context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create table<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'dbo.PlanCacheIndexes'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span> [type] <span style="color: grey;">=</span> <span style="color: red;">'U'</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">CREATE</span> <span style="color: blue;">TABLE</span> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>PlanCacheIndexes<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> StatementText <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>4000<span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DatabaseName <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SchemaName <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> TableName <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IndexName <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Indextype <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> QueryPlan <span style="color: blue;">XML</span>
<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> UseCounts <span style="color: blue;">BIGINT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">ELSE<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- If table exists truncate it before
population<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRUNCATE</span> <span style="color: blue;">TABLE</span> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>PlanCacheIndexes<span style="color: grey;">;</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set isolation
level<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRANSACTION</span> <span style="color: blue;">ISOLATION</span>
<span style="color: blue;">LEVEL</span> <span style="color: blue;">READ</span> <span style="color: blue;">UNCOMMITTED</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Declare and
set variable<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @TableName
<span style="color: blue;">AS</span> <span style="color: blue;">NVARCHAR</span><span style="color: grey;">(</span>128<span style="color: grey;">)</span> <span style="color: grey;">=</span> <span style="color: red;">'TableName'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Make sure the
name passed is appropriately quoted <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">LEFT(</span>@TableName<span style="color: grey;">,</span> 1<span style="color: grey;">)</span> <span style="color: grey;"><></span> <span style="color: red;">'['<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span> <span style="color: grey;">RIGHT(</span>@TableName<span style="color: grey;">,</span> 1<span style="color: grey;">)</span> <span style="color: grey;"><></span> <span style="color: red;">']'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SET</span>
@TableName <span style="color: grey;">=</span> <span style="color: magenta;">QUOTENAME</span><span style="color: grey;">(</span>@TableName<span style="color: grey;">);</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Handle the
case where the left or right was quoted manually but not the opposite side <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">LEFT(</span>@TableName<span style="color: grey;">,</span> 1<span style="color: grey;">)</span> <span style="color: grey;"><></span> <span style="color: red;">'['</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SET</span>
@TableName <span style="color: grey;">=</span> <span style="color: red;">'['</span>
<span style="color: grey;">+</span> @TableName<span style="color: grey;">;</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">RIGHT(</span>@TableName<span style="color: grey;">,</span> 1<span style="color: grey;">)</span> <span style="color: grey;"><></span> <span style="color: red;">']'</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SET</span>
@TableName <span style="color: grey;">=</span> @TableName <span style="color: grey;">+</span> <span style="color: red;">']'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
-- Dig into the
plan cache and find all plans using Indexes</div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">WITH</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
XMLNAMESPACES <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DEFAULT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">'http://schemas.microsoft.com/sqlserver/2004/07/showplan'</span><span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INSERT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">INTO</span> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>PlanCacheIndexes
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">stmt<span style="color: grey;">.</span>value<span style="color: grey;">(</span><span style="color: red;">'(@StatementText)[1]'</span><span style="color: grey;">,</span> <span style="color: red;">'varchar(max)'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span> SQL_Text<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">obj<span style="color: grey;">.</span>value<span style="color: grey;">(</span><span style="color: red;">'(@Database)[1]'</span><span style="color: grey;">,</span> <span style="color: red;">'varchar(128)'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span> DatabaseName<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">obj<span style="color: grey;">.</span>value<span style="color: grey;">(</span><span style="color: red;">'(@Schema)[1]'</span><span style="color: grey;">,</span> <span style="color: red;">'varchar(128)'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span> SchemaName<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">obj<span style="color: grey;">.</span>value<span style="color: grey;">(</span><span style="color: red;">'(@Table)[1]'</span><span style="color: grey;">,</span> <span style="color: red;">'varchar(128)'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span> TableName<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">obj<span style="color: grey;">.</span>value<span style="color: grey;">(</span><span style="color: red;">'(@Index)[1]'</span><span style="color: grey;">,</span> <span style="color: red;">'varchar(128)'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span> IndexName<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">obj<span style="color: grey;">.</span>value<span style="color: grey;">(</span><span style="color: red;">'(@IndexKind)[1]'</span><span style="color: grey;">,</span> <span style="color: red;">'varchar(128)'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span> IndexKind<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">qp<span style="color: grey;">.</span>query_plan<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">cp<span style="color: grey;">.</span>usecounts<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">dm_exec_cached_plans</span> <span style="color: blue;">AS</span>
cp <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CROSS</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">APPLY</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">dm_exec_query_plan</span><span style="color: grey;">(</span>plan_handle<span style="color: grey;">)</span> <span style="color: blue;">AS</span> qp <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CROSS</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">APPLY</span> query_plan<span style="color: grey;">.</span>nodes<span style="color: grey;">(</span><span style="color: red;">'/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span> batch<span style="color: grey;">(</span>stmt<span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CROSS</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">APPLY</span> stmt<span style="color: grey;">.</span>nodes<span style="color: grey;">(</span><span style="color: red;">'.//IndexScan/Object[@Table=sql:variable("@TableName")]'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span> TableName<span style="color: grey;">(</span>obj<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">OPTION</span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">MAXDOP</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> 1<span style="color: grey;">,</span> <span style="color: blue;">RECOMPILE</span><span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Return plan
information<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">'Plan Cache Indexes'</span>
<span style="color: blue;">AS</span> ResultType<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">REPLACE</span><span style="color: grey;">(</span><span style="color: magenta;">REPLACE</span><span style="color: grey;">(</span>IndexName<span style="color: grey;">,</span> <span style="color: red;">'['</span><span style="color: grey;">,</span> <span style="color: red;">''</span><span style="color: grey;">),</span> <span style="color: red;">']'</span><span style="color: grey;">,</span> <span style="color: red;">''</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span> IndexName <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IndexType <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">COUNT</span><span style="color: grey;">(</span>IndexName<span style="color: grey;">)</span> <span style="color: blue;">AS</span> IndexUsageInstances <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">SUM</span><span style="color: grey;">(</span>UseCounts<span style="color: grey;">)</span> <span style="color: blue;">AS</span> TimesIndexUsed<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>PlanCacheIndexes<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GROUP</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BY</span> IndexName <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IndexType<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">ORDER</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BY</span> <span style="color: magenta;">SUM</span><span style="color: grey;">(</span>UseCounts<span style="color: grey;">)</span> <span style="color: blue;">DESC</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">NOTE – As Jonathan states in his post the <span style="color: blue; font-size: 10pt;">OPTION</span><span style="color: grey; font-size: 10pt;">(</span><span style="color: blue; font-size: 10pt;">MAXDOP</span><span style="font-size: 10pt;"> 1<span style="color: grey;">,</span> <span style="color: blue;">RECOMPILE</span><span style="color: grey;">) </span></span></span><span style="font-family: Arial, Helvetica, sans-serif;">is</span><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: 10pt;"><span style="color: grey;"> </span></span>advisable as this query can be
particularly intensive.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">This showed me that in the plan cache there are 18
indexes that have been used to satisfy a query against the table so that gives
us another 3 indexes we can potentially get rid of. I ran the below query to show me the index
usage stats for the indexes that are not in the plan cache.</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set Database
Context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Return Index
usage stats for indexes that are not used in the plan cache<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">'Index Usage Not In
Plan Cache'</span> <span style="color: blue;">AS</span> ResultType<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IUS<span style="color: grey;">.</span>IndexName<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IUS<span style="color: grey;">.</span>UserReads<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IUS<span style="color: grey;">.</span>UserWrites<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>IndexUsageStats
<span style="color: blue;">AS</span> IUS<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">WHERE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IUS<span style="color: grey;">.</span>IndexName
<span style="color: grey;">NOT</span> <span style="color: grey;">IN</span><span style="color: blue;"> </span><span style="color: grey;">(<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SELECT</span> <span style="color: magenta;">REPLACE</span><span style="color: grey;">(</span><span style="color: magenta;">REPLACE</span><span style="color: grey;">(</span>IndexName<span style="color: grey;">,</span> <span style="color: red;">'['</span><span style="color: grey;">,</span> <span style="color: red;">''</span><span style="color: grey;">),</span> <span style="color: red;">']'</span><span style="color: grey;">,</span> <span style="color: red;">''</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>PlanCacheIndexes <span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNoSpacing">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">I script the drop and create of these 3 indexes again
saving the script file. What is important
to point out here is that all three of these indexes have still been used to satisfy
a query since the index usage stats where last reset. You can use the below query to find out that
last time the index stats where reset;</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set Database
Context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- How old are
the index usage stats?<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">'Index Stats Age'</span>
<span style="color: blue;">AS</span> ResultType<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">DATEDIFF</span><span style="color: grey;">(</span><span style="color: magenta;">DAY</span><span style="color: grey;">,</span> sd<span style="color: grey;">.</span>crdate<span style="color: grey;">,</span> <span style="color: magenta;">GETDATE</span><span style="color: grey;">())</span> <span style="color: blue;">AS</span> days_history<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">sysdatabases</span> sd<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">WHERE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> sd<span style="color: grey;">.</span>[name] <span style="color: grey;">=</span> <span style="color: red;">'tempdb'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNoSpacing">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Take a note of the percentage of reads to writes, if this
is low, which I expect it will be (in my case less than 0.02%) then chances are
there was a one off query maybe for a report or extract.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">So with this approach I identified 6 indexes, 3 that
haven’t been used and 3 that have been used but do not have a query in the plan
cache. What you do next will depend on
your environment, for me it meant running the drop index statements in a test
environment and running a workload to prove that dropping the indexes improves
the procedure and does not cause any unexpected performance issues. Then I had to raise a change request to
schedule in remove the indexes from production which I am pleased to say was
approved and will be being run tonight outside of core business hours.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">I am still not comfortable that the remaining 18 indexes
are the best fit for our workload so have created a task for myself to review
the indexes in place on this table and make improvements where possible. I will post my results in a future post.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"><o:p></o:p></span></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com5tag:blogger.com,1999:blog-6664701585971860985.post-33060177330332446742013-02-26T12:18:00.000+00:002013-05-15T19:31:09.476+01:00Cost Threshold for Parallelism<br>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Parallelism, where to start? Well let’s start right at the beginning shall
we with the question, what is parallelism?
Simply put it is a feature of SQL Server which allows queries to utilize
more threads in order to complete quicker.
There are several ways to influence SQL Servers decision whether to use
parallelism or not and if so how “much” which is referred to as the degree of
parallelism.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br></div>
<div class="MsoNoSpacing">
<b><span style="font-family: Arial, Helvetica, sans-serif;">Cost Threshold For
Parallelism<o:p></o:p></span></b></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">This is a server wide setting which indicates what the
minimum query cost has to be before Parallelism is considered by the optimizer
(yes UK readers I spelt optimizer with a Z not an S).<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br></div>
<div class="MsoNoSpacing">
<b><span style="font-family: Arial, Helvetica, sans-serif;">Maximum Degree Of
Parallelism<o:p></o:p></span></b></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">This is a server wide setting which indicates the maximum
number of processors a query run in parallel can use.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br></div>
<div class="MsoNoSpacing">
<b><span style="font-family: Arial, Helvetica, sans-serif;">OPTION (MAXDOP X)<o:p></o:p></span></b></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">This is a query hint which contrary to some beliefs will override the above two settings by reducing the degree of parallelism for queries greater than the cost threshold, but will not make a too small query run in parallel (Thanks to <a href="http://www.brentozar.com/" target="_blank">Brent Ozar</a> for pointing this out).<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">So what settings should you be using, well as always “it
depends”, sorry but this really isn’t a one size fits all solution. Servers will have different workloads, number
of cores, some will have hard NUMA some will have Soft NUMA some older servers
won’t have NUMA at all. What you really
need to do is understand the impact parallelism has on your environment, today
I will look specifically at the sp_configure option ‘cost threshold for parallelism‘.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">SQL Server exposes an increasing wealth of information
via DMV’s that allow us to make more informed decisions; one idea that I loved
was using these DMV’s specifically sys.dm_exec_cached_plans and
sys.dm_exec_query_plan to return information from the Plan Cache for queries
run in parallel. This idea I took from <a href="http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/01/19/tuning-cost-threshold-of-parallelism-from-the-plan-cache.aspx">Jonathan
Kehayias</a> and adapted to group the exposed information by StatementSubTreeCost. This will give you the spread of query costs
which you can use to make an educated decision as to if the default cost
threshold for parallelism value of 5 is in fact the best for your environment.</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">/*</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">
-----------------------------------------------------------------</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">
Cost Threshold For Parallelism</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">
-----------------------------------------------------------------</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;"> </span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">
For more SQL resources, check out SQLServer365.blogspot.com</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<br></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">
-----------------------------------------------------------------</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<br></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">
You may alter this code for your own purposes.</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">
You may republish altered code as long as you give due credit.</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">
You must obtain prior permission before blogging this code.</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<br></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">
THIS CODE AND INFORMATION ARE PROVIDED "AS IS"</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;"> </span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">
-----------------------------------------------------------------</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0cm;">
<span style="color: green; font-family: ""Courier New"","serif"; font-size: 10.0pt;">*/</span><span style="font-size: 13.5pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set Database
Context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create table<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'dbo.PlanCacheForMaxDop'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span> [type] <span style="color: grey;">=</span> <span style="color: red;">'U'</span> <span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">CREATE</span> <span style="color: blue;">TABLE</span> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>PlanCacheForMaxDop<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CompleteQueryPlan <span style="color: blue;">XML</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> StatementText <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>4000<span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> StatementOptimizationLevel <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>25<span style="color: grey;">)</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> StatementSubTreeCost <span style="color: blue;">FLOAT</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ParallelSubTreeXML <span style="color: blue;">XML</span> <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> UseCounts <span style="color: blue;">INT</span>
<span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> PlanSizeInBytes <span style="color: blue;">INT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">ELSE<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- If table exists truncate it before
population <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRUNCATE</span> <span style="color: blue;">TABLE</span> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>PlanCacheForMaxDop<span style="color: grey;">;</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Collect
parallel plan information<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRANSACTION</span> <span style="color: blue;">ISOLATION</span>
<span style="color: blue;">LEVEL</span> <span style="color: blue;">READ</span> <span style="color: blue;">UNCOMMITTED</span><span style="color: grey;">;</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">WITH</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
XMLNAMESPACES <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DEFAULT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">'http://schemas.microsoft.com/sqlserver/2004/07/showplan'</span><span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INSERT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">INTO</span> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>PlanCacheForMaxDop
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> query_plan <span style="color: blue;">AS</span>
CompleteQueryPlan<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> n<span style="color: grey;">.</span>value<span style="color: grey;">(</span><span style="color: red;">'(@StatementText)[1]'</span><span style="color: grey;">,</span> <span style="color: red;">'VARCHAR(4000)'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span> StatementText<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> n<span style="color: grey;">.</span>value<span style="color: grey;">(</span><span style="color: red;">'(@StatementOptmLevel)[1]'</span><span style="color: grey;">,</span> <span style="color: red;">'VARCHAR(25)'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span>
StatementOptimizationLevel<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> n<span style="color: grey;">.</span>value<span style="color: grey;">(</span><span style="color: red;">'(@StatementSubTreeCost)[1]'</span><span style="color: grey;">,</span> <span style="color: red;">'VARCHAR(128)'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span>
StatementSubTreeCost<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> n<span style="color: grey;">.</span>query<span style="color: grey;">(</span><span style="color: red;">'.'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span>
ParallelSubTreeXML<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ecp<span style="color: grey;">.</span>usecounts<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ecp<span style="color: grey;">.</span>size_in_bytes <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">dm_exec_cached_plans</span> <span style="color: blue;">AS</span>
ecp <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CROSS</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">APPLY</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">dm_exec_query_plan</span><span style="color: grey;">(</span>plan_handle<span style="color: grey;">)</span> <span style="color: blue;">AS</span> eqp <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CROSS</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">APPLY</span> query_plan<span style="color: grey;">.</span>nodes<span style="color: grey;">(</span><span style="color: red;">'/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple'</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span> qn<span style="color: grey;">(</span>n<span style="color: grey;">)</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">WHERE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> n<span style="color: grey;">.</span>query<span style="color: grey;">(</span><span style="color: red;">'.'</span><span style="color: grey;">).</span>exist<span style="color: grey;">(</span><span style="color: red;">'//RelOp[@PhysicalOp="Parallelism"]'</span><span style="color: grey;">)</span> <span style="color: grey;">=</span> 1<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Return
parallel plan information<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> CompleteQueryPlan <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> StatementText <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> StatementOptimizationLevel <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> StatementSubTreeCost <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ParallelSubTreeXML <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> UseCounts <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> PlanSizeInBytes<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>PlanCacheForMaxDop<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Return
grouped parallel plan information<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">MAX</span><span style="color: grey;">(</span><span style="color: blue;">CASE</span> <span style="color: blue;">WHEN</span> StatementSubTreeCost <span style="color: grey;">BETWEEN</span>
1 <span style="color: grey;">AND</span> 5 <span style="color: blue;">THEN</span> <span style="color: red;">'1-5'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 5 <span style="color: grey;">AND</span> 6 <span style="color: blue;">THEN</span> <span style="color: red;">'5-6'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 6 <span style="color: grey;">AND</span> 7 <span style="color: blue;">THEN</span> <span style="color: red;">'6-7'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 7 <span style="color: grey;">AND</span> 8 <span style="color: blue;">THEN</span> <span style="color: red;">'7-8'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 8 <span style="color: grey;">AND</span> 9 <span style="color: blue;">THEN</span> <span style="color: red;">'8-9'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 9 <span style="color: grey;">AND</span> 10 <span style="color: blue;">THEN</span> <span style="color: red;">'9-10'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 10 <span style="color: grey;">AND</span> 11 <span style="color: blue;">THEN</span> <span style="color: red;">'10-11'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 11 <span style="color: grey;">AND</span> 12 <span style="color: blue;">THEN</span> <span style="color: red;">'11-12'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 12 <span style="color: grey;">AND</span> 13 <span style="color: blue;">THEN</span> <span style="color: red;">'12-13'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 13 <span style="color: grey;">AND</span> 14 <span style="color: blue;">THEN</span> <span style="color: red;">'13-14'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 14 <span style="color: grey;">AND</span> 15 <span style="color: blue;">THEN</span> <span style="color: red;">'14-15'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 15 <span style="color: grey;">AND</span> 16 <span style="color: blue;">THEN</span> <span style="color: red;">'15-16'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 16 <span style="color: grey;">AND</span> 17 <span style="color: blue;">THEN</span> <span style="color: red;">'16-17'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 17 <span style="color: grey;">AND</span> 18 <span style="color: blue;">THEN</span> <span style="color: red;">'17-18'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 18 <span style="color: grey;">AND</span> 19 <span style="color: blue;">THEN</span> <span style="color: red;">'18-19'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 19 <span style="color: grey;">AND</span> 20 <span style="color: blue;">THEN</span> <span style="color: red;">'19-20'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 20 <span style="color: grey;">AND</span> 25 <span style="color: blue;">THEN</span> <span style="color: red;">'20-25'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 25 <span style="color: grey;">AND</span> 30 <span style="color: blue;">THEN</span> <span style="color: red;">'25-30'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 30 <span style="color: grey;">AND</span> 35 <span style="color: blue;">THEN</span> <span style="color: red;">'30-35'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 35 <span style="color: grey;">AND</span> 40 <span style="color: blue;">THEN</span> <span style="color: red;">'35-40'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 40 <span style="color: grey;">AND</span> 45 <span style="color: blue;">THEN</span> <span style="color: red;">'40-45'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 45 <span style="color: grey;">AND</span> 50 <span style="color: blue;">THEN</span> <span style="color: red;">'45-50'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">></span> 50 <span style="color: blue;">THEN</span> <span style="color: red;">'>50'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">ELSE</span>
<span style="color: magenta;">CAST</span><span style="color: grey;">(</span>StatementSubTreeCost
<span style="color: blue;">AS</span> <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>100<span style="color: grey;">))<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END</span><span style="color: grey;">)</span> <span style="color: blue;">AS</span>
StatementSubTreeCost <span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">COUNT</span><span style="color: grey;">(*)</span> <span style="color: blue;">AS</span> countInstance<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>PlanCacheForMaxDop<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GROUP</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">BY</span> <span style="color: blue;">CASE</span> <span style="color: blue;">WHEN</span> StatementSubTreeCost <span style="color: grey;">BETWEEN</span>
1 <span style="color: grey;">AND</span> 5 <span style="color: blue;">THEN</span>
2.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 5 <span style="color: grey;">AND</span> 6 <span style="color: blue;">THEN</span> 5.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 6 <span style="color: grey;">AND</span> 7 <span style="color: blue;">THEN</span> 6.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 7 <span style="color: grey;">AND</span> 8 <span style="color: blue;">THEN</span> 7.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 8 <span style="color: grey;">AND</span> 9 <span style="color: blue;">THEN</span> 8.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 9 <span style="color: grey;">AND</span> 10 <span style="color: blue;">THEN</span> 9.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 10 <span style="color: grey;">AND</span> 11 <span style="color: blue;">THEN</span> 10.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 11 <span style="color: grey;">AND</span> 12 <span style="color: blue;">THEN</span> 11.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 12 <span style="color: grey;">AND</span> 13 <span style="color: blue;">THEN</span> 12.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 13 <span style="color: grey;">AND</span> 14 <span style="color: blue;">THEN</span> 13.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 14 <span style="color: grey;">AND</span> 15 <span style="color: blue;">THEN</span> 14.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 15 <span style="color: grey;">AND</span> 16 <span style="color: blue;">THEN</span> 15.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 16 <span style="color: grey;">AND</span> 17 <span style="color: blue;">THEN</span> 16.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 17 <span style="color: grey;">AND</span> 18 <span style="color: blue;">THEN</span> 17.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 18 <span style="color: grey;">AND</span> 19 <span style="color: blue;">THEN</span> 18.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 19 <span style="color: grey;">AND</span> 20 <span style="color: blue;">THEN</span> 19.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 10 <span style="color: grey;">AND</span> 15 <span style="color: blue;">THEN</span> 12.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 15 <span style="color: grey;">AND</span> 20 <span style="color: blue;">THEN</span> 17.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 20 <span style="color: grey;">AND</span> 25 <span style="color: blue;">THEN</span> 22.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 25 <span style="color: grey;">AND</span> 30 <span style="color: blue;">THEN</span> 27.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 30 <span style="color: grey;">AND</span> 35 <span style="color: blue;">THEN</span> 32.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 35 <span style="color: grey;">AND</span> 40 <span style="color: blue;">THEN</span> 37.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 40 <span style="color: grey;">AND</span> 45 <span style="color: blue;">THEN</span> 42.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">BETWEEN</span> 45 <span style="color: grey;">AND</span> 50 <span style="color: blue;">THEN</span> 47.5<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHEN</span>
StatementSubTreeCost <span style="color: grey;">></span> 50 <span style="color: blue;">THEN</span> 100<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">ELSE</span>
StatementSubTreeCost<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">END</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; line-height: 115%; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; line-height: 115%; mso-no-proof: yes;"><br></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris<span style="font-size: 10pt;"> </span></span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><o:p></o:p></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com1tag:blogger.com,1999:blog-6664701585971860985.post-1602060103188590662013-02-17T09:58:00.003+00:002013-08-27T17:06:08.633+01:00Fun with dates<span style="font-family: Arial, Helvetica, sans-serif;">Every year me and a group of friends attend the </span><a href="http://www.airtattoo.com/airshow" style="font-family: Arial, Helvetica, sans-serif;">Royal International Air Tattoo</a><span style="font-family: Arial, Helvetica, sans-serif;"> (RIAT)
at RAF Fairford, for us it is a long weekend where we camp close to the
airfield and get to take in three full days (if you include Friday practice of
utterly breath-taking aerobatic displays from some of the greatest military
aircraft in the world.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">We have a running
joke during the year long wait between events that once we get Christmas out of
the way RIAT will be here before we know it.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><br />
<br />
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">We all use dates as DBA’s in fact we use them all the
time, every single day even without realising it. I often use T-SQL to show me the difference
between dates, but this particular script I like because it gives me a
countdown to RIAT, so on a bad day or even on a good day for that matter I can
see just how long, or little time is left until we set off once again J<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Here is a script I use for fun;<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Fun with dates<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> For more SQL resources, check out
SQLServer365.blogspot.com<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may alter this code for your own
purposes.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may republish altered code as long as
you give due credit.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You must obtain prior permission before
blogging this code.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> THIS CODE AND INFORMATION ARE PROVIDED
"AS IS"<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Declare
variables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @startTime
<span style="color: blue;">DATETIME<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @endTime <span style="color: blue;">DATETIME<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @Seconds <span style="color: blue;">INT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set date
range<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @startTime
<span style="color: grey;">=</span> <span style="color: magenta;">GETDATE</span><span style="color: grey;">()<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @endTime <span style="color: grey;">=</span> <span style="color: red;">'20130719 04:30'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Get the
difference in seconds<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @Seconds <span style="color: grey;">=</span> <span style="color: magenta;">DATEDIFF</span><span style="color: grey;">(</span>ss<span style="color: grey;">,</span> @startTime<span style="color: grey;">,</span>
@endTime<span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Return how
long left
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: red;">'T Minus '</span> <span style="color: grey;">+</span> <span style="color: magenta;">CONVERT</span><span style="color: grey;">(</span><span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>10<span style="color: grey;">),</span><span style="color: blue;"> </span><span style="color: grey;">(</span> @Seconds <span style="color: grey;">/</span> 86400 <span style="color: grey;">))</span> <span style="color: grey;">+</span> <span style="color: red;">' Days '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: magenta;">CONVERT</span><span style="color: grey;">(</span><span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>10<span style="color: grey;">),</span><span style="color: blue;"> </span><span style="color: grey;">(</span><span style="color: blue;"> </span><span style="color: grey;">(</span> @Seconds <span style="color: grey;">%</span> 86400 <span style="color: grey;">)</span> <span style="color: grey;">/</span> 3600 <span style="color: grey;">))</span> <span style="color: grey;">+</span> <span style="color: red;">' Hours '<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: magenta;">CONVERT</span><span style="color: grey;">(</span><span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>10<span style="color: grey;">),</span><span style="color: blue;"> </span><span style="color: grey;">(</span><span style="color: blue;"> </span><span style="color: grey;">(</span><span style="color: blue;"> </span><span style="color: grey;">(</span> @Seconds <span style="color: grey;">%</span> 86400 <span style="color: grey;">)</span> <span style="color: grey;">%</span> 3600 <span style="color: grey;">)</span> <span style="color: grey;">/</span> 60 <span style="color: grey;">))<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: red;">' Minutes '</span> <span style="color: grey;">+</span> <span style="color: magenta;">CONVERT</span><span style="color: grey;">(</span><span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>10<span style="color: grey;">),</span><span style="color: blue;"> </span><span style="color: grey;">(</span><span style="color: blue;"> </span><span style="color: grey;">(</span><span style="color: blue;"> </span><span style="color: grey;">(</span> @Seconds <span style="color: grey;">%</span> 86400 <span style="color: grey;">)</span> <span style="color: grey;">%</span> 3600 <span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">%</span> 60 <span style="color: grey;">))</span> <span style="color: grey;">+</span> <span style="color: red;">' Seconds and counting!'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNoSpacing">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><o:p></o:p></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-190865412692348572013-02-15T10:41:00.002+00:002013-08-27T17:07:47.159+01:00T-SQL Gotcha<span style="font-family: Arial, Helvetica, sans-serif;">I came across an interesting issue a few days ago that I
thought I would blog about. The issue is
replacing NUL characters from values in SQL Server, more specifically using</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="color: magenta; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; line-height: 115%;">REPLACE</span><span style="color: grey; font-family: 'Courier New'; font-size: 10pt; line-height: 115%;">()</span><span style="font-family: Arial, Helvetica, sans-serif;">. </span><span style="font-family: Arial, Helvetica, sans-serif;">Take the below TSQL which runs but will never complete;</span><br />
<div class="MsoNoSpacing">
<o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @var <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span><span style="color: magenta;">MAX</span><span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @var <span style="color: grey;">=</span> <span style="color: red;">'SQL Server 365'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">REPLACE</span><span style="color: grey;">(</span>@var<span style="color: grey;">,</span> <span style="color: blue;">CHAR</span><span style="color: grey;">(</span>0<span style="color: grey;">),</span> <span style="color: red;">''</span><span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNoSpacing">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">NOTE – Do not run this on production it will never
complete and will ramp up CPU!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Why? Well, this is
due to the fact that <span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CHAR</span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">0<span style="color: grey;">)</span></span> (or 0x0000 in ASCII) is an undefined character
in Windows collations and all undefined characters are ignored during
comparison, sort, and pattern matching so the query effectively gets stuck in
an infinite loop!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">If we <span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">COLLATE </span>the string to a SQL Collation where
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CHAR</span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">0<span style="color: grey;">)</span></span> is a
defined character the query returns as expected, <o:p></o:p>as below;</span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @var <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span><span style="color: magenta;">MAX</span><span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @var <span style="color: grey;">=</span> <span style="color: red;">'SQL Server 365'</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">REPLACE</span><span style="color: grey;">(</span>@var <span style="color: blue;">COLLATE</span>
SQL_Latin1_General_CP1_CI_AS<span style="color: grey;">,</span> <span style="color: blue;">CHAR</span><span style="color: grey;">(</span>0<span style="color: grey;">),</span> <span style="color: red;">''</span><span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNoSpacing">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!</span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><o:p></o:p></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-30179510988897805082013-02-14T14:00:00.004+00:002013-08-27T16:59:34.653+01:00Script Replication with PowerShell<span style="font-family: Arial, Helvetica, sans-serif;">I promised you some PowerShell scripts this year and this
post is the first one. I can see the
value PowerShell can bring, but find it equally frustrating. I don’t know the syntax very well or all the
command lets and personally for 99.9% of my daily tasks I can achieve the
desired results in T-SQL. I would say
that PowerShell has much more of an appeal to Domain Administrators,
specifically those who manage large domains with tens or hundreds of thousands
of objects. Having said that, I have
stuck with PowerShell and do try to have a dabble when the opportunity arises.</span><br />
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;"><o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">The script in this post will script your replication
topology to a file for use in the event of DR.
Why? Well, having a solid DR plan is by no means an easy task, and
without testing your DR plan I can say with some certainty that there will be
something you have missed, whether it is a login, firewall port or out of date
replication topology, that is where this post comes in. I am a massive fan of replication, having
used it in every single one of my DBA positions to achieve a multitude of
requirements but that is not to say it hasn’t caused me any problems, I have spent
many a late night reinitialising subscriptions and troubleshooting seemingly
unknown problems.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Replication is one area that is often overlooked in a DR
scenario, do you have up to date scripts to recreate your replication
topology? No? You’re not telling me that you are going to
recreate all those publications using the GUI during DR are you? All those filtered articles, all those keep
existing object unchanged settings and not to forget the articles with do not
replicate delete statements set.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">The PowerShell script is below, simply save it to a file
called ScriptReplication.ps1;</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt;">#Load command-line parameters -
if they exist<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">param</span><span style="font-family: 'Courier New'; font-size: 10pt;"> ([</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">]</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$sqlserver</span><span style="font-family: 'Courier New'; font-size: 10pt;">, [</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">]</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt;">#Reference RMO Assembly<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">[</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">reflection.assembly</span><span style="font-family: 'Courier New'; font-size: 10pt;">]::</span><span style="color: saddlebrown; font-family: "Courier New"; font-size: 10.0pt;">LoadWithPartialName</span><span style="font-family: 'Courier New'; font-size: 10pt;">(</span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"Microsoft.SqlServer.Replication"</span><span style="font-family: 'Courier New'; font-size: 10pt;">) | </span><b><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">out-null</span></b><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">[</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">reflection.assembly</span><span style="font-family: 'Courier New'; font-size: 10pt;">]::</span><span style="color: saddlebrown; font-family: "Courier New"; font-size: 10.0pt;">LoadWithPartialName</span><span style="font-family: 'Courier New'; font-size: 10pt;">(</span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"Microsoft.SqlServer.Rmo"</span><span style="font-family: 'Courier New'; font-size: 10pt;">) | </span><b><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">out-null</span></b><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">function</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">errorhandler</span><span style="font-family: 'Courier New'; font-size: 10pt;">([</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">]</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$errormsg</span><span style="font-family: 'Courier New'; font-size: 10pt;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> writetofile (</span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"-- Replication Script
Generator run at: "</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">+</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (date)) </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> writetofile (</span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"-- [Replication Script
ERROR] "</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">+</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$errormsg</span><span style="font-family: 'Courier New'; font-size: 10pt;">) </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">function</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;">([</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">]</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$text</span><span style="font-family: 'Courier New'; font-size: 10pt;">, [</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">]</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$myfilename</span><span style="font-family: 'Courier New'; font-size: 10pt;">, [</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">int</span><span style="font-family: 'Courier New'; font-size: 10pt;">]</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$cr_prefix</span><span style="font-family: 'Courier New'; font-size: 10pt;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$cr_prefix</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-eq</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 1) { </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">""</span><span style="font-family: 'Courier New'; font-size: 10pt;"> >> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$myfilename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$text</span><span style="font-family: 'Courier New'; font-size: 10pt;"> >> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$myfilename</span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">function</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">initializefile</span><span style="font-family: 'Courier New'; font-size: 10pt;">([</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">]</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$myfilename</span><span style="font-family: 'Courier New'; font-size: 10pt;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">""</span><span style="font-family: 'Courier New'; font-size: 10pt;"> > </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$myfilename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">trap</span><span style="font-family: 'Courier New'; font-size: 10pt;"> {errorhandler(</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$_</span><span style="font-family: 'Courier New'; font-size: 10pt;">); </span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">Break</span><span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt;">#Deal with absent parameters<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">[</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">] </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$hostname</span><span style="font-family: 'Courier New'; font-size: 10pt;">=hostname<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$sqlserver</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-eq</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">""</span><span style="font-family: 'Courier New'; font-size: 10pt;">) {</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$sqlserver</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">=</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><b><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">read-host</span></b><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><i><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">-prompt</span></i><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"Please
enter the server name or leave blank for Hostname"</span><span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-eq</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">""</span><span style="font-family: 'Courier New'; font-size: 10pt;">) {</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">=</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><b><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">read-host</span></b><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><i><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">-prompt</span></i><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"Please
enter the file name (eg 'c:\ReplicationBackupScript.sql')..."</span><span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$sqlserver</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-eq</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">""</span><span style="font-family: 'Courier New'; font-size: 10pt;">) {</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$sqlserver</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">=</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$hostname</span><span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-eq</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">""</span><span style="font-family: 'Courier New'; font-size: 10pt;">) {</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">=</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"c:\ReplicationBackupScript.sql"</span><span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt;"># Clear file contents<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><b><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">Test-Path</span></b><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;">)) {</span><b><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">Clear-Content</span></b><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$repsvr</span><span style="font-family: 'Courier New'; font-size: 10pt;">=</span><b><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">New-Object</span></b><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"Microsoft.SqlServer.Replication.ReplicationServer"</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$sqlserver</span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">initializefile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt;"># if we don't have any replicated
databases then there's no point in carrying on<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$repsvr</span><span style="font-family: 'Courier New'; font-size: 10pt;">.ReplicationDatabases.Count
</span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-eq</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"--
Replication Script Generator run at: "</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">+</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (date)) </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"-- ZERO
replicated databases on $sqlserver!!!"</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> EXIT<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt;"># similarly, if we don't have any
publications then there's no point in carrying on<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">[</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">int</span><span style="font-family: 'Courier New'; font-size: 10pt;">] </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$Count_Tran_Pub</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">=</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">[</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">int</span><span style="font-family: 'Courier New'; font-size: 10pt;">] </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$Count_Merge_Pub</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">=</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">foreach</span><span style="font-family: 'Courier New'; font-size: 10pt;">(</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$replicateddatabase</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">in</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$repsvr</span><span style="font-family: 'Courier New'; font-size: 10pt;">.ReplicationDatabases)
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$Count_Tran_Pub</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">=</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$Count_Tran_Pub</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">+</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$replicateddatabase</span><span style="font-family: 'Courier New'; font-size: 10pt;">.TransPublications.Count<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$Count_Merge_Pub</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">=</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$Count_Merge_Pub</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">+</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$replicateddatabase</span><span style="font-family: 'Courier New'; font-size: 10pt;">.MergePublications.Count<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> ((</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$Count_Tran_Pub</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">+</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$Count_Merge_Pub</span><span style="font-family: 'Courier New'; font-size: 10pt;">) </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-eq</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"--
Replication Script Generator run at: "</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">+</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (date)) </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"-- ZERO
Publications on $sqlserver!!!"</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> EXIT<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt;"># if we got this far we know that
there are some publications so we'll script them out<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt;"># the $scriptargs controls
exactly what the script contains<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt;"># for a full list of the
$scriptargs see the end of this script<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$scriptargs</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">=</span><span style="font-family: 'Courier New'; font-size: 10pt;">
[Microsoft.SqlServer.Replication.scriptoptions]::Creation </span><b><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">`</span></b><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-bor</span><span style="font-family: 'Courier New'; font-size: 10pt;">
[Microsoft.SqlServer.Replication.scriptoptions]::IncludeArticles </span><b><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">`</span></b><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-bor</span><span style="font-family: 'Courier New'; font-size: 10pt;">
[Microsoft.SqlServer.Replication.scriptoptions]::IncludePublisherSideSubscriptions
</span><b><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">`</span></b><span style="font-family: 'Courier New'; font-size: 10pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-bor</span><span style="font-family: 'Courier New'; font-size: 10pt;">
[Microsoft.SqlServer.Replication.scriptoptions]::IncludeSubscriberSideSubscriptions<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"--
Replication Script Generator run at: "</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">+</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (date)) </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"--
PUBLICATIONS ON $sqlserver"</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"--
TRANSACTIONAL PUBLICATIONS ($Count_Tran_Pub)"</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">foreach</span><span style="font-family: 'Courier New'; font-size: 10pt;">(</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$replicateddatabase</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">in</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$repsvr</span><span style="font-family: 'Courier New'; font-size: 10pt;">.ReplicationDatabases)
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$replicateddatabase</span><span style="font-family: 'Courier New'; font-size: 10pt;">.TransPublications.Count
</span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-gt</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">foreach</span><span style="font-family: 'Courier New'; font-size: 10pt;">(</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$tranpub</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">in</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$replicateddatabase</span><span style="font-family: 'Courier New'; font-size: 10pt;">.TransPublications)
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"/********************************************************************************"</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"*****
Writing to file script for publication: "</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">+</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$tranpub</span><span style="font-family: 'Courier New'; font-size: 10pt;">.Name) </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"********************************************************************************/"</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0 <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> [</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">] </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$myscript</span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">=</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$tranpub</span><span style="font-family: 'Courier New'; font-size: 10pt;">.script(</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$scriptargs</span><span style="font-family: 'Courier New'; font-size: 10pt;">) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$myscript</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"-- MERGE
PUBLICATIONS ($Count_Merge_Pub)"</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">foreach</span><span style="font-family: 'Courier New'; font-size: 10pt;">(</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$replicateddatabase</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">in</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$repsvr</span><span style="font-family: 'Courier New'; font-size: 10pt;">.ReplicationDatabases)
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$replicateddatabase</span><span style="font-family: 'Courier New'; font-size: 10pt;">.MergePublications.Count
</span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">-gt</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">foreach</span><span style="font-family: 'Courier New'; font-size: 10pt;">(</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$mergepub</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt;">in</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$replicateddatabase</span><span style="font-family: 'Courier New'; font-size: 10pt;">.MergePublications)
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;">
{<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"/********************************************************************************"</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"*****
Writing to file script for publication: "</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">+</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$mergepub</span><span style="font-family: 'Courier New'; font-size: 10pt;">.Name) </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: maroon; font-family: "Courier New"; font-size: 10.0pt;">"********************************************************************************/"</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> [</span><span style="color: teal; font-family: "Courier New"; font-size: 10.0pt;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">] </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$myscript</span><span style="color: red; font-family: "Courier New"; font-size: 10.0pt;">=</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$mergepub</span><span style="font-family: 'Courier New'; font-size: 10pt;">.script(</span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$scriptargs</span><span style="font-family: 'Courier New'; font-size: 10pt;">) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: cadetblue; font-family: "Courier New"; font-size: 10.0pt;">writetofile</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$myscript</span><span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: purple; font-family: "Courier New"; font-size: 10.0pt;">$filename</span><span style="font-family: 'Courier New'; font-size: 10pt;"> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Courier New'; font-size: 10pt;"> }<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="font-family: 'Courier New'; font-size: 10pt;">}</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">You can then copy this to a Server you want to script
your replication topology from and create a SQL Agent job to execute the
script. I have just the script below, It
will execute the PowerShell script and email an operator called DBA in the
event of a failure. You will need to;<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Arial, Helvetica, sans-serif;">·<span style="font-size: 7pt;">
</span><!--[endif]-->Update the operator<o:p></o:p></span></div>
<div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Arial, Helvetica, sans-serif;">·<span style="font-size: 7pt;">
</span><!--[endif]-->Update ServerNameHere with the name of the
server you are scripting replication from<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">NOTE - If this is a named instance then this is simply in
the form of ServerName\InstanceName<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l1 level1 lfo2; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Arial, Helvetica, sans-serif;">·<span style="font-size: 7pt;">
</span><!--[endif]-->Update the schedule accordingly<o:p></o:p></span></div>
<div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l1 level1 lfo2; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Arial, Helvetica, sans-serif;">·<span style="font-size: 7pt;">
</span><!--[endif]-->Update the path to the PowerShell script
accordingly<o:p></o:p></span></div>
<div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l1 level1 lfo2; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Arial, Helvetica, sans-serif;">·<span style="font-size: 7pt;">
</span><!--[endif]-->Update the path to the CreateReplication.sql
file accordingly<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Note - I run this at 06:00 every Monday Wednesday and
Friday, I also run this manually if a change to any of the publications has
changed. I also have a synchronisation process which copies this over to the DR Server.</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> [msdb]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/******
Object: Job [Maintenance -
ScriptReplication] Script Date:
02/14/2013 13:39:27 ******/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRANSACTION<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: blue;">INT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/******
Object: JobCategory [[Uncategorized
(Local)]]] Script Date: 02/14/2013
13:39:27 ******/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span><span style="color: blue;">SELECT</span> name <span style="color: blue;">FROM</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>syscategories <span style="color: blue;">WHERE</span> name<span style="color: grey;">=</span><span style="color: red;">N'[Uncategorized (Local)]'</span> <span style="color: grey;">AND</span>
category_class<span style="color: grey;">=</span>1<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_category</span><span style="color: blue;"> </span>@class<span style="color: grey;">=</span><span style="color: red;">N'JOB'</span><span style="color: grey;">,</span> @type<span style="color: grey;">=</span><span style="color: red;">N'LOCAL'</span><span style="color: grey;">,</span> @name<span style="color: grey;">=</span><span style="color: red;">N'[Uncategorized (Local)]'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">END<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @jobId <span style="color: blue;">BINARY</span><span style="color: grey;">(</span>16<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span>
msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_job</span><span style="color: blue;"> </span>@job_name<span style="color: grey;">=</span><span style="color: red;">N'Maintenance -
ScriptReplication'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @enabled<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_eventlog<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_email<span style="color: grey;">=</span>2<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_netsend<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_page<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @delete_level<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @description<span style="color: grey;">=</span><span style="color: red;">N'This job will script the replication topology to
G:\Powershell\ScriptReplication\CreateReplication.sql for use in DR'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @category_name<span style="color: grey;">=</span><span style="color: red;">N'[Uncategorized (Local)]'</span><span style="color: grey;">,</span>
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @owner_login_name<span style="color: grey;">=</span><span style="color: red;">N'sa'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_email_operator_name<span style="color: grey;">=</span><span style="color: red;">N'DBA'</span><span style="color: grey;">,</span> @job_id <span style="color: grey;">=</span> @jobId <span style="color: blue;">OUTPUT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/******
Object: Step [Script Replication] Script Date: 02/14/2013 13:39:28 ******/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_jobstep</span><span style="color: blue;"> </span>@job_id<span style="color: grey;">=</span>@jobId<span style="color: grey;">,</span> @step_name<span style="color: grey;">=</span><span style="color: red;">N'Script Replication'</span><span style="color: grey;">,</span>
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @step_id<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @cmdexec_success_code<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_success_action<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_success_step_id<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_fail_action<span style="color: grey;">=</span>2<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_fail_step_id<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @retry_attempts<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @retry_interval<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @os_run_priority<span style="color: grey;">=</span>0<span style="color: grey;">,</span> @subsystem<span style="color: grey;">=</span><span style="color: red;">N'PowerShell'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @command<span style="color: grey;">=</span><span style="color: red;">N'G:\Powershell\ScriptReplication\ScriptReplication.ps1
-sqlserver ''ServerNameHere'' -FileName
''G:\Powershell\ScriptReplication\CreateReplication.sql'''</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @database_name<span style="color: grey;">=</span><span style="color: red;">N'master'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @flags<span style="color: grey;">=</span>40<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_update_job</span><span style="color: blue;"> </span>@job_id <span style="color: grey;">=</span> @jobId<span style="color: grey;">,</span> @start_step_id <span style="color: grey;">=</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_jobschedule</span><span style="color: blue;"> </span>@job_id<span style="color: grey;">=</span>@jobId<span style="color: grey;">,</span> @name<span style="color: grey;">=</span><span style="color: red;">N'MWF - 06:00'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @enabled<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_type<span style="color: grey;">=</span>8<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_interval<span style="color: grey;">=</span>42<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_subday_type<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_subday_interval<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_relative_interval<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_recurrence_factor<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_start_date<span style="color: grey;">=</span>20121024<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_end_date<span style="color: grey;">=</span>99991231<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_start_time<span style="color: grey;">=</span>60000<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_end_time<span style="color: grey;">=</span>235959<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_jobserver</span><span style="color: blue;"> </span>@job_id <span style="color: grey;">=</span> @jobId<span style="color: grey;">,</span> @server_name <span style="color: grey;">=</span> <span style="color: red;">N'(local)'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">COMMIT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRANSACTION<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GOTO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> EndSave<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">QuitWithRollback:<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">IF </span><span style="color: grey;">(</span><span style="color: magenta;">@@TRANCOUNT</span> <span style="color: grey;">></span> 0<span style="color: grey;">)</span> <span style="color: blue;">ROLLBACK</span> <span style="color: blue;">TRANSACTION<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EndSave:<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNoSpacing">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><o:p></o:p></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com1tag:blogger.com,1999:blog-6664701585971860985.post-3691194735596640002013-01-25T14:01:00.000+00:002013-01-28T09:18:27.669+00:00Replication Latency<br />
<span style="font-family: Arial, Helvetica, sans-serif;">I've</span><span style="font-family: Arial, Helvetica, sans-serif;"> used Replication a lot over the years and contrary
to the opinions of most DBA’s I know, I think it is a brilliant feature.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">Replication I feel gets a bad reputation for
causing a number of problems for DBA’s, in most cases it is something they
inherit when they change roles.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">The fact
of the matter as with anything, when implemented correctly it works fantastically
well.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">Whatever your implementation of
Replication is, be it for High Availability or Disaster Recovery one of the
biggest challenges is monitoring it.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">I've used and continue to use Replication Monitor, system tables and system
procedures in various implementations to keep an eye on a number of areas of Replication.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><br />
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">The most recent addition to my Replication monitoring
arsenal is a script I wrote using system procedures to monitor replication latency. It inserts a tracer token waits while this is
delivered then gets the latency information of said token and writes the
results to a table. This results table
can then be queried to produce reports and or alerts.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">The script for the table is below;</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Create ReplicationLatency table<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> For more SQL resources, check out
SQLServer365.blogspot.com<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may alter this code for your own
purposes.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may republish altered code as long as
you give due credit.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You must obtain prior permission before
blogging this code.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> THIS CODE AND INFORMATION ARE PROVIDED
"AS IS"<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
Context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">master</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
ReplicationLatency table<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span> <span style="color: blue;">SELECT</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">FROM</span> <span style="color: green;">sys</span><span style="color: grey;">.</span><span style="color: green;">objects<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">WHERE</span> [object_id] <span style="color: grey;">=</span>
<span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'dbo.ReplicationLatency'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">AND</span> [type] <span style="color: grey;">=</span> <span style="color: red;">'U'</span> <span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TABLE</span> dbo<span style="color: grey;">.</span>ReplicationLatency<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ReplicationLatencyID <span style="color: blue;">INT</span> <span style="color: blue;">IDENTITY</span><span style="color: grey;">(</span>1<span style="color: grey;">,</span>1<span style="color: grey;">)</span> <span style="color: blue;">CONSTRAINT</span>
[PK_ReplicationLatency:ReplicationLatencyID] <span style="color: blue;">PRIMARY</span>
<span style="color: blue;">KEY</span> <span style="color: blue;">CLUSTERED</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DistributorLatency <span style="color: blue;">INT</span> <span style="color: grey;">NULL,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SubscriberServerName <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">)</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SubscriberDatabaseName <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>255<span style="color: grey;">)NOT</span> <span style="color: grey;">NULL,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SubscriberLatency <span style="color: blue;">INT</span> <span style="color: grey;">NULL,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> OverallLatency <span style="color: blue;">INT</span>
<span style="color: grey;">NULL,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> PublicationName [varchar]<span style="color: grey;">(</span>255<span style="color: grey;">)</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL</span> <span style="color: blue;">CONSTRAINT</span> [DF_ReplicationLatency:PublicationName] <span style="color: blue;">DEFAULT </span><span style="color: grey;">(</span><span style="color: red;">'x'</span><span style="color: grey;">),<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> RunDateTime <span style="color: blue;">DATETIME</span>
<span style="color: blue;">CONSTRAINT</span> [DF_ReplicationLatency:RunDateTime] <span style="color: blue;">DEFAULT </span><span style="color: grey;">(</span><span style="color: magenta;">GETDATE</span><span style="color: grey;">()),<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> IsArchived <span style="color: blue;">BIT</span>
<span style="color: blue;">CONSTRAINT</span> [DF_ReplicationLatency:IsArchived] <span style="color: blue;">DEFAULT </span><span style="color: grey;">(</span>0<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">);<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO</span><o:p></o:p></div>
</div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">The IsArchived BIT column is used solely for an archive strategy
I have to move “old” data out of production databases on expensive fast disk
arrays to archive databases on less expensive SATA arrays. Yes I have created the table in master, it
would be a good idea to move it to another database which you see fit.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">The script below does all the work. I simply use this in a SQL Agent Job to execute
every 10 minutes to record the results.
I have tested this on SQL Server 2008 R2 only.</span><o:p></o:p></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Replication latency Monitor<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> For more SQL resources, check out
SQLServer365.blogspot.com<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may alter this code for your own
purposes.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may republish altered code as long as
you give due credit.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You must obtain prior permission before
blogging this code.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> THIS CODE AND INFORMATION ARE PROVIDED
"AS IS"<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
distribution<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Declare
variables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@publication <span style="color: blue;">AS</span> <span style="color: blue;">SYSNAME<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@publisher_db <span style="color: blue;">AS</span> <span style="color: blue;">SYSNAME<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @tokenID <span style="color: blue;">AS</span> <span style="color: blue;">INT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @MinPubID <span style="color: blue;">INT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @MaxPubID <span style="color: blue;">INT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @SQL <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>4000<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @Delay <span style="color: blue;">VARCHAR</span><span style="color: grey;">(</span>24<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Build @Delay
string. This is to give the tracer token
time to reach the subscriber and may need to be updated depending on your
environment<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @Delay <span style="color: grey;">=</span> <span style="color: red;">'WAITFOR DELAY
''00:00:05'''</span><span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Drop
temporary table if exists<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'tempDB.dbo.#Publications'</span><span style="color: grey;">)</span>
<span style="color: grey;">IS</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DROP</span> <span style="color: blue;">TABLE</span> #Publications <span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: magenta;">OBJECT_ID</span><span style="color: grey;">(</span><span style="color: red;">'tempDB.dbo.#tokens'</span><span style="color: grey;">)</span> <span style="color: grey;">IS</span> <span style="color: grey;">NOT</span> <span style="color: grey;">NULL</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">DROP</span> <span style="color: blue;">TABLE</span> #tokens <span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
temporary tables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TABLE</span> #Publications<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ID <span style="color: blue;">INT</span> <span style="color: blue;">IDENTITY</span><span style="color: grey;">(</span>1<span style="color: grey;">,</span> 1<span style="color: grey;">),<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> publisher_db <span style="color: blue;">SYSNAME</span><span style="color: grey;">,<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> publication <span style="color: blue;">SYSNAME<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TABLE</span> #tokens <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> tracer_id <span style="color: blue;">INT</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> publisher_commit <span style="color: blue;">DATETIME<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Insert
publications<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INSERT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">INTO</span> #Publications<span style="color: blue;"> </span><span style="color: grey;">(</span> publisher_db<span style="color: grey;">,</span>
publication <span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
publisher_db<span style="color: grey;">,</span> publication <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
distribution<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>MSpublications<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">WHERE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
publication_type <span style="color: grey;">=</span> 0<span style="color: grey;">;</span>
<span style="color: green;">-- Transactional publications <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Setup loop
Control<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @MinPubID <span style="color: grey;">=</span> <span style="color: magenta;">MIN</span><span style="color: grey;">(</span>ID<span style="color: grey;">)</span> <span style="color: blue;">FROM</span> #Publications<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @MaxPubID <span style="color: grey;">=</span> <span style="color: magenta;">MAX</span><span style="color: grey;">(</span>ID<span style="color: grey;">)</span> <span style="color: blue;">FROM</span> #Publications<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">WHILE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @MinPubID <span style="color: grey;"><=</span> @MaxPubID<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Set Publication<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SELECT</span> @publication <span style="color: grey;">=</span> Publication <span style="color: blue;">FROM</span>
#Publications <span style="color: blue;">WHERE</span> ID <span style="color: grey;">=</span>
@MinPubID<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SELECT</span> @publisher_db <span style="color: grey;">=</span> publisher_db <span style="color: blue;">FROM</span>
#Publications <span style="color: blue;">WHERE</span> ID <span style="color: grey;">=</span>
@MinPubID<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Truncate #tokens ready for next
publication<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRUNCATE</span> <span style="color: blue;">TABLE</span> #tokens<span style="color: grey;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Build @SQL string<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SET</span> @SQL <span style="color: grey;">=</span> <span style="color: red;">'EXEC '</span> <span style="color: grey;">+</span> @publisher_db <span style="color: grey;">+</span> <span style="color: red;">'.sys.sp_posttracertoken <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@publication = '</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> @publication<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Insert a new tracer token in the
publication database <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">EXEC </span><span style="color: grey;">(</span>
@SQL <span style="color: grey;">);</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Wait 10 seconds for the token to
make it to the Subscriber<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">EXEC </span><span style="color: grey;">(</span>
@Delay <span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Build @SQL string<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SET</span> @SQL <span style="color: grey;">=</span> <span style="color: red;">'INSERT #tokens (tracer_id,
publisher_commit)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> EXEC '</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span>
@publisher_db <span style="color: grey;">+</span> <span style="color: red;">'.sys.sp_helptracertokens
@publication = '</span> <span style="color: grey;">+</span> @publication<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Return tracer token information to
a temp table<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">EXEC </span><span style="color: grey;">(</span>
@SQL <span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Get tracer token ID<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SET</span> @tokenID <span style="color: grey;">=</span><span style="color: blue;"> </span><span style="color: grey;">(</span><span style="color: blue;">SELECT</span> <span style="color: blue;">TOP</span> 1 tracer_id <span style="color: blue;">FROM</span>
#tokens<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">ORDER</span> <span style="color: blue;">BY</span>
publisher_commit <span style="color: blue;">DESC</span><span style="color: grey;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Build @SQL string<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SET</span> @SQL <span style="color: grey;">=</span> <span style="color: red;">' INSERT
master.dbo.ReplicationLatency (DistributorLatency, SubscriberServerName,
SubscriberDatabaseName, SubscriberLatency, OverallLatency) <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> EXEC '</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span>
@publisher_db <span style="color: grey;">+</span> <span style="color: red;">'.sys.sp_helptracertokenhistory
<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@publication = '</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> @publication <span style="color: grey;">+</span> <span style="color: red;">', <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@tracer_id = '</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> <span style="color: magenta;">CONVERT</span><span style="color: grey;">(</span><span style="color: blue;">varchar</span><span style="color: grey;">,</span>@tokenID<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Get history for the tracer token<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">EXEC </span><span style="color: grey;">(</span>
@SQL <span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Update the PublicationName for
most recently inserted record<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">UPDATE</span> SSIS<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>ReplicationLatency<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SET</span> PublicationName <span style="color: grey;">=</span> @publication<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<o:p></o:p></div>
<span style="font-family: 'Courier New'; font-size: 10pt;"> </span><span style="color: blue; font-family: 'Courier New'; font-size: 10pt;">WHERE</span><span style="font-family: 'Courier New'; font-size: 10pt;"> PublicationName </span><span style="color: grey; font-family: 'Courier New'; font-size: 10pt;">=</span><span style="font-family: 'Courier New'; font-size: 10pt;">
</span><span style="color: red; font-family: 'Courier New'; font-size: 10pt;">'x'</span><span style="color: grey; font-family: 'Courier New'; font-size: 10pt;">;</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> </span><br />
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: green;">-- Incriment loop control<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">SELECT</span> @MinPubID <span style="color: grey;">=</span> @MinPubID <span style="color: grey;">+</span> 1<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">END<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><o:p></o:p></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com1tag:blogger.com,1999:blog-6664701585971860985.post-34227680366995098572012-12-31T12:01:00.002+00:002012-12-31T12:01:58.658+00:00SQL Server 365 - Fantastic First Year In NumbersSo, tomorrow marks one year since I started blogging here on SQL Server 365 and what a year it has been. I can honestly say that I have taken a great deal away from this experience which has been so rewarding, the only disappointment I have is that I didn't start blogging earlier.<br />
<br />
I set out with the goal of blogging something I had learned about SQL Server every day for a year which I soon found out was a little too optimistic. I do however still feel very satisfied with what I have achieved and happy that people have taken something away from my posts so far. After all the main reason for me starting the blog was to give something back to the fantastic SQL Community which has given me so much over the years. You really are fantastic!<br />
<br />
So here you go the SQL Server 365 First Year In Numbers!<br />
<br />
<b>Site Hits - 7,974</b><br />
<b>Total Posts - 62</b><br />
<b>Total Comments - 39</b><br />
<br />
<b>Top 5 Posts</b><br />
<a href="http://sqlserver365.blogspot.co.uk/2012/01/dont-be-balloon.html" target="_blank">Don't be a Balloon</a> - 1676 Views<br />
<a href="http://sqlserver365.blogspot.co.uk/2012/01/sql-server-error-logs.html" target="_blank">SQL Server Error Logs</a> - 907 Views<br />
<a href="http://sqlserver365.blogspot.co.uk/2012/01/determining-active-directory-group.html" target="_blank">Determining Active Directory Group Membership</a> - 242 Views<br />
<a href="http://sqlserver365.blogspot.co.uk/2012/10/database-mirroring-error.html" target="_blank">Database Mirroring Error</a> - 151 Views<br />
<a href="http://sqlserver365.blogspot.co.uk/2012/02/script-day-day-16-database-restore.html" target="_blank">A Script A Day - Day 16 - Database Restore</a> - 99 Views<br />
<br />
<b>Top 5 Countries</b><br />
<br />
United States - 3587 Views<br />
United Kingdom - 1461 Views<br />
India - 324 Views<br />
Russia - 235 Views<br />
Germany - 227 Views<br />
<br />
<br />
<b>Top 5 Browsers</b><br />
<br />
Internet Explorer - 3051 Views<br />
Chrome - 1949 Views<br />
Firefox - 1939 Views<br />
Safari - 381 Views<br />
Opera - 244 Views<br />
<br />
<br />
<b>Top 5 OS's</b><br />
<br />
Windows - 6411 Views<br />
Macintosh - 413 Views<br />
Linux - 232 Views<br />
iPhone - 232 Views<br />
Android - 191 Views<br />
<br />
<br />
I have some great ideas for next year and among other posts plan to do a series on Indexing, share a maintenance routine I've been working on and provide a plethora of scripts on Mirroring, Snapshots to name a few. I will even be delving into the world of Powershell and how it helps ease the pain of a fail-over in the event of invoking DR!<br />
<br />
If there is anything you would like me to to do a post on or would like to do a guest post then please get in touch and we can arrange it! <a href="mailto:ckwmcgowan@gmail.com">ckwmcgowan@gmail.com</a> or <a href="https://twitter.com/ckwmcgowan" target="_blank">@ckwmcgowan</a><br />
<br />
Happy New Year!<br />
<br />
ChrisAnonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-8033519274957964362012-12-19T16:52:00.003+00:002012-12-19T16:55:15.102+00:00Active Directory Group Membership and Powershell<span style="font-family: Arial, Helvetica, sans-serif;">I’ve done my fair share of work with Active Directory
over the years and LDAP has helped immensely, it did however let me down
recently. Well when I say LDAP let me
down it was probably my knowledge of LDAP (or lack thereof) that let me down.</span><br />
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;"><o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">For an audit I needed to list all groups a random set of
users where members of. After struggling
for an hour or so I decided to admit defeat with LDAP and instead turn to a
trusty friend of mine Powershell, and It didn’t let me down!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">I downloaded ActiveRoles Management Shell for Active
Directory from Quest (see the link below);<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://www.questsoftware.it/powershell/activeroles-server.aspx">http://www.questsoftware.it/powershell/activeroles-server.aspx</a><o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Launching this I ran Get-Command to display a list of all
available cmdlets;<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">From the extensive list of cmdlets I used get-qadmemberof
and piped this to the out-file cmdlet to write the results to c:\sql\username.txt
<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">get-qadmemberof ‘domain\username' | out-file c:\sql\username.txt<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Voila! With one simple line of code for each of the
random users I was able to get the results, sweet.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><o:p></o:p></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com0tag:blogger.com,1999:blog-6664701585971860985.post-48332537729833066532012-11-30T12:56:00.000+00:002013-01-11T11:29:36.807+00:00Tables without a Primary Key<span style="font-family: Arial, Helvetica, sans-serif;">As well as
creating the script for <a href="http://sqlserver365.blogspot.co.uk/2012/11/tables-without-clustered-index.html" target="_blank">yesterday’s post</a> on finding Tables without a Clustered
Index I tweaked the script slightly to get all tables without a primary
key.</span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">A Primary Key constraint enforces
uniqueness of a record in a table. I am extremely anal with this particular
standard that I try to enforce, to say I don’t take kindly to folks that don’t
create a Primary Key on their tables is an understatement.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">There are
a few things that will need changing;<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Arial, Helvetica, sans-serif;">·
<!--[endif]-->@notify_email_operator_name=N'Chris'<o:p></o:p></span></div>
<div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Arial, Helvetica, sans-serif;">·
<!--[endif]-->SET
@EmailProfile = ''Chris''<o:p></o:p></span></div>
<div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Arial, Helvetica, sans-serif;">·
<!--[endif]-->SET
@EmailRecipient = ''Chris@SQLServer365.co.uk''<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">You can
also obviously change the schedule accordingly to suit your needs.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Again I
would be interested to know the results on your servers, leave me a comment
with the email subject text from the resulting email.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Find tables without a Primary Key<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> For more SQL resources, check out
SQLServer365.blogspot.co.uk<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may alter this code for your own
purposes.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may republish altered code as long as
you give due credit.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You
must obtain prior permission before blogging this code.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> THIS CODE AND INFORMATION ARE PROVIDED
"AS IS"<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> [msdb]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span><span style="color: blue;">SELECT</span> job_id <span style="color: blue;">FROM</span>
msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: green;">sysjobs_view</span> <span style="color: blue;">WHERE</span>
name <span style="color: grey;">=</span> <span style="color: red;">N'Alert -
TablesWithoutPrimaryKey'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_delete_job</span><span style="color: blue;"> </span>@job_name
<span style="color: grey;">=</span> <span style="color: red;">N'Alert -
TablesWithoutPrimaryKey'</span><span style="color: grey;">,</span>
@delete_unused_schedule<span style="color: grey;">=</span>1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRANSACTION<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: blue;">INT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span><span style="color: blue;">SELECT</span> name <span style="color: blue;">FROM</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>syscategories <span style="color: blue;">WHERE</span> name<span style="color: grey;">=</span><span style="color: red;">N'[Uncategorized (Local)]'</span> <span style="color: grey;">AND</span>
category_class<span style="color: grey;">=</span>1<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_category</span><span style="color: blue;"> </span>@class<span style="color: grey;">=</span><span style="color: red;">N'JOB'</span><span style="color: grey;">,</span> @type<span style="color: grey;">=</span><span style="color: red;">N'LOCAL'</span><span style="color: grey;">,</span> @name<span style="color: grey;">=</span><span style="color: red;">N'[Uncategorized (Local)]'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">END<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @jobId <span style="color: blue;">BINARY</span><span style="color: grey;">(</span>16<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span>
msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_job</span><span style="color: blue;"> </span>@job_name<span style="color: grey;">=</span><span style="color: red;">N'Alert -
TablesWithoutPrimaryKey'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @enabled<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_eventlog<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_email<span style="color: grey;">=</span>2<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_netsend<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_page<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @delete_level<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @description<span style="color: grey;">=</span><span style="color: red;">N'This job runs every Monday at 07:09 and will email an
operator if there are any tables without a Primary key in any user database.'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @category_name<span style="color: grey;">=</span><span style="color: red;">N'[Uncategorized (Local)]'</span><span style="color: grey;">,</span>
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @owner_login_name<span style="color: grey;">=</span><span style="color: red;">N'sa'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_email_operator_name<span style="color: grey;">=</span><span style="color: red;">N'Chris'</span><span style="color: grey;">,</span> @job_id <span style="color: grey;">=</span> @jobId <span style="color: blue;">OUTPUT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/******
Object: Step [Find tables without a
Primary Key] Script Date: 11/29/2012
13:31:29 ******/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_jobstep</span><span style="color: blue;"> </span>@job_id<span style="color: grey;">=</span>@jobId<span style="color: grey;">,</span> @step_name<span style="color: grey;">=</span><span style="color: red;">N'Find tables without a Primary Key'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @step_id<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @cmdexec_success_code<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_success_action<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_success_step_id<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_fail_action<span style="color: grey;">=</span>2<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_fail_step_id<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @retry_attempts<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @retry_interval<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @os_run_priority<span style="color: grey;">=</span>0<span style="color: grey;">,</span> @subsystem<span style="color: grey;">=</span><span style="color: red;">N'TSQL'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @command<span style="color: grey;">=</span><span style="color: red;">N'-- Set database context<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE master;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Declare
variables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@EmailProfile VARCHAR(255)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@EmailRecipient VARCHAR(255)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@EmailSubject VARCHAR(255)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@IndexUsageStats INT<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@TableCount INT<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@DatabaseCount INT<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set variables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET @EmailProfile
= ''Chris''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET
@EmailRecipient = ''Chris.McGowan@SQLServer365.co.uk''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Drop temporary
table if exists<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF
OBJECT_ID(''tempDB.dbo.#NoPrimaryKey'') IS NOT NULL <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DROP TABLE #NoPrimaryKey;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
Temporary Table<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE TABLE
#NoPrimaryKey<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> (<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DatabaseName VARCHAR(255) ,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SchemaName VARCHAR(255) ,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> TableName VARCHAR(1000)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> );<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INSERT INTO
#NoPrimaryKey<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC
sp_msforeachdb ''USE [?]; <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF ''''?'''' NOT
IN (''''master'''', ''''model'''',''''msdb'''', ''''tempdb'''',
''''ReportServer'''', ''''ReportServerTempDB'''', ''''Distribution'''')<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT DB_NAME()
AS DatabaseName, SCHEMA_NAME(s.[schema_id]) AS SchemaName,
OBJECT_NAME(t.[object_id]) AS TableName<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM sys.tables t<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INNER JOIN
sys.objects o ON o.[object_id] = t.[object_id]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INNER JOIN
sys.schemas s ON s.[schema_id] = o.[schema_id]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">WHERE
OBJECTPROPERTY(t.[OBJECT_ID],''''TableHasPrimaryKey'''') = 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">AND
OBJECTPROPERTY(t.[object_id],''''IsUserTable'''') = 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">AND
o.is_ms_shipped = 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">ORDER BY
DatabaseName, SchemaName, TableName ASC;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">END<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">'' <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Check for tables without a Primary key<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF EXISTS (
SELECT 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> FROM #NoPrimaryKey) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DECLARE @tableHTML NVARCHAR(MAX); <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SET @tableHTML = N''<style
type="text/css">''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''.h1 {font-family: Arial,
verdana;font-size:16px;border:0px;background-color:white;} ''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''.h2 {font-family: Arial,
verdana;font-size:12px;border:0px;background-color:white;} ''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''body {font-family: Arial,
verdana;} ''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''table{font-size:12px;
border-collapse:collapse;border:1px solid black; padding:3px;} ''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''td{background-color:#F1F1F1;
border:1px solid black; padding:3px;} ''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''th{background-color:#99CCFF;
border:1px solid black; padding:3px;}''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''</style>'' +
N''<table border="1">'' + N''<tr>''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> +
N''<th>DatabaseName</th>''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''<th>SchemaName</th>''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> +
N''<th>TableName</th>''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''</tr>''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + CAST(( SELECT td = DatabaseName,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> '''',<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> td = SchemaName,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> '''',<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> td = TableName,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> '''' <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> FROM #NoPrimaryKey<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> FOR<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> XML PATH(''tr'') ,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> TYPE<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ) AS NVARCHAR(MAX)) +
N''</table>''; <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- Count tables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SELECT @TableCount = COUNT(1) FROM
#NoPrimaryKey;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- Count tables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SELECT @DatabaseCount =
COUNT(DISTINCT DatabaseName) FROM #NoPrimaryKey;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- Set subject<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SET @EmailSubject = ''ALERT - '' +
CAST(@TableCount AS VARCHAR(100)) + ''
Tables without a Primary Key on '' + @@SERVERNAME + '' accross '' +
CAST(@DatabaseCount AS VARCHAR(100)) + '' databases'' <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- Email results <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> EXEC msdb.dbo.sp_send_dbmail @profile_name
= @EmailProfile,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @recipients = @EmailRecipient,
@subject = @EmailSubject,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @body = @tableHTML, @body_format =
''HTML''; <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> END<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">'</span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">,</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @database_name<span style="color: grey;">=</span><span style="color: red;">N'master'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @flags<span style="color: grey;">=</span>12<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_update_job</span><span style="color: blue;"> </span>@job_id <span style="color: grey;">=</span> @jobId<span style="color: grey;">,</span> @start_step_id <span style="color: grey;">=</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_jobschedule</span><span style="color: blue;"> </span>@job_id<span style="color: grey;">=</span>@jobId<span style="color: grey;">,</span> @name<span style="color: grey;">=</span><span style="color: red;">N'(07:09) Monday'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @enabled<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_type<span style="color: grey;">=</span>8<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_interval<span style="color: grey;">=</span>2<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_subday_type<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_subday_interval<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_relative_interval<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_recurrence_factor<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_start_date<span style="color: grey;">=</span>20121129<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_end_date<span style="color: grey;">=</span>99991231<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_start_time<span style="color: grey;">=</span>70900<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_end_time<span style="color: grey;">=</span>235959<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_jobserver</span><span style="color: blue;"> </span>@job_id <span style="color: grey;">=</span> @jobId<span style="color: grey;">,</span> @server_name <span style="color: grey;">=</span> <span style="color: red;">N'(local)'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">COMMIT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRANSACTION<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GOTO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> EndSave<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">QuitWithRollback:<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">IF </span><span style="color: grey;">(</span><span style="color: magenta;">@@TRANCOUNT</span> <span style="color: grey;">></span> 0<span style="color: grey;">)</span> <span style="color: blue;">ROLLBACK</span> <span style="color: blue;">TRANSACTION<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EndSave:<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com6tag:blogger.com,1999:blog-6664701585971860985.post-84401847631163595452012-11-29T13:15:00.000+00:002013-01-11T11:29:55.935+00:00Tables without a Clustered Index<br />
<div class="MsoNormal">
<span style="font-family: Arial, sans-serif;">Yesterday
while adding some new logic to an existing process I noticed an unacceptable
level of performance degradation with the routine.</span><span style="font-family: Arial, sans-serif;"> </span><span style="font-family: Arial, sans-serif;">Investigation led me to find that a new table
had slipped through the net and been created without a clustered index.</span><span style="font-family: Arial, sans-serif;"> </span><span style="font-family: Arial, sans-serif;">Needless to say adding a clustered index and
rebuilding the non-clustered indexes on the table improved the performance of
the routine significantly.</span></div>
<div class="MsoNormal">
<span style="font-family: Arial, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, sans-serif;">Being a DBA,
this got me thinking about how this had slipped through the net, how I could
prevent it in future and equally as important how many other existing tables didn't have a Clustered Index? I knocked
together the below script which will create a SQL Job that is scheduled to run
every Monday at 07:07 and email an operator if there are any tables without a
clustered index in all user databases.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, sans-serif;"><br /></span></div>
<div class="MsoNoSpacing">
<span style="font-family: "Arial","sans-serif";">There are
a few things that will need changing;<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman';">
</span></span><!--[endif]--><span style="font-family: "Arial","sans-serif";">@notify_email_operator_name=N'Chris'<o:p></o:p></span></div>
<div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman';">
</span></span><!--[endif]--><span style="font-family: "Arial","sans-serif";">SET
@EmailProfile = ''Chris''<o:p></o:p></span></div>
<div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman';">
</span></span><!--[endif]--><span style="font-family: "Arial","sans-serif";">SET
@EmailRecipient = ''Chris@SQLServer365.co.uk''<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Arial","sans-serif";">You can
also obviously change the schedule accordingly to suit your needs.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: "Arial","sans-serif";">I would be
interested to know the results on your servers, leave me a comment with the
email subject text from the resulting email.<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/*<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> Find tables without a clustered index<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> For more SQL resources, check out
SQLServer365.blogspot.co.uk<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may alter this code for your own
purposes.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You may republish altered code as long as
you give due credit.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> You must obtain prior permission before
blogging this code.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> THIS CODE AND INFORMATION ARE PROVIDED
"AS IS"<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
-----------------------------------------------------------------<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">*/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set database
context<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> [msdb]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span><span style="color: blue;">SELECT</span> job_id <span style="color: blue;">FROM</span>
msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: green;">sysjobs_view</span> <span style="color: blue;">WHERE</span>
name <span style="color: grey;">=</span> <span style="color: red;">N'Alert -
TablesWithoutClusteredIndex'</span><span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_delete_job</span><span style="color: blue;"> </span>@job_name
<span style="color: grey;">=</span> <span style="color: red;">N'Alert -
TablesWithoutClusteredIndex'</span><span style="color: grey;">,</span>
@delete_unused_schedule<span style="color: grey;">=</span>1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRANSACTION<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: blue;">INT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> 0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;">NOT</span> <span style="color: grey;">EXISTS</span><span style="color: blue;"> </span><span style="color: grey;">(</span><span style="color: blue;">SELECT</span> name <span style="color: blue;">FROM</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span>syscategories <span style="color: blue;">WHERE</span> name<span style="color: grey;">=</span><span style="color: red;">N'[Uncategorized (Local)]'</span> <span style="color: grey;">AND</span>
category_class<span style="color: grey;">=</span>1<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_category</span><span style="color: blue;"> </span>@class<span style="color: grey;">=</span><span style="color: red;">N'JOB'</span><span style="color: grey;">,</span> @type<span style="color: grey;">=</span><span style="color: red;">N'LOCAL'</span><span style="color: grey;">,</span> @name<span style="color: grey;">=</span><span style="color: red;">N'[Uncategorized (Local)]'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">END<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @jobId <span style="color: blue;">BINARY</span><span style="color: grey;">(</span>16<span style="color: grey;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span>
msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_job</span><span style="color: blue;"> </span>@job_name<span style="color: grey;">=</span><span style="color: red;">N'Alert -
TablesWithoutClusteredIndex'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @enabled<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_eventlog<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_email<span style="color: grey;">=</span>2<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_netsend<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @notify_level_page<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @delete_level<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @description<span style="color: grey;">=</span><span style="color: red;">N'This job runs on a Monday morning at 07:07 and will email
if there are any tables without a clustered index in any user database.'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @category_name<span style="color: grey;">=</span><span style="color: red;">N'[Uncategorized (Local)]'</span><span style="color: grey;">,</span>
<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @owner_login_name<span style="color: grey;">=</span><span style="color: red;">N'sa'</span><span style="color: grey;">,</span> @notify_email_operator_name<span style="color: grey;">=</span><span style="color: red;">N'Chris'</span><span style="color: grey;">, </span>@job_id <span style="color: grey;">=</span> @jobId <span style="color: blue;">OUTPUT<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">/******
Object: Step [Find tables Without a
Clustered Index] Script Date:
11/29/2012 12:20:42 ******/<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_jobstep</span><span style="color: blue;"> </span>@job_id<span style="color: grey;">=</span>@jobId<span style="color: grey;">,</span> @step_name<span style="color: grey;">=</span><span style="color: red;">N'Find tables Without a Clustered Index'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @step_id<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @cmdexec_success_code<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_success_action<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_success_step_id<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_fail_action<span style="color: grey;">=</span>2<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @on_fail_step_id<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @retry_attempts<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @retry_interval<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @os_run_priority<span style="color: grey;">=</span>0<span style="color: grey;">,</span> @subsystem<span style="color: grey;">=</span><span style="color: red;">N'TSQL'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @command<span style="color: grey;">=</span><span style="color: red;">N'-- Set database context<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">USE master;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Declare
variables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@EmailProfile VARCHAR(255)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@EmailRecipient VARCHAR(255)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@EmailSubject VARCHAR(255)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@IndexUsageStats INT<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@TableCount INT<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">DECLARE
@DatabaseCount INT<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Set variables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET @EmailProfile
= ''Chris''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SET
@EmailRecipient = ''Chris.McGowan@SQLServer365.co.uk''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Drop temporary
table if exists<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF
OBJECT_ID(''tempDB.dbo.#NoClusteredIndex'') IS NOT NULL <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DROP TABLE #NoClusteredIndex;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Create
Temporary Table<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">CREATE TABLE
#NoClusteredIndex<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> (<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DatabaseName VARCHAR(255) ,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SchemaName VARCHAR(255) ,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> TableName VARCHAR(1000)<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> );<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INSERT INTO
#NoClusteredIndex<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC
sp_msforeachdb ''USE [?]; <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF ''''?'''' NOT
IN (''''master'''', ''''model'''',''''msdb'''', ''''tempdb'''',
''''ReportServer'''', ''''ReportServerTempDB'''', ''''Distribution'''')<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">SELECT
DISTINCT DB_NAME() AS DatabaseName,
SCHEMA_NAME(s.[schema_id]) AS SchemaName, OBJECT_NAME(i.[object_id]) AS
TableName<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">FROM sys.indexes i<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INNER JOIN
sys.objects o ON o.[object_id] = i.[object_id]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">INNER JOIN
sys.schemas s ON s.[schema_id] = o.[schema_id]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">WHERE i.INDEX_ID =
0<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">AND
OBJECTPROPERTY(i.[object_id],''''IsUserTable'''') = 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">ORDER BY
DatabaseName, SchemaName, TableName ASC;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">END<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">'' <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">-- Check for
tables without a clustered index<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF EXISTS (
SELECT 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> FROM #NoClusteredIndex) <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> BEGIN<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> DECLARE @tableHTML NVARCHAR(MAX); <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SET @tableHTML = N''<style
type="text/css">''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''.h1 {font-family: Arial,
verdana;font-size:16px;border:0px;background-color:white;} ''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''.h2 {font-family: Arial,
verdana;font-size:12px;border:0px;background-color:white;} ''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''body {font-family: Arial,
verdana;} ''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''table{font-size:12px;
border-collapse:collapse;border:1px solid black; padding:3px;} ''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''td{background-color:#F1F1F1;
border:1px solid black; padding:3px;} ''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''th{background-color:#99CCFF;
border:1px solid black; padding:3px;}''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''</style>'' +
N''<table border="1">'' + N''<tr>''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> +
N''<th>DatabaseName</th>''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> +
N''<th>SchemaName</th>''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''<th>TableName</th>''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + N''</tr>''<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> + CAST(( SELECT td = DatabaseName,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> '''',<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> td = SchemaName,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> '''',<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> td = TableName,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> '''' <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> FROM #NoClusteredIndex<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> FOR<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> XML PATH(''tr'') ,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> TYPE<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> ) AS NVARCHAR(MAX)) +
N''</table>''; <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- Count tables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SELECT @TableCount = COUNT(1) FROM
#NoClusteredIndex;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- Count tables<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SELECT @DatabaseCount =
COUNT(DISTINCT DatabaseName) FROM #NoClusteredIndex;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- Set subject<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> SET @EmailSubject = ''ALERT - '' +
CAST(@TableCount AS VARCHAR(100)) + ''
Tables without a Clustered Index on '' + @@SERVERNAME + '' accross '' +
CAST(@DatabaseCount AS VARCHAR(100)) + '' databases'' <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> -- Email results <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> EXEC msdb.dbo.sp_send_dbmail
@profile_name = @EmailProfile,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @recipients = @EmailRecipient,
@subject = @EmailSubject,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @body = @tableHTML, @body_format =
''HTML''; <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> END<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> GO'</span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">,</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @database_name<span style="color: grey;">=</span><span style="color: red;">N'master'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @flags<span style="color: grey;">=</span>12<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_update_job</span><span style="color: blue;"> </span>@job_id <span style="color: grey;">=</span> @jobId<span style="color: grey;">,</span> @start_step_id <span style="color: grey;">=</span> 1<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_jobschedule</span><span style="color: blue;"> </span>@job_id<span style="color: grey;">=</span>@jobId<span style="color: grey;">,</span> @name<span style="color: grey;">=</span><span style="color: red;">N'(07:07) Monday'</span><span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @enabled<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_type<span style="color: grey;">=</span>8<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_interval<span style="color: grey;">=</span>2<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_subday_type<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_subday_interval<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_relative_interval<span style="color: grey;">=</span>0<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @freq_recurrence_factor<span style="color: grey;">=</span>1<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_start_date<span style="color: grey;">=</span>20121129<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_end_date<span style="color: grey;">=</span>99991231<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_start_time<span style="color: grey;">=</span>70700<span style="color: grey;">,</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> @active_end_time<span style="color: grey;">=</span>235959<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EXEC</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">
@ReturnCode <span style="color: grey;">=</span> msdb<span style="color: grey;">.</span>dbo<span style="color: grey;">.</span><span style="color: maroon;">sp_add_jobserver</span><span style="color: blue;"> </span>@job_id <span style="color: grey;">=</span> @jobId<span style="color: grey;">,</span> @server_name <span style="color: grey;">=</span> <span style="color: red;">N'(local)'<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">IF </span><span style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">(</span><span style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">@@ERROR</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: grey;"><></span> 0 <span style="color: grey;">OR</span> @ReturnCode <span style="color: grey;"><></span>
0<span style="color: grey;">)</span> <span style="color: blue;">GOTO</span>
QuitWithRollback<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">COMMIT</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">TRANSACTION<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GOTO</span><span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> EndSave<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">QuitWithRollback:<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;"> <span style="color: blue;">IF </span><span style="color: grey;">(</span><span style="color: magenta;">@@TRANCOUNT</span> <span style="color: grey;">></span> 0<span style="color: grey;">)</span> <span style="color: blue;">ROLLBACK</span> <span style="color: blue;">TRANSACTION<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">EndSave:<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-no-proof: yes;">GO<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Enjoy!<o:p></o:p></span></div>
<div class="MsoNoSpacing">
<br /></div>
<div class="MsoNoSpacing">
<span style="font-family: Arial, Helvetica, sans-serif;">Chris</span><span style="font-family: Arial, sans-serif;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
Anonymoushttp://www.blogger.com/profile/16118372390680186915noreply@blogger.com1