<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Eric Backscheider - @SQLPilot</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/sqlpilot/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/sqlpilot/feed.xml</link>
    <description>Everything SQL!  Mostly Performance related information from the field.</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:45:54 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>SQL Server, To Virtualize or Not, that is the Question</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlpilot/sql-server-to-virtualize-or-not-that-is-the-question</link>
      <pubDate>Tue, 15 Feb 2011 06:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Eric Backscheider]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sqlpilot/2011/02/15/sql-server-to-virtualize-or-not-that-is-the-question/</guid>
      <description><![CDATA[First I want you to understand where I am coming from.&nbsp; My background has always been in the...]]></description>
      <content:encoded><![CDATA[<p>First I want you to understand where I am coming from.&nbsp; My background has always been in the Infrastructure arena.&nbsp; I have been an Infrastructure Manager at three different locations.&nbsp;&nbsp; I have supported Servers, Networks, SAN's, and Phone Switches.&nbsp; I do get and understand the "Big Picture".&nbsp; Having said all of that, I am a DBA at heart.&nbsp; I have this very same conversation at lots of different customers.&nbsp; This post will be of my own humble opinion, others certainly have their own.</p>
<p>The other thing I want to lay out here is technology.&nbsp; I LOVE technology.&nbsp; New gadgets, tools, ideas, etc..., but I do feel that each new technology has boundaries of where that technology is good.&nbsp;&nbsp; Take the new Electric Car, Great idea, if you want to go 100 miles, but if you're traveling across the country, probably not the "Tool" you are going to use.</p>
<p>Virtualization has been the craze in the last decade or so.&nbsp; I personally think this technology is AWESOME, but just like above, it does have limitations.&nbsp; Those limitations, in my opinion make it not always the best choice for a SQL Server.&nbsp; Now I have to say "Not Always", because just like most things, there is not one solid answer.&nbsp;&nbsp; </p>
<p>Let's walk through the "Why".&nbsp; Why do I want to virtualize?&nbsp; I want to reduce the number of boxes in my server room. Reduce the Power I consume, reduce the licenses I buy.&nbsp;&nbsp; All of these things basically can be wrapped up into consolidation.&nbsp;&nbsp; If I owned or paid the bill for a server room, I too would want to run it with the least cost to get the job done.&nbsp;&nbsp; Here is where the issue comes in play.&nbsp; What if I have 100 database servers that I want to Consolidate?&nbsp;&nbsp; Well if I don't want to get any groups other than my platform teams involved, I could take all of those servers and virtualize them down to 5 physicals.&nbsp;&nbsp; This sounds good, right?&nbsp; If you look at this from a purely infrastructure/OS point of view, then yes, we have saved some money.&nbsp; But could we have done this better if we looked at the Big Picture?</p>
<p>Take those same 100 servers.&nbsp; What if I built a 5 node SQL Cluster?&nbsp;&nbsp; What if I could consolidate all of the databases on those servers down to 6 instances that live on that cluster?&nbsp; On the surface, we have accomplished the same thing here.&nbsp; We went from 100 servers to 5, but I think we have done more than that.&nbsp;&nbsp; If we include the DBA team, we can say they first consolidation/virtualization reduced the servers they manage from 100 to 100.&nbsp; Wait, you mean that the DBA team still has 100 servers to manage?&nbsp; Yep, since all I did was virtualize the existing servers, the only savings was from the Hardware and power they consume.&nbsp; Even the backup folks need to still backup 100 servers.&nbsp; That's still 100 licenses for Antivirus, Backup Agents, Security Monitoring, and Performance monitoring just to name a few.&nbsp;&nbsp;&nbsp; Ok, the second one did what?&nbsp; It reduced the Hardware and Power, but also reduced the number of SQL Servers from 100 to 6.&nbsp; That means that I only have 6 Instances of SQL to watch and maintain.&nbsp; Six log files, Six Error Logs, Six servers to backup, etc...&nbsp;&nbsp; We also reduced the Agents that we need to buy.&nbsp;&nbsp; </p>
<p>I have not even started to talk performance yet.&nbsp; The absolute largest bottleneck or pain point I run into is I/O.&nbsp; If I live on virtualized hardware, I can manage this, but from my experience, we don't.&nbsp;&nbsp; I sit on virtual drives that are shared with File Servers, other DB servers, App Servers, and the OS's of all the other virtualized servers.&nbsp;&nbsp; The typical setup is to have a very large LUN carved from a SAN and then assigned to my Virtualized environment, and then we take that LUN and carve it up even more.&nbsp;&nbsp; Can you not do this, Yes!&nbsp; I just don't see it in the field.&nbsp; On the other side, how do we do I/O?&nbsp;&nbsp; Well if it were me designing the system, we would have one main LUN that would be the drive letter, then we would have several Mount Points under that drive letter.&nbsp; This way I would be able to separate Data, Log, Tempdb, Indexes, etc...&nbsp; I would also have a monitor that would help me choose when a particular LUN was "FULL".&nbsp;&nbsp; Not in terms of physical size, but in terms of performance.&nbsp;&nbsp; This way we can separate those databases that can consume massive amounts if I/O, but not CPU or Memory.&nbsp;&nbsp; </p>
<p>One other small detail here is that if we consolidated the second way, we also get High Availability.&nbsp; Since we are in a cluster, we can have reduced down time for OS and SQL Patches. </p>
<p>Earlier I said there is not one solution for everything, so where and when does virtualization of SQL make since?&nbsp; I feel they are in specific situations.&nbsp;&nbsp; Consider having an old SQL 7.0 server sitting on 15 year old hardware.&nbsp; You can't upgrade because the application hasn't been upgraded, and it's required for your company.&nbsp;&nbsp; Take that thing and virtualized it!&nbsp;&nbsp; This is a disaster waiting to happen.&nbsp;&nbsp; If it's been running, Software is probably not the issue, but that hardware is going to start having issues, and when it does, getting parts is going to be even worse.&nbsp;&nbsp; This is just one example, but there are others like this.</p>
<p>So here is my take on consolidation/virtualization.&nbsp;&nbsp; Virtualization is a fantastic new technology, but it is not the Answer to EVERYTHING.&nbsp;&nbsp; There are other tools, and technologies that could, and do make more sense to put in certain places.&nbsp;&nbsp; If you are looking at a consolidation project, I would urge you to look at this project from different perspectives.&nbsp; Think that you are the CIO and you need to consolidate and reduce costs.&nbsp;&nbsp; I think my solution does both, and frees up some time for the DBA's to do things other than watch backups and error logs on 100 servers.&nbsp;&nbsp; </p>
<p>Eric, @SQLPilot<br /><a data-count="none" data-via="SQLPilot" href="https://twitter.com/share" class="twitter-share-button">Tweet</a>
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
</p>]]></content:encoded>
    </item>
    <item>
      <title>Memory Pressure and how to see it</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlpilot/memory-pressure-and-how-to-see-it</link>
      <pubDate>Mon, 14 Feb 2011 12:12:00 GMT</pubDate>
      <dc:creator><![CDATA[Eric Backscheider]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sqlpilot/2011/02/14/memory-pressure-and-how-to-see-it/</guid>
      <description><![CDATA[Since this is such a broad topic, I want to just start with the basics.&nbsp;&nbsp; I'll review...]]></description>
      <content:encoded><![CDATA[<p><span style="mso-fareast-font-family: 'Times New Roman';"><span style="font-size: small;"><span style="font-family: Calibri;"></span></span></span>
<p>Since this is such a broad topic, I want to just start with the basics.&nbsp;&nbsp; I'll review some of the settings in SQL and Windows, and then talk about what some of the pressures I see are, and how we can help reduce them.</p>
</p>
<p>First let's cover the Settings...</p>
<p>SP_Configure holds just a few of these settings.&nbsp;&nbsp; Max Server Memory and Min Server Memory.&nbsp;&nbsp; </p>
<p>Max Server Memory:<br />Max is kind of what you would expect.&nbsp;&nbsp; It is the Maximum number that the Buffer Pool will grow to.&nbsp;&nbsp; Please note I did not say it's the total Memory that SQL will consume, but just the Buffer Pool.&nbsp;&nbsp; This is important as SQL can take more than this for other reasons.&nbsp; Not EVERYTHING is in the Buffer Pool.&nbsp;&nbsp; Things like Query Plan Cache, Memory for the Optimizer, Connections, CLR Objects, etc... all use memory that <i>can</i>be outside of the pool.&nbsp;&nbsp; Max Memory also does not limit other areas of SQL.&nbsp; SSIS, SSRS, SSAS all are their own separate processes, and they are not controlled by this.&nbsp;&nbsp; I know this may not sound ground breaking, but I still go on-site to customers who think this setting will control everything that SQL does.</p>
<p>Min Server Memory:<br />This is a setting I feel is very much not understood.&nbsp;&nbsp; First and foremost, this DOES NOT pre-allocate memory.&nbsp;&nbsp; SQL will NOT start up and grab this much ram.&nbsp;&nbsp; This setting instead is a threshold.&nbsp;&nbsp; Once SQL does grow beyond this number, it will not give it back to the OS.&nbsp;&nbsp; Please re-read that again.&nbsp;&nbsp; It does not give it up!&nbsp;&nbsp;&nbsp; This is 0 by default, and although I have had several conversations on it, I personally don't see why this should be changed.&nbsp;&nbsp;&nbsp; If it did pre-allocate it, then I could see a change, but if my server is under a Memory Attack, I would want SQL to release memory to save the OS.</p>
<p>AWE:<br />AWE is left over from the 32bit days, and why it is not required in 64bit, it does not hurt anything, so I always turn it on.</p>
<p>Lock Pages in Memory:<br />This is not a SQL setting, but it is one that has some old skeletons.&nbsp; I will say that in SQL 2000, once this was set, SQL did not like to trim this memory, but that was then, this is now.&nbsp;&nbsp; We DO want this to be set.&nbsp; &nbsp;Why?&nbsp;&nbsp; Here is the quick overview.&nbsp;&nbsp; If I fill my SQL Servers memory with data, why would I want to page that data out to a page file?&nbsp;&nbsp; I would not.&nbsp;&nbsp; Most of us are going to have much faster disks for data files than for our OS Page file.&nbsp;&nbsp; So if I wanted to remove the data from RAM, I would just rather throw it away and then reload it from the faster disks when needed again, not from the slower Page file.&nbsp;&nbsp; If you are running into a Memory issue, you may have Max Server Memory set too high, and that needs to be changed, not this locking.</p>
<p>Okay, now we have just a few settings covered, let's talk about how to see this pressure, and what direction it might be coming from.&nbsp;&nbsp; The tool I use here is Perfmon.&nbsp;&nbsp; It is absolutely my #1 tool.&nbsp; Not because it's a MS tool, but because it's easy to use, light (little if any impact to the server), on every windows system by default, just to name a few.&nbsp;&nbsp; In Perfmon I want to look at memory on the box, as well as memory in SQL.&nbsp;&nbsp; </p>
<ul>
<li>Memory: Available MB</li>
<li>SQL Buffer: Free Pages</li>
<li>SQL Buffer: Page Life</li>
<li>SQL Buffer: Lazy Writes</li>
</ul>
<p>These four are my starting point.&nbsp;&nbsp; First, if there is less than a few hundred Megabytes free on the server?&nbsp; If so, something is wrong.&nbsp;&nbsp; Either I have too many processes running or Max Server Memory is set too high.&nbsp;&nbsp; If OS Memory is ok, now we need to see if there is pressure inside of SQL.&nbsp;&nbsp; The other three counters will help with this.&nbsp;&nbsp; I'll dig into what each one does first.</p>
<p>Free Pages:<br />This is the number of free pages in the Buffer.&nbsp; Remember there WILL always be free pages, but how many and how does that number change?&nbsp; The number we are looking for is 640 free.&nbsp; Below that, the engine will either try to grow the buffer in memory, or start tossing the old data out.&nbsp;&nbsp; This is done through the lazywritter, which happens to be the other Perfmon counter we look at.</p>
<p>Page Life Expectancy:<br />This counter tells us how long a page has lived in memory when it's no longer referenced.&nbsp;&nbsp; The ideal number is over 300 seconds, obviously, the longer the better.</p>
<p>Lazy Writes:<br />This is the process that is used to throw away old data in the buffer, if that buffer can't be grown to a larger memory footprint.&nbsp; Our target here is less than 20/sec.&nbsp; The lower, the better.</p>
<p>The combination of these three counters will help us see pressure inside of SQL Server.&nbsp;&nbsp; Most DBA's will monitor Buffer Cache Hit Ratio.&nbsp; This counter does not really help us.&nbsp; If the counter is low, then there is a good chance there is an issue, but if it's high, it tells us nothing.&nbsp; Yep, nothing.&nbsp; This is why I don't look at it.&nbsp;&nbsp; On the other hand, the three I laid out will, and they all work hand and hand.</p>
<p>If I have low free pages, and the buffer can't be grown, Lazy Writes will start removing data. Once the oldest data is removed, this will reduce our Page Life.&nbsp; See the combination of the three help prove this.&nbsp;&nbsp;&nbsp; Let's look at it another way.&nbsp; What if Free Pages is low, but Page Life continues to grow and Lazy Writes is at 0?&nbsp; Well, this just tells me that we are running queries, and growing the Buffer Pool.&nbsp; In that case we could look at the Available Megabytes, and see that it is decreasing by exactly the same trend as SQL is taking memory.&nbsp;&nbsp; Again the same counters, but this proved that we did NOT have internal memory pressure.</p>
<p>One other little tip I like to add here.&nbsp; You need to rule out Memory pressure first.&nbsp;&nbsp; If you have Memory issues, I would bet that you have or will have disk issues.&nbsp; Once you have thrown out all of you nice old data in memory, we are at some point going to have to load it back in.&nbsp;&nbsp; When that happens, we have to read from the very slow disks.&nbsp; I know, I know, you are on a SAN, and you have the fastest disks in town, well that does not matter.&nbsp; Disks are SLOW, even the fabulous Solid State drives (Like I have in my laptop) are slower than just re-using data that is already in memory.</p>
<p>The other thing I need to point out is WHY.&nbsp; Why is SQL doing this?&nbsp; SQL's not doing it; it's doing what you told it to do.&nbsp; How so?&nbsp; With your code!&nbsp; T-SQL queries, Stored Procedures, Function Calls, etc...&nbsp;&nbsp; Up to this point, our lives have been pretty easy.&nbsp; We used Perfmon to track down where the problem is.&nbsp; IF, and I stress here, IF the problem is in SQL, then we are going to have to look at code some place in order to treat the symptom.&nbsp;&nbsp; Yep, I guess that means cracking the chest and looking at that evil stuff called code.</p>
<p>I'll get detailed about how to find this code and what to and what not to write in a future blog, but high level, you are going to need to look at your highest I/O queries, and start tuning.&nbsp;&nbsp; Adding Indexes, maybe roll-up tables, etc...&nbsp;&nbsp; Some absolute basics are...</p>
<ol>
<li>Don't query data that you don't plan to use.&nbsp; NO SELECT *!!</li>
<li>Always use a WHERE clause.</li>
<li>Create Non-Clustered indexes that SEEK the data, not scan.</li>
<li>Having a Clustered index is "Usually" a requirement.&nbsp; (Not required, but should be for 99% of the tables out there.</li>
<li>Be careful with SELECT DISTINCT, its better not to duplicate the data in the first place.</li>
</ol>
<p>I could go on forever there, but I have to stop.</p>
<p>To recap what we talked about here.&nbsp; We focused on just Memory Pressure.&nbsp; My primary tool for finding this is to use Performance Monitor (Perfmon).&nbsp; First look at the OS level, and then dig into SQL.&nbsp; You may need to reduce Max Memory to help the OS, but tuning Queries is going to be the best way to fight internal pressure.&nbsp;&nbsp; Just adding Memory will NOT fix the problem.&nbsp; You can't buy enough Memory to fix bad code, but you can give your best try.&nbsp; Most of us would turn to Profiler to find these queries, but I will direct you to the SYS.DM_EXEC_QUERY_STATS DMV.&nbsp; With just a few queries to that DMV, you can find the most expensive queries any way you want to slice and dice it.</p>
<p>&nbsp;</p>
<p>Eric, @SQLPilot<br /><a data-count="none" data-via="SQLPilot" href="https://twitter.com/share" class="twitter-share-button">Tweet</a>
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</p>]]></content:encoded>
    </item>
    <item>
      <title>Policy Based Managment - Part2</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlpilot/policy-based-managment-part2</link>
      <pubDate>Mon, 14 Feb 2011 04:47:00 GMT</pubDate>
      <dc:creator><![CDATA[Eric Backscheider]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sqlpilot/2011/02/14/policy-based-managment-part2/</guid>
      <description><![CDATA[Just to recap what I talked about before. In Part1 I showed you how to setup a Central Management...]]></description>
      <content:encoded><![CDATA[<p>Just to recap what I talked about before. In <a target="_blank" href="http://blogs.technet.com/b/sqlpilot/archive/2011/02/05/policy-based-managment-part1.aspx">Part1</a> I showed you how to setup a Central Management Server and what that meant.&nbsp; We then covered the start of Policies.&nbsp; How to import them, evaluate them, and then evaluate them on a Central Management Server.</p>
<p>This time we are going to cover how to automate the checking of several policies on a folder in the Central Management Server.&nbsp;&nbsp; </p>
<p>For this I am going to use a little help.&nbsp;&nbsp; I like to use the Enterprise Policy Management Framework on <a target="_blank" href="http://epmframework.codeplex.com/">Codeplex</a>.&nbsp;&nbsp; I think this is a great start to demo what is possible.&nbsp; It also provides us with a great little PowerShell script.&nbsp; Thanks @SQLGal for putting it up there to use.&nbsp; All of the things below can be downloaded so you can do this in just a short time.&nbsp;&nbsp; </p>
<p>This demo assumes you have SQL 2008, and SQL Server Reporting Services installed.&nbsp; It also assumes that you have imported all of the policies in <a target="_blank" href="http://blogs.technet.com/b/sqlpilot/archive/2011/02/05/policy-based-managment-part1.aspx">Part 1</a>.</p>
<p>First download all of the files from codeplex, once unzipped you should have 3 folders.</p>
<ul>
<li>0Setup Scripts</li>
<li>1Down Version Evaluation PS</li>
<li>2Reporting</li>
</ul>
<p>&nbsp;</p>
<p><b>STEP 1:</b><br />The first thing we need to do is to setup a database to collect all of this data.&nbsp;&nbsp; The demo assumes you have a MDW database for the Management Data Warehouse.&nbsp; You can use any database you like, but go ahead and create it now.<br />Open EPM_Create_Database_Objects.sql located in 0Setup Scripts.&nbsp; We need to modify a few lines, but first we need to make sure we are in Command Mode.&nbsp; In MSSMS click on Query -&gt; SQLCMD Mode.</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/4214.1.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/4214.1.jpg" border="0" /></p>
<p>When that is done you will see 3 lines gray out.&nbsp; Those are the lines you need to edit.<br />Set :SETVAR ServerName "WIN2008" to your server name :SETVAR ServerName "&lt;YourServerName&gt;"<br />Set :SETVAR ManagementDatabase "MDW" to your database name. :SETVAR ManagementDatabase "&lt;Your Database Name&gt;"</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/4617.2.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/4617.2.jpg" border="0" /></p>
<p>Once those two things are done, you can execute the script.&nbsp; This will create the tables to accept the results from the PowerShell script.</p>
<p>&nbsp;</p>
<p><b>STEP 2:</b><br />The next step is to put the PS1 file somewhere on the Central Management Server.&nbsp;&nbsp; Again it does not matter where, just as long as the SQL Agent can get to it.<br />Create that folder, and also create a folder named Results in that same area.<br />Now that the PS1 file is in its final home, we need to edit just a few lines in it.&nbsp;&nbsp; This file is just a text file, so open it in your favorite text editor.</p>
<p>&nbsp;Here is the block we are going to touch. <br /># Declare variables to define the central warehouse <br /># in which to write the output, store the policies <br />$CentralManagementServer = "WIN2008" <br />$HistoryDatabase = "MDW" <br /># Define the location to write the results of the <br /># policy evaluation.&nbsp; Delete any files in the directory. <br />$ResultDir = "e:\Results\" <br />$ResultDirDel = $ResultDir + "*.xml" <br />Remove-Item -Path $ResultDirDel <br /># End of variables</p>
<p>The only 3 lines we edit are... <br />$CentralManagementServer = "WIN2008" <br />$HistoryDatabase = "MDW" <br />$ResultDir = "e:\Results\"</p>
<p>Set those to the appropriate values and save the file.</p>
<p>&nbsp;&nbsp;</p>
<p><b>STEP 3:</b> <br />The next thing I like to do here is create a text file with the correct PowerShell call so I can keep that on the server also.&nbsp; So create a new text file.&nbsp; Below is a start, then you will need to modify for your information. <br />SL "&lt;Path to PS1 File&gt;" <br />.\EPM_EnterpriseEvaluation_3.0.0.ps1 -ConfigurationGroup "&lt;Central Management Folder&gt;" -PolicyCategoryFilter "Microsoft Best Practices: Maintenance" -EvalMode "Check" <br /><i>I need to break on a bit of a tangent here.&nbsp; Above we are putting in "Microsoft Best Practices: Maintenance".&nbsp; Each Policy that we make has a Category.&nbsp; You can make your own category, and then change this name.&nbsp; If you imported the policies like I did in Part 1, then you can use this name.&nbsp;&nbsp; Over time you will tweak the policies to you specific requirements, and then I would assume you use your own categories.</i></p>
<p>Okay, now just a few more things to do.&nbsp; Now that we have the script in place, and the execution command laid out, we need to add the reporting piece.&nbsp; This example was written for SQL 2008, so you will get some upgrade warnings if you open it in 2008R2.&nbsp;&nbsp; This is fine, and it works just fine. <br />Open up BIDS and then open a project.&nbsp; Navigate to \2Reporting\PolicyReports and open the project. <br />Once the project is open in BIDS you will have just a few areas to make modifications. <br />Shared Data Sources is the first.&nbsp; Double click on PolicyDW.rds.&nbsp; Now modify the connection string to the server that you created the database on.&nbsp; It should be localhost, but if you made it a named instance make sure it's correct.&nbsp; <br />The next step is to tell BIDS where to deploy (Install) this report.&nbsp;&nbsp;&nbsp; In Solutions Explorer, Right Click on PolicyReports (All the way at the top), and select Properties.</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/6840.3.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/6840.3.jpg" border="0" /></p>
<p>&nbsp;You will only need to modify the URL row here.&nbsp;&nbsp; </p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/5811.4.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/5811.4.jpg" border="0" /></p>
<p>Once that is done, we now need to deploy the project to the Reporting Server. <br />Click on Build -&gt; Deploy PolicyReports</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/6835.5.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/6835.5.jpg" border="0" /></p>
<p>If all goes well you will have the project deployed to your report server.&nbsp;&nbsp;&nbsp; Since we did not run the scripts yet, there will be no data to report on though.&nbsp;&nbsp; </p>
<p>&nbsp;</p>
<p><b>FINAL STEP:</b> <br />The final few steps are going to be testing the script, and then installing that script as a SQL Agent Job to run every day, week, or month. <br />To test run this script you need to be in Power Shell.&nbsp; The easiest way to get there is to go into MSSMS and right click on the server (Central Management Server), and then click Start PowerShell.&nbsp;&nbsp; You will get a black dos looking prompt, but it will be PowerShell. <br />Past in the code from above; <br />SL "&lt;Path to PS1 File&gt;" <br />.\EPM_EnterpriseEvaluation_3.0.0.ps1 -ConfigurationGroup "&lt;Central Management Folder&gt;" -PolicyCategoryFilter "Microsoft Best Practices: Maintenance" -EvalMode "Check"</p>
<p>You should see a window like this appear, and the script will be running.</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/6708.6.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/6708.6.jpg" border="0" /></p>
<p>If you want to check and see if it worked, you can either open the Reports you deployed or just check the table. <br />SELECT * FROM Policy.PolicyHistoryDetail</p>
<p>&nbsp;</p>
<p>Again I just want to point out that this is just one way to do this.&nbsp;&nbsp; The Polices and PowerShell script will do all of the "Magic", all you need to do is create the Policies and the Reporting mechanism you want.</p>
<p>&nbsp;&nbsp;</p>
<p>Eric, @SQLPilot<br /><a data-count="none" data-via="SQLPilot" href="https://twitter.com/share" class="twitter-share-button">Tweet</a>
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Policy Based Managment - Part1</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlpilot/policy-based-managment-part1</link>
      <pubDate>Sat, 05 Feb 2011 05:37:00 GMT</pubDate>
      <dc:creator><![CDATA[Eric Backscheider]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sqlpilot/2011/02/05/policy-based-managment-part1/</guid>
      <description><![CDATA[What DBA is overworked?&nbsp;&nbsp; What does your role mean?&nbsp; Do you Install and Maintain SQL,...]]></description>
      <content:encoded><![CDATA[<p>What DBA is overworked?&nbsp;&nbsp; What does your role mean?&nbsp; Do you Install and Maintain SQL, or do you monitor performance?&nbsp; Do you maintain the indexes, stats, and backups? Or, do you write and review code?&nbsp;&nbsp; Our role has change so much over the last decade.&nbsp; I get to see all variations of the role DBA.&nbsp;&nbsp; One thing I see consistently is inconsistency.&nbsp;&nbsp; Here in PFE, we have an engagement called a Risk Assessment.&nbsp;&nbsp; In this assessment, we look at 1, 2, or 3 instances and review them for performance, patching, configuration, etc...&nbsp;&nbsp; What I see week in and week out are servers that are built different, configured different, and maintained different.&nbsp;&nbsp; How can this be?&nbsp;&nbsp; We all have the same build document don't we?&nbsp;&nbsp; Yes, it starts that way, but depending on who built the OS, and who built SQL, some things are done and some are not.</p>
<p>How can we fix this?&nbsp;&nbsp; Policy based management can help.&nbsp;&nbsp; This is a take on the Policies in AD.&nbsp; If you want something to be set on EVERY computer, you make a Policy; well the same is true in SQL now.&nbsp;&nbsp; How do you know if a vender's install changes system settings?&nbsp; Do you monitor every system setting on every sql instance every week, month?&nbsp; My honest answer is I seriously doubt it.&nbsp;&nbsp; At least I have not found a single customer that does in 3 years of working as a PFE.&nbsp; I also did not do this when I was a DBA.</p>
<p>I'm going to take this post to talk about Policies, and how they can help you make some extra time.&nbsp;&nbsp; Please don't think this is time you can put your feet up and sip a Latte, because there is plenty of work to do, trust me, I see it :)&nbsp;&nbsp; </p>
<p>Just a bit if history... Back in my day (ha, just a few years ago) I also needed to do this "Enterprise Wide" stuff.&nbsp;&nbsp; My job consisted of checking logs, backups, jobs, and moving objects from dev to stage, to prod.&nbsp;&nbsp; The checking took 80% of my time as I had just around 100 servers that I was responsible for.&nbsp;&nbsp; So what got dropped?&nbsp; Well, I have to say it was the most fun stuff that did, TUNING.&nbsp;&nbsp; During that move from dev to stage, we were supposed to review the code and try and tune it.&nbsp;&nbsp; Re-write statements, add indexes, review the design, etc...&nbsp;&nbsp; None of that got done, unless of course you had a performance problem, then that was done at that moment.&nbsp;&nbsp; Usually with&nbsp;the boss standing behind you saying, "Is it up yet?".&nbsp;&nbsp;&nbsp; </p>
<p>Why the history? The reason is how we all addressed the exact same issue.&nbsp;&nbsp; I fixed it by writing LOTS of vbscripts trying to pull every detail of the first part of my job.&nbsp; I did this for two reasons.&nbsp; 1. Who wants to do the same exact thing over and over and over? (NOT ME!). 2. I wanted to do the COOL stuff and make things faster and challenge myself.&nbsp;&nbsp;&nbsp; I see these same kinds of scripts all over at my customers' sites now.&nbsp;&nbsp; Here is the main problem.&nbsp;&nbsp; There is usually one person who truly understands every little detail about them, and everyone else, just uses them.&nbsp;&nbsp; No biggie, well tell that to them when that person leaves the company, and you are left holding scripts that need to have a new feature added, or a bug fixed.&nbsp;&nbsp; Ok, ok, where is this leading?&nbsp; To Policy Based management of course.</p>
<p>Policies, introduced in SQL 2008 are a way to take the custom scripts out and still get the work done.&nbsp;&nbsp; All of the "Magic" happens in the policy itself, and then we can automate some things around it.&nbsp; Don't worry, I'll explain it.&nbsp;&nbsp; </p>
<p>Let's start very small.&nbsp;&nbsp; Let's say we want to check the last backup date of each database.&nbsp;&nbsp; Easy, we can use a policy.&nbsp; This policy happens to be shipped with the install of SQL. So let's add that policy first, and then we will see how to use it.</p>
<p>Adding the Policy...</p>
<ul>
<li>Go to a central server, preferably the Server you built in the first post I wrote, "Central Management Server".</li>
<li>Open Object Explorer, not Registered servers.</li>
<li>Open Management -&gt; Policy Management and right click on Policies&nbsp;&nbsp; &nbsp;</li>
<li><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/7282.1.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/7282.1.jpg" border="0" /></li>
<li>Click Import Policy...</li>
<li>Once that window opens, you will need to find the policies. Depending on your install path, this may be different, but here is mine. <i><span style="text-decoration: underline;">"C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Policies\DatabaseEngine\1033"</span></i></li>
<li>In that folder there are 50 different policies you can import. I recommend you import them all so you can play with them and see what is possible.</li>
<li>Now click import and in a few moments you will have them on the server.</li>
</ul>
<p>&nbsp;Ok, now the policy is here, we can go and evaluate it locally.&nbsp;&nbsp; You could do this on every 2008 server you have, but that's not really very powerful is it?&nbsp;&nbsp; First we must walk, later we will run.&nbsp;&nbsp; </p>
<p>If you open the policy's, you will find one called "Last Successful Backup Date".&nbsp;&nbsp; Lets do a quick run or Evaluation of this.&nbsp; Right click on the policy and then click "Evaluate"</p>
<p><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/6011.2.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/6011.2.jpg" border="0" /></p>
<p>&nbsp;When you do, a new window will open and you will see the policy run.&nbsp; It will show you the results of the policy as well as the details for each database it touched.</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/6765.3.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/6765.3.jpg" border="0" /></p>
<p>&nbsp;As you can see, I don't backup my local laptop instances very often, but that is good to show you this.&nbsp;&nbsp;&nbsp; Click on one of those "View" links under details and you will get a window like this...</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/5734.4.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/5734.4.jpg" border="0" /></p>
<p>&nbsp;As you can see, this policy is looking at the API Property of LastBackupDate.&nbsp; If that date is &lt; NOW() - 24 Hours, or older than 24 hours old, the policy will fail.</p>
<p>&nbsp;Ok, the cool stuff is out of the way, you have "Evaluated" your first policy, let's go take a look at what a policy looks like.&nbsp; Close all of those windows and get back to MSSMS, and look at all of the polices.&nbsp;&nbsp; Double click on Last Successful Backup Date.&nbsp; This will open a new window so you can see it in detail.</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/4643.5.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/4643.5.jpg" border="0" /></p>
<p>&nbsp;Click on the ... next to Check condition.</p>
<p>In this window, you will see the code that is to be evaluated.</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/0211.6.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/0211.6.jpg" border="0" /></p>
<p>Note: Facet: is grayed out.&nbsp; This is grayed out when you review or change the policy; this is not grayed out when you create a new one.</p>
<p>&nbsp;Ok, just to recap, we now know how to import a policy and evaluate it.&nbsp;&nbsp; All of this is being done locally for now, I don't want this blog post to turn into a book.&nbsp;&nbsp; There are several other directions I can take this, but I want to show you how this can be powerful, so we are going to evaluate this policy on all of the servers listed in your Central Management Server.&nbsp;&nbsp;&nbsp; We are going to do this in a manual way this time, and I'll show you how to automate it as well as expand polices in my next post.</p>
<p>Alright, it's time to click over to Registered servers and look at the Central Management Server.</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/0131.7.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/0131.7.jpg" border="0" /></p>
<ul>
<li>Right click on your server name, ebackschSSD in my case, and select Evaluate Polices...</li>
</ul>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/6763.8.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/6763.8.jpg" border="0" /></p>
<ul>
<li>In the new Window click the ... box and a new window will open. </li>
</ul>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/6758.9.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/6758.9.jpg" border="0" /></p>
<ul>
<li>Click the Server Radio button, and then find the name of the server you just Imported the polices too. Click Ok</li>
<li>You should now see a list of Polices that are on that instance. Scroll down and find the Last Successful Backup Date one and check the checkbox, and then click the Evaluate button.</li>
</ul>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/5732.10.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/5732.10.jpg" border="0" /></p>
<ul>
<li>5. You will now see a new window open and the policy will be evaluated for each database for each instance in that list.</li>
</ul>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/7144.11.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/7144.11.jpg" border="0" /></p>
<p>&nbsp;NOTE: You may notice the Server Names.&nbsp; We need to use SQL 2008 to evaluate the policies, but we can evaluate them on older versions of SQL.</p>
<p>In my next post, I'll walk through how to automate this process with Power Shell to show the full potential of Policy Based Management.&nbsp;&nbsp; I hope that you can see how this will help you better monitor your SQL Server Environment as a whole.&nbsp;&nbsp;&nbsp; I encourage you to go and play with this.&nbsp; Create some new Policies of your own.</p>
<p>&nbsp;</p>
<p>&nbsp;Eric, @SQLPilot<br /><a data-count="none" data-via="SQLPilot" href="https://twitter.com/share" class="twitter-share-button">Tweet</a>
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</p>]]></content:encoded>
    </item>
    <item>
      <title>SQL Server Central Management Server</title>
      <link>https://docs.microsoft.com/archive/blogs/sqlpilot/sql-server-central-management-server</link>
      <pubDate>Fri, 04 Feb 2011 06:49:00 GMT</pubDate>
      <dc:creator><![CDATA[Eric Backscheider]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sqlpilot/2011/02/04/sql-server-central-management-server/</guid>
      <description><![CDATA[Well I thought I would start with a subject I get to talk about almost every week.&nbsp;&nbsp; It's...]]></description>
      <content:encoded><![CDATA[<p>Well I thought I would start with a subject I get to talk about almost every week.&nbsp;&nbsp; It's the start of one of my favorite features of SQL 2008, and one that I feel is very powerful, but frequently overlooked.</p>
<p>Central Management Server</p>
<p>Why is this such a good thing?&nbsp;&nbsp; Well it's easy, and it makes the DBA's&nbsp;life a bit easier.&nbsp;&nbsp; Sounds like a Win-Win to me!&nbsp;&nbsp; For some background, I see very large Enterprise customers most weeks.&nbsp;&nbsp; These customers have DBA's and servers spread around the world.&nbsp;&nbsp; What does this one little feature do?&nbsp; Well it gives all DBA's a single list of <i>ALL</i> servers/instances.&nbsp;&nbsp; Doesn't sound like a big deal?&nbsp; Well if you have 300+ instances and 3000+ databases, it is.</p>
<p>This will let you build a structure around Dev, Test, Stage, QA, and Prod.&nbsp; Separate those further if you like to App team, responsible DBA, or Location, etc...&nbsp;&nbsp; Whatever works for your team.&nbsp;&nbsp;&nbsp; </p>
<p>Now just a quick walk through how to do this.&nbsp;&nbsp; First you need a SQL 2008 (2008 R2 Preferred) instance.&nbsp;&nbsp; Here is the good part, it does not need any huge server behind it.&nbsp;&nbsp; I do this on a Virtual Server most times.&nbsp; Once the instance and client tools are installed,&nbsp; we just need to open up Management Studio.</p>
<p>Once in MSSMS click on View -&gt; Registered Servers.</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/5556.1.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/5556.1.jpg" border="0" /></p>
<p>&nbsp;</p>
<p>After that is done you will see a new window show up there.&nbsp; It will be named Registered Servers and have a few items in a list.&nbsp; One of those items is a folder called Central Management Servers.&nbsp; Right click on that and click Register Central Management Server...</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/2262.2.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/2262.2.jpg" border="0" /></p>
<p>&nbsp;</p>
<p>That will open a new window to register a SQL instance.</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/2768.3.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/2768.3.jpg" border="0" /></p>
<p>&nbsp;</p>
<p>In this window add the instance that you are connected to.&nbsp;&nbsp; Yes, Register itself, you will see why later.</p>
<p>Once that is done, you should see a + sign next to Central Management Servers.&nbsp; Click that and you will see your server name listed there.&nbsp;&nbsp; Now we have a Central Management Server.&nbsp;&nbsp; </p>
<p>Hold on we still have a few things to do.&nbsp;&nbsp; I'm sorry to say that the Easy part is over.&nbsp;&nbsp; Here comes the hard part....&nbsp;&nbsp; You had your team have to come up with the structure of this folder layout.&nbsp;&nbsp;&nbsp;&nbsp; I guess this means we have to have a meeting, Yes it usually does, but it can be brief.&nbsp;&nbsp; I would recommend starting with something very simple.&nbsp;&nbsp; Dev, Test, Stage/QA, and Prod.&nbsp;&nbsp;&nbsp; Add a few servers to each one and then show what it can do.</p>
<p>First here is what it might look like.</p>
<p>&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/86/88/5415.4.jpg" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-86-88/5415.4.jpg" border="0" /></p>
<p>&nbsp;</p>
<p>&nbsp;Now that we have done all of that work, what did we get out of it?&nbsp;&nbsp; Well, go back to your desktop and open SQL 2008 R2 Management Studio.&nbsp;&nbsp; Do the exact same steps as above.</p>
<ul>
<li>View -&gt; Registered Servers</li>
<li>Right click on Central Management Servers and select Register Server.</li>
<li>This time, you need to add the name of that instance that you just used above.</li>
<li>If you followed all of the above steps, you should be able to see all of the folders and instances that you registered previously.</li>
</ul>
<p>&nbsp;</p>
<p>This is the first cool thing here.&nbsp;&nbsp; If all of the DBA's add this to their local install of Management Studio, then you ALL will have the exact same list of servers.&nbsp;&nbsp; If one of you add a new one, then you all get to see that latest and greatest list.</p>
<p>&nbsp;</p>
<p>There are a few things that you can do here, but this basically is a lead into Enterprise Management for SQL Server.&nbsp;&nbsp; Best of all, this is included with SQL, so no 3rd party products to buy.</p>
<p>&nbsp;</p>
<p>What else can I do?</p>
<ul>
<li>If you right click on your Central Management Server, you will see that you can Open "New Query" and "Evaluate Policies"</li>
<li>"New Query" this will let you run a query on all of the instance below. The query must be valid on all instances (SQL 2000, 2005, 2008, 2008R2) Try something quick like "Select @@version"</li>
<li>"Evaluate Policies" this one I won't get into detail about as it will be my next Blog Post, but this is one way to Evaluate Policies across the entire environment. This is how Policy Management for SQL starts, but it gets more powerful</li>
</ul>
<p>&nbsp;&nbsp;</p>
<p>Just a few things to tie it all up.&nbsp;&nbsp; </p>
<ul>
<li>SQL 2008R2 is preferred for this Central Server. If your building it new, why install an older version? </li>
<li>SQL 2008R2 Client is preferred on all of the clients.</li>
<li>All servers registered must be NT Authenticated. You will notice there is not an option for SQL User.</li>
<li>If one of you change this list on your PC, it will change the list for EVERYONE!</li>
</ul>]]></content:encoded>
    </item>
  </channel>
</rss>