<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Fort SQL</title><link>http://blogs.technet.com/b/fort_sql/</link><description>Information about SQL Server security.</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>SQL Server 2012 Virtual Labs</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/10/23/sql-server-2012-virtual-labs.aspx</link><pubDate>Tue, 23 Oct 2012 13:57:44 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3528180</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3528180</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/10/23/sql-server-2012-virtual-labs.aspx#comments</comments><description>&lt;p&gt;Want to try SQL Server 2012 without even installing it? Easy... use SQL Server 2012 Virtual Labs at &lt;a href="http://technet.microsoft.com/en-us/video/Hh913731"&gt;http://technet.microsoft.com/en-us/video/Hh913731&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3528180" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Off_2D00_Topic/">Off-Topic</category></item><item><title>Hiding SQL Server from External Crackers</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/10/15/hiding-sql-server-from-external-crackers.aspx</link><pubDate>Mon, 15 Oct 2012 14:24:33 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3526070</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3526070</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/10/15/hiding-sql-server-from-external-crackers.aspx#comments</comments><description>&lt;p&gt;We&amp;nbsp;harden SQL Server to minimize the threats to SQL Server from rouges/hackers and crackers, but it may be&amp;nbsp;equally important to harden systems other than SQL Server to protect our data. For example, coders and DBA's need to ensure that calls to SQL Server are protected from SQL Injection attacks. Another valuable tactic is to prevent bad guys from finding the servers with SQL Server on them, and we can help guard against that by disabling NetBIOS and Small Message Blocks (SMB) on Internet-connected servers that don't need them.&lt;/p&gt;
&lt;p&gt;The Database STIG makes clear that any unnecessary network protocols should be disabled on the server hosting an instance of SQL Sever, but what I'm pointing out in this post is that network protocols on other servers may also need to be secured to provide maximum security for SQL Server.&lt;/p&gt;
&lt;p&gt;If you have a web server or DNS server exposed to the Internet, as is very common, they normally don't need NetBIOS or SMB. If they're enabled and a cracker compromises one of them, they may be able to use them to find instances of SQL Server. The MSDN article "Security Considerations for a SQL Server Installation" (&lt;a href="http://msdn.microsoft.com/en-us/library/ms144228(v=sql.105).aspx"&gt;http://msdn.microsoft.com/en-us/library/ms144228(v=sql.105).aspx&lt;/a&gt;) covers this issue, among others.&lt;/p&gt;
&lt;p&gt;If you want to harden your web servers and DNS servers, here are links to articles descibing how to disable NetBIOS and SMB. Note that in Device Manager, you may have an entry of "NETBT" instead of "NetBios over TCP/IP" (both represent netbt.sys).&lt;/p&gt;
&lt;p&gt;How to Disable NetBIOS&lt;br /&gt;(Netbt.sys)&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms143696(v=SQL.90).aspx"&gt;http://msdn.microsoft.com/en-us/library/ms143696(v=SQL.90).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How to Disable SMB&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-US/library/ms143455(v=sql.90).aspx"&gt;http://msdn.microsoft.com/en-US/library/ms143455(v=sql.90).aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3526070" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/STIG/">STIG</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category></item><item><title>Managed Service Accounts</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/09/04/managed-service-accounts.aspx</link><pubDate>Tue, 04 Sep 2012 16:40:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3511767</guid><dc:creator>Quantum John</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3511767</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/09/04/managed-service-accounts.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Doh! Never mind the post below. If I had read more thoroughly (or if I had tested using MSAs with SQL Server) before posting, I would have realized MSAs are NOT supported with SQL Server. &lt;/strong&gt;At least, not according to the article in the first link below. Sorry to mislead you, and hopefully this will be able to work with SQL Server sooner or later.&lt;/p&gt;
&lt;p&gt;====================================================================================&lt;/p&gt;
&lt;p&gt;I've recently learned there's such as a thing as Managed Service Accounts (MSAs) in Active Directory if your domain controller is using Window Server 2008 R2 or Windows 7, and these accounts can significantly improve security. Why didn't I hear about this before? Probably because I'm a SQL Server specialist, not a Windows or Active Directory specialist. At any rate, I thought I'd pass this along in case I'm not the last person on the planet to get clued in.&lt;/p&gt;
&lt;p&gt;For an MSA, Active Directory will assign a 120-random-character password, change the password every 30 days, and manage the Service Principal Names (SPNs). The account can't be locked out, and system administrators don't have to maintain it.&lt;/p&gt;
&lt;p&gt;Security is improved because the passwords don't have to be maintained by humans and because an MSA can only be used by a service on one computer. It does take a little extra work in the beginning, though, as seen in this 4-step process:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create an MSA in Active Directory.&lt;/li&gt;
&lt;li&gt;Associate the MSA with a single computer.&lt;/li&gt;
&lt;li&gt;Install the MSA on its computer.&lt;/li&gt;
&lt;li&gt;Configure the service (e.g. SQL Server) to use the MSA.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This isn't in the Database STIG yet, but I expect it will show up there as a security best practice sooner or later.&lt;/p&gt;
&lt;p&gt;For more information on MSAs, start here &lt;a href="http://technet.microsoft.com/en-us/library/ff641729(v=ws.10)"&gt;http://technet.microsoft.com/en-us/library/ff641729(v=ws.10)&lt;/a&gt;&amp;nbsp;or here&amp;nbsp;&lt;a href="http://technet.microsoft.com/en-us/library/dd548356(v=WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/dd548356(v=WS.10).aspx&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3511767" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category></item><item><title>Alert On Low Disk Space, Including Mount Points</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/08/01/alert-on-low-disk-space-including-mount-points.aspx</link><pubDate>Wed, 01 Aug 2012 12:11:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3510434</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3510434</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/08/01/alert-on-low-disk-space-including-mount-points.aspx#comments</comments><description>&lt;p&gt;A common task for many database administrators (DBAs) is to set up alert emails to notify themselves when free disk space falls below a certain threshold (e.g. 10%). Before SQL Server ran on Windows clusters that included mount-points, there were a number of methods for checking free disk space, but most didn't report on the free space in mount point based disks. The easiest way to check free space on mount points is via Windows Management Instrumentation (WMI), and the easiest way to use WMI and create an alert is with PowerShell.&lt;/p&gt;
&lt;p&gt;Attached to this article is a WMI-PowerShell script that checks disk free space, including mount points. It's written to be used in a SQL Server Agent job, and send an email alert via SQL Server's Database Mail. You can run it against any number of servers from one script, and you'll need to replace several items in the script: Server name(s), the Database Mail profile name, the recipient email address(es), and optionally&amp;nbsp;change the warning threshold. It works like any other Agent job except you choose a job step Type of "PowerShell". Detailed notes on how to tweak and use the script are included as in-line notes in the script file.&lt;/p&gt;
&lt;p&gt;If you're not familiar with PowerShell and you'd like to view the code in color-coded formating, use the PowerShell ISE (Start menu/Accessories/Windows PowerShell/Windows PowerShell ISE). (ISE stands for Integrated Scripting Environment.)&lt;/p&gt;
&lt;p&gt;Here's a security-related wrinkle to WMI calls via PowerShell that's run by SQL Server Agent... If the service account that SQL Server Agent runs under has local admin permissions/privileges and you only run the script against the local server, you probably won't have any access-denied problems. Under any other scenarios, such as the Agent having limited local permissions or you target the script against remote servers and the Agent service account doesn't have admin permissions on those servers, you'll have to grant a WMI "Remote Execute" persmission to the Agent account on each server. To assign Remote Execute, run &lt;strong&gt;wmimgmt.msc&lt;/strong&gt; from the Start menu's Run box or from a command prompt, then&amp;nbsp;right-click on Properties, then select the Security tab, then expand the Root node, then select&amp;nbsp;the CIMV2 node, then click the Security button, then add the Agent account and scroll down to find and check the box for the "Remote Enable" permission. Simple, right? You were probably going to guess that anyway. ;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3510434" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-51-04-34/Check-disk-free-space-including-mount-points.ps1" length="8800" type="application/octet-stream" /><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Alerting/">Alerting</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Scripts/">Scripts</category></item><item><title>Enabling SSL on SQL Server Connections on Failover Clusters</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/07/05/enabling-ssl-on-sql-server-connections-on-failover-clusters.aspx</link><pubDate>Thu, 05 Jul 2012 16:18:49 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3507574</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3507574</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/07/05/enabling-ssl-on-sql-server-connections-on-failover-clusters.aspx#comments</comments><description>&lt;p&gt;With high-security SQL Server configurations we usually want to encyrpt the data-in-transit between SQL Server and the application servers. It's a little more trouble with a Failover Cluster Instance (FCI) than a stand-alone instance, and this post is primarily just a link to help me make sure I can easily find this article: &lt;a href="http://msdn.microsoft.com/en-us/library/ms191192.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms191192.aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'll point out a critical factor in the article is that &lt;strong&gt;you must be logged into the server with the SQL Server service account&lt;/strong&gt; when you open the SQL Server Configuration Manager to select the certificate, if the SQL Server service account is a domain account (and it should be if you're complying with the DoD Database STIG).&lt;/p&gt;
&lt;p&gt;Also, a community comment contains another critical element, that &lt;strong&gt;you have to edit the registry on each node&lt;/strong&gt;. See the note for more info and links to the details.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3507574" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/STIG/">STIG</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Encryption/">Encryption</category></item><item><title>SQL Server Ports</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/07/03/sql-server-ports.aspx</link><pubDate>Tue, 03 Jul 2012 13:59:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3505822</guid><dc:creator>Quantum John</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3505822</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/07/03/sql-server-ports.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;Quick cheat sheet for port numbers used by SQL Server services or services that SQL Server&amp;nbsp;may depend on:&lt;/p&gt;
&lt;table style="border: black 2px solid;" border="1" cellspacing="0" cellpadding="3"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;FTP (replication)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;HTTP endpoints, Reporting Services, HTTP replication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;135&lt;/td&gt;
&lt;td&gt;TCP &amp;amp; UDP&lt;/td&gt;
&lt;td&gt;RPC, WMI, MSDTC, SQL Agent file copy,&amp;nbsp;and TSQL Debugger (RPC used for multiple purposes including SSIS and clustering.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;137&lt;/td&gt;
&lt;td&gt;UDP&lt;/td&gt;
&lt;td&gt;File &amp;amp; Print Sharing (replication) and Cluster Admin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;138&lt;/td&gt;
&lt;td&gt;UDP&lt;/td&gt;
&lt;td&gt;File &amp;amp; Print Sharing (replication)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;139&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;FileStream and NetBIOS Session Service (clustering)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;443&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;HTTPS endpoints and Reporting Services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;445&lt;/td&gt;
&lt;td&gt;TCP &amp;amp; UDP&lt;/td&gt;
&lt;td&gt;FileStream, SMB (clustering), and File &amp;amp; Print Sharing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;UDP&lt;/td&gt;
&lt;td&gt;IPSec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;860&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;iSCSI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1024-5000&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;Original dynamic ports for named instances. (WinSock standard.)(See ports 49152-65535.) The DoD Database STIG requires static ports.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1433&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;SQL Server database engine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1434&lt;/td&gt;
&lt;td&gt;TCP &amp;amp; UDP&lt;/td&gt;
&lt;td&gt;SQL Server database engine, DAC,&amp;nbsp;and SQL Server's "Browse" button.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2382&lt;/td&gt;
&lt;td&gt;UDP&lt;/td&gt;
&lt;td&gt;Analysis Serviceswhen using dynamic ports with named instances&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2383&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;Analysis Services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2393-2394&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;Analysis Services version 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2725&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;Analysis Services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3260&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;iSCSI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3343&lt;/td&gt;
&lt;td&gt;UDP&lt;/td&gt;
&lt;td&gt;Cluster network driver&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3389&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;Remote Desktop Protocol (RDP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3882&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;DTS/SSIS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4022&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;Conventional port for the SQL Broker service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4500&lt;/td&gt;
&lt;td&gt;UDP&lt;/td&gt;
&lt;td&gt;IPSec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5000-5099&lt;/td&gt;
&lt;td&gt;UDP&lt;/td&gt;
&lt;td&gt;Clustering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5022&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;AlwaysOn's default port for primary and secondary replicas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7022&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;Conventional port for Database Mirroring&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8011-8031&lt;/td&gt;
&lt;td&gt;UDP&lt;/td&gt;
&lt;td&gt;Clustering internode RPC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;49152-65535&lt;/td&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;Latest dynamic ports for named instances. (WinSock standard.)(See ports 1024-5000.) The DoD Database STIG requires static ports.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Microsoft recommends non-default ports for maximum security.&lt;/p&gt;
&lt;p&gt;Check ports in use: SELECT ServerProperty("ProcessID")&lt;br /&gt;At a command prompt: "netstat -ano"&lt;/p&gt;
&lt;p&gt;&lt;b&gt;AlwaysOn Ports&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each instance w an Availability Group (AG) must have a database mirroring endpoint, and they endpoints bust be started (query sys.database_mirroring_endpoints and sys.tcp_endpoints).&lt;/li&gt;
&lt;li&gt;Logins from a remote server must have CONNECT permission. Each instance must have access to ports on all partners.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Resources: &lt;a href="http://msdn.microsoft.com/en-us/library/cc646023.aspx"&gt;Windows Firewall &amp;amp; SQL Server&lt;/a&gt;, &lt;a href="http://www.sqlservercentral.com/articles/networking/75481/"&gt;Ports that DBAs Need to Know&lt;/a&gt;, and &lt;a href="http://support.microsoft.com/kb/968872"&gt;KB968872&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3505822" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/STIG/">STIG</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category></item><item><title>Capture Custom Events in Profiler for Troubleshooting</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/06/21/capture-custom-events-in-profiler-for-troubleshooting.aspx</link><pubDate>Thu, 21 Jun 2012 17:05:35 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3505236</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3505236</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/06/21/capture-custom-events-in-profiler-for-troubleshooting.aspx#comments</comments><description>&lt;p&gt;User configurable events have been available in SQL Server since at least version 2000, but aren't often used, I suspect just because DBA's aren't familiar with them. Here's a screen shot of the Events Selection page of the Trace Properties for a SQL Server Profiler trace:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/3603.Profiler_5F00_UserConfigurable.png"&gt;&lt;img border="0" alt="" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/3603.Profiler_5F00_UserConfigurable.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Despite having all of the user configurable events selected, nothing will show up in the trace if you don't create custom events to feed the trace. The easiest way is to use sp_trace_generateevent in your T-SQL code, such as inside a trigger. Here's an example from inside a trigger:&lt;/p&gt;
&lt;p&gt;EXEC sp_trace_generateevent 82, N'Trigger fired.'&lt;/p&gt;
&lt;p&gt;You can use 82-91 as the first argument, which corresponds to UserConfigurable events 0-9, and then a unicode message (just put an N right before your single-quote delimited message).&lt;/p&gt;
&lt;p&gt;When you use custom events like this, you'll often want to capture only the UserConfigurable events, thereby cutting out all the events you don't care about.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/4428.Profiler_5F00_UserConfigurable2.png"&gt;&lt;img border="0" alt="" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/4428.Profiler_5F00_UserConfigurable2.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3505236" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Off_2D00_Topic/">Off-Topic</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Debug/">Debug</category></item><item><title>Note to self on AlwaysOn...</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/05/09/note-to-self-on-alwayson.aspx</link><pubDate>Wed, 09 May 2012 14:57:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3496972</guid><dc:creator>Quantum John</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3496972</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/05/09/note-to-self-on-alwayson.aspx#comments</comments><description>&lt;p&gt;I came up with the idea that perhaps we could let clients connect to a database in an AlwaysOn Availability Group (AG) by the current instance name instead of the virtual network name (VNN)&amp;nbsp;if the cluster service crashed.&amp;nbsp;This idea&amp;nbsp;does &lt;b&gt;not&lt;/b&gt; work.&lt;/p&gt;
&lt;div&gt;Microsoft Consultant Don Scott&amp;nbsp;set up&amp;nbsp;a very simple 2-node cluster with a stand-alone instance of SQL Server 2012 on each node and 1 availability group with 1 database in it, and we could connect to the database by it's&amp;nbsp;VNN&amp;nbsp;or by connecting to the current instance name, as expected. However, when we turned off the cluster service on both nodes to simulate a cluster service failure, we could no longer connect to the database by it's virtual name, as expected, but we could also not connect to the database through the current instance name. In SQL Server Management Studio (SSMS), the database icon listed "Recovery pending" after the name of the database, even though this was the primary replica. The secondary replica didn't even show up in SSMS with the cluster service off.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Even though the "recovery pending" status didn't make sense to us, we tried "RESTORE DATABASE &amp;lt;dbname&amp;gt; WITH RECOVERY" and got a very strange error message: "Msg 3148, Level 16, State 3; This restore statement is invalid in the current context. The 'Recover Data Only' option is only defined for secondary filegroups when the database is in an online state. When the database is in an offline state filegroups cannot be specified." This is strange because this database only had the default primary filegroup and it was online. We checked SSMS to confirm the database was online, and the "Bring Online" option was not available in SSMS, but the "Take Offline" option was available, confirming the database was still online despite the error message.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Moral of the story: When using AlwaysOn, keep at least half your cluster nodes/witness healthy, because if the cluster goes down completely, AlwaysOn goes down.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Other notes:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;With this test configuration (2-node cluster, each with Non-FCI, 1 availability group, all functioning correctly): When we evicted the primay replica node from the cluster and restarted the node, we expected the availability group to be disabled, but instead it completely ceased to exist (no trace of it remained to&amp;nbsp;be displayed&amp;nbsp;in SSMS). The database was&amp;nbsp;then a&amp;nbsp;normal database without an availability group.&lt;/li&gt;
&lt;li&gt;When creating or altering an Availability Group, SQL Server interacts with the Windows cluster service to automatically create the Virtual Network Name for the AG in the cluster service.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3496972" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Off_2D00_Topic/">Off-Topic</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Error/">Error</category></item><item><title>Installing SQL Server in a High-Security Domain, Part II</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/04/04/installing-sql-server-in-a-high-security-domain-part-ii.aspx</link><pubDate>Wed, 04 Apr 2012 19:13:29 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3490376</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3490376</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/04/04/installing-sql-server-in-a-high-security-domain-part-ii.aspx#comments</comments><description>&lt;p&gt;In &lt;a href="http://blogs.technet.com/b/fort_sql/archive/2009/12/17/installing-reporting-services-2008.aspx"&gt;this article&lt;/a&gt;, I pointed out some of the most common permissions failures when installing SQL Server in an environment where security has been hardened, such as the removal of the Debug Programs permission. In my experience, "hardened" usually means some default permissions have been removed from various accounts.&lt;/p&gt;
&lt;p&gt;Recently some colleagues had failures while attempting to install SQL Server 2008 R2 on a VMware virtual Windows cluster, even though they had ensured their installation account&amp;nbsp;had the 3 privileges I covered in the previous article. One of the difficulties with these types of failures is that you don't get an error saying something clear like "Sorry, you don't have the Debug Privileges permission," so it can be a little troublesome to figure out exactly which permissions&amp;nbsp;are missing, if any. In this case, my colleagues were able to successfully install SQL Server after adding the "Act as part of the operating system" and "Logon as a service" permissions to the installation account. I'm going to repeat myself to emphasize they added these permissions to the&lt;strong&gt; installation account&lt;/strong&gt; (the account they were logged in as while running the installer). That difference&amp;nbsp;allowed their install to succeed, but if you use this remedy, remember to remove those permissions from the installation account after you finish the install.&lt;/p&gt;
&lt;p&gt;Did they need both of those are just one of them? We don't know, they didn't uninstall and reinstall with just one of them to narrow it down. If you gain any insight on what security settings cause this problem, and whether or not only one of these permissions is needed to succeed, please let me know.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3490376" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Error/">Error</category></item><item><title>SQL Server Installation Center 2012</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/03/07/sql-server-installation-center-2012.aspx</link><pubDate>Wed, 07 Mar 2012 17:35:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3485271</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3485271</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/03/07/sql-server-installation-center-2012.aspx#comments</comments><description>&lt;p&gt;As a reminder for myself when I can't fire up the Installation Center, here are the screen shots. To make it slightly more interesting, I'm adding some notes about the differences from the 2008 R2 version. I'm also attaching a Word doc with the 2012 and 2008 R2 versions side by side for a friend who likes such things. (You can click on each image to get a full-size version.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Planning Page:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/6472.Planning-Page.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/6472.Planning-Page.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;First, 2012 adds &amp;ldquo;How to Get SQL Server Data Tools&amp;rdquo; which is a link to a web article. I think they should have called it &amp;ldquo;SQL Server Data Modeling Tools&amp;rdquo; since that&amp;rsquo;s what these Visual Studio tools are for.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Next, they&amp;rsquo;ve removed a link to &amp;ldquo;Setup Documentation&amp;rdquo;, which puzzles me, since it would seem to be very appropriate. I hope they&amp;rsquo;ll put it back, but in the meantime, here&amp;rsquo;s the link to the 2012 version of this article: &lt;a href="http://msdn.microsoft.com/en-us/library/bb500469(v=sql.110).aspx"&gt;http://msdn.microsoft.com/en-us/library/bb500469(v=sql.110).aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The addition of three new articles make up the remaining differences: &amp;ldquo;How to Get started with Reporting Services SharePoint Integration on a Standalone Server&amp;rdquo;; &amp;ldquo;Install SQL Server Migration Assistant (SSMA)&amp;rdquo;; and &amp;ldquo;How to apply SQL Server updates&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Installation Page:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/8737.Installation-Page.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/8737.Installation-Page.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Here we've removed the &amp;ldquo;Search for product updates&amp;rdquo;, but as you&amp;rsquo;ll see, they&amp;rsquo;ve simply moved it to the Maintenance page, which is a more appropriate place for it than here on the Installation page.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Maintenance Page:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/0207.Maintenance-Page.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/0207.Maintenance-Page.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Same as the previous version except this is the new home of the search-for-updates item.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tools Page:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/0677.Tools-Page.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/0677.Tools-Page.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are three changes here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &amp;ldquo;Upgrade Integration Services packages&amp;rdquo; link has been dropped.&lt;/li&gt;
&lt;li&gt;A link to an article on &amp;ldquo;Microsoft Assessment and Planning (MAP) Toolkit for SQ Server&amp;rdquo; has been added. MAP is a separate download, but it will let you scan your network for instances of SQL Server, MySQL, Oracle, and Sybase in addition to numerous other features.&lt;/li&gt;
&lt;li&gt;A link to &amp;ldquo;PowerPivot Configuration Tool&amp;rdquo; has been added, but is greyed out until PowerPivot has been installed first.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resources Page:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/5282.Resources-Page.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/5282.Resources-Page.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;No changes on this page.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advanced Page:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/5635.Advanced-Page.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/5635.Advanced-Page.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;No changes on this page.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Options Page:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/0871.Options-Page.jpg"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-22/0871.Options-Page.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The only difference to the items on this page is that we've dropped support for ia64 (Itanium processors). And yes, the dark black line is where I obfuscated the username in the install path.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3485271" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-48-52-71/SQL-Server-Installation-Center-2012-vs-2008-R2.docx" length="1755008" type="application/octet-stream" /><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Off_2D00_Topic/">Off-Topic</category></item><item><title>Does the DoD STIG require Transparent Database Encryption (TDE)?</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/02/23/does-the-dod-stig-require-transparent-database-encryption-tde.aspx</link><pubDate>Thu, 23 Feb 2012 21:47:52 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3482865</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3482865</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/02/23/does-the-dod-stig-require-transparent-database-encryption-tde.aspx#comments</comments><description>&lt;p&gt;Does the DoD STIG require Transparent Database Encryption (TDE)?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The short answer is: It depends on whether or not the Data Owner says the data must be encrypted.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The current version of the DoD Database STIG is v8r1. Here are two relevant sections from that document:&lt;/p&gt;
&lt;p&gt;3.1.4.3&lt;br /&gt;Unique security requirements (encryption of sensitive data)&lt;br /&gt;Access to sensitive data may not always be sufficiently protected by authorizations and requires encryption. In some cases, the required encryption may be provided by the application accessing the database. In others, the DBMS may be configured to provide the data encryption. When the DBMS provides the encryption, &lt;span style="background-color: #ffff00;"&gt;the requirement must be implemented as identified by the Information Owner&lt;/span&gt; to prevent unauthorized disclosure or access.&lt;br /&gt;&amp;bull; (DG0106: CAT II) The DBA will ensure security requirements specific to the use of the database are configured as identified in the System Security Plan.&lt;/p&gt;
&lt;p&gt;3.3.5&lt;br /&gt;Encryption for Confidentiality - Data at Rest (ECCR)&lt;br /&gt;Where access controls do not provide complete protection of sensitive data, encryption can help to close the gap. Where privileged users do not have a need-to-know, where files are stored externally to the database, where application user roles cannot be restricted by privileges to single rows and columns of data to those they need to access, encryption can provide the required level of protection.&lt;br /&gt;&amp;bull; (DG0068: CAT II) The DBA will ensure applications that access the database are not used with options that display the database account password on the command line.&lt;br /&gt;&amp;bull; &lt;span style="background-color: #ffff00;"&gt;(DG0090: CAT II) The IAO/DBA will ensure sensitive data is encrypted within the database where required by the Information Owner.&lt;br /&gt;&lt;/span&gt;&amp;bull; (DG0092: CAT II) The DBA will ensure database data files are encrypted where encryption of sensitive data within the DBMS is not available.&lt;/p&gt;
&lt;p&gt;While the Database STIG is a generic document, Security Readiness Review (SRR) documents are brand and version specific.&lt;strong&gt; The latest SRR for SQL Server is v8r1-2, and here are a couple of relevant sections:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;4.53 DG0090: DBMS sensitive data identification and encryption&lt;br /&gt;Description: Sensitive data stored in unencrypted format within the database is vulnerable to unauthorized viewing.&lt;br /&gt;Check:&lt;span style="background-color: #ffff00;"&gt; If no data is identified as being sensitive or classified by the Information Owner, in the System Security Plan or in the AIS Functional Architecture documentation, this check is Not a Finding.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;4.54 DG0092: DBMS data file encryption&lt;br /&gt;Description: Where access controls do not provide complete protection of sensitive or classified data, encryption can help to close the gap. Encryption of sensitive data helps protect disclosure to privileged users who do not have a need-to-know requirement to view the data that is stored in files outside of the database. Data encryption also provides a level of protection where database controls cannot restrict access to single rows and columns of data.&lt;br /&gt;Check: Review the System Security Plan and/or the AIS Functional Architecture documentation to discover sensitive or classified data identified by the Information Owner that requires encryption. &lt;span style="background-color: #ffff00;"&gt;If no sensitive or classified data is identified as requiring encryption by the Information Owner, this check is Not a Finding.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;So, if a data owner asks you if their data should be encrypted, what should you tell them? I discuss some of the issues you should consider in &lt;a href="http://blogs.technet.com/b/fort_sql/archive/2010/05/10/enabling-transparent-data-encryption-tde.aspx" target="_blank"&gt;this article&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'll also mention that the SharePoint STIG includes a requirement that seems to say that the DoD requires every SharePoint database to be encrypted with TDE. Fortunately, that is &lt;strong&gt;not&lt;/strong&gt; the case, and their requirement is consistent with the Database STIG: It depends on the decision of the Data Owner.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DISA Clarification on SharePoint STIG&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Action Description:&lt;/strong&gt; Customer has a question regarding the intent of the check V-28066 SRG-APP-000188-COL-000134 from the SharePoint STIG. &lt;br /&gt;&lt;strong&gt;Status or Resolution Summary:&lt;/strong&gt; &lt;span style="background-color: #ffff00;"&gt;The data only has be encrypted in the SQL database if it is required by the Data Owner. This is rare.&lt;/span&gt; There is another requirement that covers protection of data removed from the database, so that's not applicable here. So no, you wouldn't encrypte unless there is a mission requirement.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3482865" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/STIG/">STIG</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/SRRs/">SRRs</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Encryption/">Encryption</category></item><item><title>SQL Server 2012 release date: March 7, 2012</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/01/24/sql-server-2012-release-date-march-7-2012.aspx</link><pubDate>Tue, 24 Jan 2012 16:05:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3476980</guid><dc:creator>Quantum John</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3476980</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/01/24/sql-server-2012-release-date-march-7-2012.aspx#comments</comments><description>&lt;p&gt;&lt;span&gt;&amp;nbsp;It's official, SQL Server 2012 goes on the market on Wednesday, March 7th, 2012!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update on Feb 27, 2012:&lt;/strong&gt; Rats. I'm always careful not to divulge any confidential information, and I'm sure I got this date from an official source that did NOT state that it was confidential, and therefore I shared the news. Just a few minutes ago, I received an email that says that the date I posted may be wrong and the official dates are still confidential. As if it's not bad enough that I posted wrong info, and that the info is supposed to be confidential, I can't remember where I originally got the date I posted so I can't really defend myself. Rats.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update on March 6, 2012:&lt;/strong&gt; Okay, this time I'm including the link to my info source: &lt;a href="http://www.microsoft.com/Presspass/press/2012/mar12/03-06SQLServer12PR.mspx"&gt;http://www.microsoft.com/Presspass/press/2012/mar12/03-06SQLServer12PR.mspx&lt;/a&gt;. Today, SQL Server 2012 has been released to manufacturing (RTM). At the moment of this update, it is still not available on MSDN. &lt;strong&gt;2nd Update on March 6:&lt;/strong&gt; Register now for the virtual launch on March 7th: &lt;a href="http://www.sqlserverlaunch.com/ww/Home"&gt;http://www.sqlserverlaunch.com/ww/Home&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Last Update:&lt;/strong&gt; SQL Server 2012 hit "general availability" on April 2, 2012. &amp;nbsp;&lt;a href="http://blogs.technet.com/b/dataplatforminsider/archive/2012/04/02/sql-server-2012-is-generally-available.aspx?prod=zSQLz&amp;amp;tech=zCLz_zBIz&amp;amp;type=zDLz_zBLz"&gt;http://blogs.technet.com/b/dataplatforminsider/archive/2012/04/02/sql-server-2012-is-generally-available.aspx?prod=zSQLz&amp;amp;tech=zCLz_zBIz&amp;amp;type=zDLz_zBLz&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3476980" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Off_2D00_Topic/">Off-Topic</category></item><item><title>SQL Server Accounts</title><link>http://blogs.technet.com/b/fort_sql/archive/2012/01/09/sql-server-accounts.aspx</link><pubDate>Mon, 09 Jan 2012 18:40:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3474585</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3474585</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2012/01/09/sql-server-accounts.aspx#comments</comments><description>&lt;p&gt;Sometimes I run into established DBA's who have a little confusion regarding the different &lt;em&gt;types&lt;/em&gt; of accounts used with SQL Server. I suspect that kind of confusion may come from a history of installing/experimenting with SQL Server on a workstation or laptop where they do everything under a single account. The biggest problem with a single account for everything is that it's a major violation of&amp;nbsp;the security principle of least-privileges. Instead, DBA's should think in terms of four different types of accounts, so I hope this list will clear up this issue:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Installation Account:&lt;/strong&gt; This is the Windows account the person is logged in as when they are installing SQL Server, and it needs maximum privileges (permissions) for the installation process to be able to accomplish everything it needs to do. Because of these maximum privileges, this installation account should not be used for normal DBA work, nor for service accounts, nor for user or application accounts. In high-security environments, you may need to double check that your installation account has all the privileges needed before you start the install (&lt;a href="http://tinyurl.com/7f8czcs" target="_blank"&gt;http://tinyurl.com/7f8czcs&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Service Accounts (aka 'startup' account):&lt;/strong&gt;&amp;nbsp;A service account is&amp;nbsp;a Windows account that stores and controls the privileges for a service-oriented application, such as the SQL Server database engine, SQL Server Agent, Reporting Services, Analysis Services, Integration Services, or the Full-text Service. When a service&amp;nbsp;starts,&amp;nbsp;it essentially logs into&amp;nbsp;Windows using the credentials of its service account.&amp;nbsp;These service accounts must&amp;nbsp;exist before you&amp;nbsp;install&amp;nbsp;SQL Server&amp;nbsp;services, but you do NOT need to assign all the privileges they'll need because SQL Server's install process will do that,&amp;nbsp;assuming&amp;nbsp;your installation account has&amp;nbsp;all the&amp;nbsp;privileges it needs.&amp;nbsp;Each instance of each service on each server should have its own&amp;nbsp;unique service account, so if you have&amp;nbsp;the SQL Server database engine, SQL Server Agent, and the Full-text service all&amp;nbsp;installed on&amp;nbsp;50 servers, you&amp;nbsp;need 150 service accounts (see &lt;a href="http://msdn.microsoft.com/en-us/library/cc281953.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc281953.aspx&lt;/a&gt;&amp;nbsp;or the DoD Database STIG). DBA's who are not held to best practices often compromise on this issue, and here are the two most common compromises I've seen: #1,&amp;nbsp;Using one service account per server (e.g. the database engine, Agent, SSRS, etc. all use the same service account, but only on one server); #2, Use one service account&amp;nbsp;per type of service (e.g. every instance of the database engine uses the same service account, every instance of Reporting Services uses the same service account which is different from the engine's service account) . These compromises may be common, but they reduce security and are NOT best practices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Administrator Accounts:&lt;/strong&gt;&amp;nbsp;The principle of role-based security requires a Windows domain &lt;strong&gt;group&lt;/strong&gt; for DBA's, where each DBA should have their normal Windows account as a member of that group, and the SQL Server Sysadmin server role should only be assigned to that group. No individual DBA accounts should have SQL Server system administrator rights; such rights should only come through membership in the DBA group.&amp;nbsp;SQL Server system administrative privileges should be restricted to only those DBAs authorized by the system's Information Assurance Officer.&amp;nbsp;I'll also mention here that high-security best practices require that the built-in "sa" account be both renamed and disabled, and on version 2005 and earlier, the "Builtin\Administrators" group should be removed to ensure that operating system administrators do not get SQL Server admin privileges.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;User/Application Accounts:&lt;/strong&gt;&amp;nbsp;Users and applications use Windows accounts to connect to SQL Server, and to comply with the least-privileges principle, each user and application must have its own account, which should normally not have sufficient privileges to function as an installer account, a service account, or an admin account. Furthermore, permissions should not be assigned directly to user/application accounts, but to Windows groups that the user/application accounts are members of. Stating this another way, each unique set of privileges (permissions) should be assigned to a Windows group only, and each user or application account should be a member of the group that carries the privileges that account needs. For example, if the Contoso\Joe and Contoso\Jane user accounts need the db_owner role for the Sales database, create a Windows group such as Contoso_Sales_Data, assign the db_owner role to the Contoso_Sales_Data group, and make the Contoso\Joe and Contoso\Jane accounts members of that group. This role-based security method should be used even if some groups end up with only one member. It may seem like role-based access controls are a lot of extra trouble, but the benefits it provides are worth it for enterprise-class organizations.&lt;/p&gt;
&lt;p&gt;Here are the most relevant sections of the DoD Database STIG (V8R1):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2.3 Database Authorizations&lt;/li&gt;
&lt;li&gt;3.3.11 Least Privilege&lt;/li&gt;
&lt;li&gt;List of requirements in 3.3.11.1 and 3.3.11.2: DG0005, DG0008, DG0040, DG0041, DG0063, DG0077, DG0080, DG0085, DG0086, DG0116, DG0119, DG0120, DG0121, DG0124&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;For any SQL Server security newbies, I'll also point out here that a best practice is to only use Windows authentication (mixed mode authentication), as opposed to SQL Server logins. I think the main reason for this is that SQL Server logins have password hashes stored in SQL Server, and obviously, Windows password hashes are stored elsewhere. The only time a SQL Server login should be used is&amp;nbsp;when you have a poorly written 3rd-party application that isn't capable of connecting with a Windows account.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3474585" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/STIG/">STIG</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category></item><item><title>Get Rid of Deadlocks</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/12/12/get-rid-of-deadlocks.aspx</link><pubDate>Mon, 12 Dec 2011 19:23:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3470387</guid><dc:creator>Quantum John</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3470387</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/12/12/get-rid-of-deadlocks.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Locks&lt;/strong&gt; are used by relational database management systems to increase user concurrency (more users) while guaranteeing data consistency. A &lt;strong&gt;deadlock&lt;/strong&gt; is when two locks interfere each other, and&amp;nbsp;is caused by&amp;nbsp;one process locking a row, page, partition, or table while it waits for another row, page, partition, or table to become available, but the one it's waiting on is locked by another process that's waiting for what the first process has locked. When that happens, SQL Server will detect it and roll back one of them (the one that requires the least work to redo will be the one that gets rolled back).&lt;/p&gt;
&lt;p&gt;Occasional deadlocks&amp;nbsp;are common, but it's uncommon for them to occur so often that they become a&amp;nbsp;problem. Deadlocking does become a problem sometimes, though, and when&amp;nbsp;my customers run into it, they usually ask for my assistance. While there are many articles about how to detect deadlocks, I haven't found much info about how to eliminate them, reduce them, or minimize their impact, so I'm going to list all the alternatives I'm aware of here, both for future reference for myself and in case it might help someone else:&lt;/p&gt;
&lt;p&gt;SQL Server-based changes (DBA tasks):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Change indexes.&lt;/strong&gt; After you enable the 1204 and 1222 trace flags and determine which indexes are getting deadlocked, you can often eliminate deadlocks by adding an index, changing an index, or every once in a while by deleting an index. (See &lt;a href="http://msdn.microsoft.com/en-us/library/ms178104.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms178104.aspx&lt;/a&gt;.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable page-level and row-level&amp;nbsp;locking.&lt;/strong&gt; Page and row locking are allowed by default, but if someone's turned&amp;nbsp;them off, you might need to consider turning&amp;nbsp;them back on. (See &lt;a href="http://technet.microsoft.com/en-us/library/ms189076.aspx"&gt;http://technet.microsoft.com/en-us/library/ms189076.aspx&lt;/a&gt;&amp;nbsp;and &lt;a href="http://technet.microsoft.com/en-us/library/ms188388.aspx"&gt;http://technet.microsoft.com/en-us/library/ms188388.aspx&lt;/a&gt;.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Turn on row-versioning.&lt;/strong&gt; (See &lt;a href="http://msdn.microsoft.com/en-us/library/ms177404.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms177404.aspx&lt;/a&gt;.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Turn off parallel operations.&lt;/strong&gt; If parallel operations are&amp;nbsp;possible (the server has multiple processors/cores) and allowed, it's possible that turning it off (by setting MaxDOP to 1) will reduce or eliminate deadlocking.&amp;nbsp;You should avoid this if something else will work, so that most workloads can benefit from parallelization. (See &lt;a href="http://msdn.microsoft.com/en-us/library/ms181007.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms181007.aspx&lt;/a&gt;.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Code-based changes (Developer tasks):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Change code&lt;/strong&gt; to trap SQL Server 1205 errors and resubmit the request. A 1205 error means the request was chosen as a deadlock victim, and a try/catch can resubmit without the user ever being aware of it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redesign the application&lt;/strong&gt; to ensure that all database requests are serialized. Depending on the application, that can be easy, or it can be a major effort requiring the introduction of middleware.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If anyone else know of any other options, please let me know in the comments!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3470387" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Off_2D00_Topic/">Off-Topic</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Debug/">Debug</category></item><item><title>The Database STIG's System Security Plan</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/11/10/the-database-stig-s-system-security-plan.aspx</link><pubDate>Thu, 10 Nov 2011 19:17:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3464515</guid><dc:creator>Quantum John</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3464515</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/11/10/the-database-stig-s-system-security-plan.aspx#comments</comments><description>&lt;p&gt;The Database STIG requires a written System Security Plan, and it's the responsibility of the Information Assurance Officer (IAO) to create it (see section 3.1.9 below). Although the DBA doesn't create it, the DBA can advise the IAO, and the DBA is required to maintain compliance with the security plan.&lt;/p&gt;
&lt;p&gt;The following excerpts are from the&amp;nbsp;Database STIG, V8R1, and include every reference to "Security Plan":&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3.1.4.3 Unique security requirements (encryption of sensitive data) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Access to sensitive data may not always be sufficiently protected by authorizations and requires encryption. In some cases, the required encryption may be provided by the application accessing the database. In others, the DBMS may be configured to provide the data encryption. When the DBMS provides the encryption, the requirement must be implemented as identified by the Information Owner to prevent unauthorized disclosure or access.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;(DG0106: CAT II) The DBA will ensure security requirements specific to the use of the database are configured as identified in the System Security Plan. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3.1.4.5 Restoration priority of subsystems is identified &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;When DBMS service is disrupted, the impact it has on the overall mission of the organization can be severe. Without the proper assignment of the priority to be placed on restoration of the DBMS and its subsystems, restoration of DBMS services may not meet mission requirements.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;(DG0108: CAT III) The IAO will ensure the restoration priority of the database and its supporting subsystems are identified in the System Security Plan. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3.1.6 Partitioning the Application (DCPA) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;[content skipped]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;(DG0109: CAT II) The IAO will ensure the DBMS host is dedicated to support of the DBMS and is not shared with other application services including web, application, file, print, or other services unless mission or operationally required and documented in the System Security Plan. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3.1.9 IA Documentation (DCSD) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;A System Security Plan defines&lt;/span&gt; the security procedures and policies applicable to the AIS. It includes definition of responsibilities and qualifications for those responsible for administering the security of the AIS [Automated Information System]. For databases, this includes specifically the DBA in addition to the standard SA and IAO roles. Without a security plan, unqualified personnel may be assigned responsibilities that they are incapable of meeting and the database security is prone to an inconsistent and incomplete implementation.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;(DG0153: CAT III) The IAO will assign and authorize DBA responsibilities for the DBMS. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;(DG0156: CAT III) The IAM will assign and authorize IAO responsibilities for the DBMS. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;(DG0154: CAT III) The IAO will ensure the DBMS is included in or has defined for it a System Security Plan. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3.3.4 Changes to Data (ECCD) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The responsibility for managing the auditing configuration for data access may or may not fall to the DBA. In some cases, applications may incorporate their own auditing capability. Where the application depends on the DBMS to provide the auditing of changes to data, the responsibility for auditing for changes to data falls to the DBA. Auditing of changes to sensitive data can provide not only accountability, but also the ability to restore data to the correct value or content.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;(DG0031: CAT II) The DBA will configure auditing of access or changes to data in accordance with the application requirements specified in the System Security Plan. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3.3.8 Interconnections among DoD systems and Enclaves (ECIC) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Applications that access databases and databases connecting to remote databases that differ in their assigned classification levels may expose sensitive data to unauthorized clients. Any interconnections between databases or applications and databases differing in classification levels are required to comply with interface control rules. This requirement is covered in depth in the &lt;i&gt;Enclave STIG &lt;/i&gt;and is listed here to heighten awareness of the requirement during application and DBMS design and planning.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;(DG0171: CAT II) The DBA will ensure interconnections between databases or other applications operating at different classification levels are identified and their communications configured to comply with the interface controls specified in the System Security Plan. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3.3.10 Logon (ECLO) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;[content skipped]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;&amp;nbsp;(DG0073: CAT II) The DBA will configure the DBMS to lock database accounts after three or an IAO-specified number of consecutive unsuccessful connection attempts within a 60 minute period. The counter may be reset to 0 if a third failed logon attempt does not occur before reset. Where this requirement is not compatible with the operation of a front-end application, the unsuccessful logon count and time will be specified and the operational need documented in the System Security Plan. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;[requirement skipped]&lt;/p&gt;
&lt;p class="Default"&gt;&lt;i&gt;(DG0134: CAT II) The DBA will configure where supported by the DBMS a limit of concurrent connections by a single database account to the limit specified in the System Security Plan, a number determined by testing or review of logs to be appropriate for the application. The limit will not be set to unlimited except where operationally required and documented in the System Security Plan. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;[requirement skipped]&lt;/p&gt;
&lt;p class="Default"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;&amp;nbsp;(DG0160: CAT III) The DBA will ensure database connection attempts are limited to a specific number of times within a specific time period as specified in the System Security Plan. The limit will not be set to unlimited. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3.3.12 Marking and Labeling (ECML) &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A database user that does not know the sensitivity level of the data being accessed cannot be expected to protect it in accordance with requirements. While normally marking and labeling of the data is handled by the application displaying the data, many applications provided with the DBMS software may not provide this capability. Use or access to any application that cannot display sensitivity labels must be restricted to protect the data from inadvertent disclosure. Where the marking and labeling of the data can be configured by the DBMS, it must be assigned in accordance with the direction of the Information Owner.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;(DG0087: CAT III) The DBA will configure DBMS marking and labeling of non-public data where required in accordance with the System Security Plan. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3464515" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/STIG/">STIG</category></item><item><title>Securing SQL Server Integration Services (SSIS)</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/11/08/securing-sql-server-integration-services-ssis.aspx</link><pubDate>Wed, 09 Nov 2011 01:42:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3464052</guid><dc:creator>Quantum John</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3464052</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/11/08/securing-sql-server-integration-services-ssis.aspx#comments</comments><description>&lt;p&gt;I was recently asked about securing SQL Server&amp;nbsp;Integration Services, and I knew next to nothing about it. After digging in for a while, here are my notes, mostly for myself, but shared in case they might help someone else.&lt;/p&gt;
&lt;p&gt;There are 3 areas that need to be secured:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The SSIS Engine&lt;/li&gt;
&lt;li&gt;SSIS Packages&lt;/li&gt;
&lt;li&gt;SQL Server&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Protecting the SSIS Engine&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ensure file-based Access Control List (ACL) permissions are restricted on the SSIS executable (MsDtsSrvr.exe)&lt;/li&gt;
&lt;li&gt;Use a security tool to monitor for changes to the executable.&lt;/li&gt;
&lt;li&gt;Limit Windows administrator accounts on the SSIS server.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Protecting SSIS Packages&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ensure file-based Access Control List (ACL) permissions are restricted on dtutil.exe.&lt;/li&gt;
&lt;li&gt;Store packages in a hardened instance of SQL Server (SQL Server stores them in the msdb system database).&lt;/li&gt;
&lt;li&gt;I haven&amp;rsquo;t thought of any reason why someone would have to store packages on a file system, but if you must, then set file-based Access Control List (ACL) permissions on the packages.&lt;/li&gt;
&lt;li&gt;You can store packages in the &amp;ldquo;Package Store&amp;rdquo; which uses the file system with permissions managed by SSIS. I haven&amp;rsquo;t found any detailed documentation for this, but I expect that storing packages in SQL Server is safer, if SQL Server has been hardened.&lt;/li&gt;
&lt;li&gt;Set the Package Protection Level (PPL) on each package, regardless of where you store them.&lt;/li&gt;
&lt;li&gt;Limit SQL Server permissions to manage SSIS packages.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Package Protection Level allows you to determine the package protection method and scope.&lt;/p&gt;
&lt;p&gt;As for the method, you can choose not to save sensitive data, encrypt only the sensitive data, encrypt all data in the packages (not the data that the packages operate on), or let Windows ACLs protect the entire package. Sensitive data is connection string passwords, some tagged nodes, and some SSIS variables (see &lt;a href="http://msdn.microsoft.com/en-us/library/ms141747.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms141747.aspx&lt;/a&gt;). If you encrypt all data in the package, it will protect hide the logic of the operations, and the server and database sources and targets, in addition to the sensitive data.&lt;/p&gt;
&lt;p&gt;The PPL scope allows you to encrypt with a user key or password. If you use a user key, only the user who creates or exports the package can open or run the package. When a package has passed the testing phase, the production team can re-encrypt a package with a maximum-strength password.&lt;/p&gt;
&lt;p&gt;Package Protection Levels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not save sensitive data&lt;/li&gt;
&lt;li&gt;Encrypt sensitive data with user key&lt;/li&gt;
&lt;li&gt;Encrypt sensitive data with password&lt;/li&gt;
&lt;li&gt;Encrypt all data with user key&lt;/li&gt;
&lt;li&gt;Encrypt all data with password&lt;/li&gt;
&lt;li&gt;Rely on server storage and roles for access control&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If, and only if, you store SSIS packages in SQL Server, then permissions to manage and run the packages are given only to and through these SSIS database-level roles: db_ssisadmin, db_ssisltduser, and db_ssisoperator. These roles are assigned to a package using SSMS, and they're saved to the msdb system database.&lt;/p&gt;
&lt;p&gt;Connecting to the SSIS engine provides the ability to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check running packages&lt;/li&gt;
&lt;li&gt;Store packages in MSDB or on a file system&lt;/li&gt;
&lt;li&gt;Import packages&lt;/li&gt;
&lt;li&gt;Execute packages&lt;/li&gt;
&lt;li&gt;Export packages&lt;/li&gt;
&lt;li&gt;Upgrade packages&lt;/li&gt;
&lt;li&gt;Organize packages&lt;/li&gt;
&lt;li&gt;Delete packages&lt;/li&gt;
&lt;li&gt;Rename packages&lt;/li&gt;
&lt;li&gt;Set Reader and Writer roles on packages&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Protecting SQL Server against Rogue Packages&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Harden SQL Server&lt;/li&gt;
&lt;li&gt;Set BlockedSignatureStates to require valid, trusted digital signatures to run any package&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first line of defense against rogue packages is the credentials under which a package makes connections to databases. If SQL Server is hardened to a standard such as the DoD&amp;rsquo;s Database STIG, an SSIS package should be unable to read or harm any data that the connection credentials don&amp;rsquo;t have the authority for.&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;Create a BlockedSignatureStates registry key to prevent SSIS from running packages unless they have digital signatures from a trusted authority (see&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms403378.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms403378.aspx&lt;/a&gt;&amp;nbsp;).&lt;/p&gt;
&lt;/div&gt;
&lt;ul&gt;&lt;/ul&gt;
&lt;p&gt;By default, any user who connects to SSIS via SQL Server Management Studio (SSMS) can see a list of packages, all storage locations, and which of their packages are running. This can be prevented by removing execute permissions on the dts enumeration stored procedures (e.g. sp_enum_dtspackages) from the public role (see &lt;a href="http://msdn.microsoft.com/en-us/library/cc645944.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc645944.aspx&lt;/a&gt;). SQL Server system administrators can see all running packages regardless of other permissions.&lt;/p&gt;
&lt;p&gt;SQL Server Management Studio uses the SQL Server service to list running packages. Members of the Windows Administrators group can view and stop all currently running packages. Users who are not members of the Administrators group can view and stop only packages that they started.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;As always, if anyone has any suggestions, I&amp;rsquo;d love to hear them!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3464052" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/STIG/">STIG</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category></item><item><title>SQL Server and PowerShell Security</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/10/04/sql-server-and-powershell-security.aspx</link><pubDate>Tue, 04 Oct 2011 17:08:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3454277</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3454277</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/10/04/sql-server-and-powershell-security.aspx#comments</comments><description>&lt;p&gt;Sometime back, I heard that Microsoft was going to start using PowerShell scripts to monitor and optionally enforce security standards in SQL Server configurations, such as in the Microsoft Security Compliance Manager (SCM). I knew little about PowerShell, but right away I had a serious concern about whether or not requiring the use of PowerShell would introduce a new set of vulnerabilities due to PowerShell itself.&lt;/p&gt;
&lt;p&gt;SQL Server 2008 introduced support for PowerShell, and included right-click launch shortcuts in the SQL Server Management Studio's (SSMS) Object Explorer. If you launch PowerShell from the Windows Start menu, it won't load with the SQL Server commandlets by default, although you can add them to your running environment after it's started. However, if you launch PowerShell from inside SSMS, it will include all the SQL Server commandlets in the PowerShell environment. There's a gotcha in a completely default install of Windows and SQL Server 2008, however, because PowerShell won't run any scripts&amp;nbsp;at all.&lt;/p&gt;
&lt;p&gt;PowerShell has 4 ExecutionPolicy options: Restricted, AllSigned, RemoteSigned, and Unrestricted. The Windows default for ExecutionPolicy is Restricted, which prevents it from running any scripts, although you can run any commands in interactive mode if you have sufficient permissions. You have to change the ExecutionPolicy before you can run any scripts, and that always seemed to me like the most secure default configuration, but&amp;nbsp;that apparently confused more than a few people. I suspect that confusion was the reason behind this change: When you install SQL Server 2008 &lt;strong&gt;R2&lt;/strong&gt; it changes the Windows PowerShell ExecutionPolicy to AllSigned. AllSigned lets PowerShell run any script that has a digital signature from a trusted publisher.&lt;/p&gt;
&lt;p&gt;Well, when I was at TechReady 13 in July (TechReady is the main biannual technical conference for Microsoft field personnel such as Premier Field Engineers), I went to the Ask The Experts session, found the PowerShell table, and asked how PowerShell security works. An extremely knowledgeable person explained that PowerShell neither improves nor weakens security, just as Windows Explorer (the file browser) or a command prompt do not improve or weaken security. PowerShell merely lets us automate tasks if we have sufficient permission to execute those tasks anyway.&amp;nbsp;The primary aspect of security for PowerShell, just like for Windows Explorer and command prompts, is that it depends on how you're logged in and what permissions your account has.&lt;/p&gt;
&lt;p&gt;I asked more questions, and this very friendly person answered all of them. As I was about to leave, I asked his name, and he introduced himself as Ed Wilson! The same Ed Wilson that writes "&lt;a title="The Scripting Guys" href="http://technet.microsoft.com/en-us/scriptcenter/default" target="_blank"&gt;The Scripting Guys&lt;/a&gt;" TechNet blog and the author of numerous books, including 3 on PowerShell! So here I am in Seattle, all expenses paid by Microsoft, in the midst of an intensive training week, and I get to have a one-on-one conversation with Ed to get my PowerShell questions answered. Have I mentioned lately that I &lt;em&gt;love&lt;/em&gt; working for Microsoft?&lt;/p&gt;
&lt;p&gt;In summary, PowerShell does NOT introduce any additional vulnerabilities, regardless of whether it's used to manage SQL Server or not. PowerShell security relies first and foremost on the permissions of the person who is logged in and running PowerShell. PowerShell scripts can also be run by a service,&amp;nbsp;which will rely on&amp;nbsp;the permissions of&amp;nbsp;the service account, but that's &lt;a title="not recommended" href="http://social.technet.microsoft.com/forums/en-us/winserverpowershell/thread/8D58DCB6-1225-4197-9301-0BB208AD68FF" target="_blank"&gt;not recommended&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3454277" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/PFE/">PFE</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Scripts/">Scripts</category></item><item><title>Separation of Duties for DBA's</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/09/12/separation-of-duties-for-dba-s.aspx</link><pubDate>Mon, 12 Sep 2011 17:44:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3452620</guid><dc:creator>Quantum John</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3452620</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/09/12/separation-of-duties-for-dba-s.aspx#comments</comments><description>&lt;p&gt;Someone recently asked me about the principle of separation of duties (aka segregation of duties) as it applies to SQL Server DBA's, and I thought that would make a good topic for this blog, so here goes...&lt;/p&gt;
&lt;p&gt;The idea of separating duties in general is to prevent a single person from being able to complete a task, such as a bank vault combination having 6 numbers, and giving 3 to one employee and 3 to another.&lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Separation of duties is not designed into the SQL Server DBA role itself, as a&amp;nbsp;senior SQL Server DBA will have the SQL Server sysadmin built-in server role, which gives a single DBA complete control over SQL Server. However, there&amp;nbsp;are still several ways we can apply&amp;nbsp;separation of duties to the management of SQL Server.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; You can prevent operating system administrators from gaining easy access to SQL Server. For example, SQL Server 2008 no longer includes a "BUILTIN\Administrators" group that used to give every local Windows administrator full sysadmin privileges in SQL Server by default. (See DoD Database STIG, SRR DG0116.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; You can split data among different instances of SQL Server and not allow DBA's from one instance to have permissions on the other. Multiple instances can be on the same server or multiple servers, and multiple servers provides an option for also splitting Windows privileges between two sets of operating system administrators.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; You can create applications that enforce separation of duties in the external management of&amp;nbsp;data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; You can prevent SQL Server DBA's from having local administrator privileges on Windows. This option provides very little value, because if a DBA is not trustworthy they can do far more harm with their DBA privileges than with Windows privileges, and it will interfere with their ability to manage folder permissions and registry edits, which are needed for tasks such as backup file management and installing service packs. If you choose to implement this option, the DBA's will need top-priority responses from Windows administrators to make O\S level changes for them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5.&lt;/strong&gt; Install and implement the SQL Server Separation of Duties Framework v2.0. See &lt;a href="http://sqlserversod.codeplex.com/"&gt;http://sqlserversod.codeplex.com/&lt;/a&gt;. (Thanks to SQLDragon for pointing this out!)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Footnotes:&lt;br /&gt;1. I'll mention here that two other security principles may limit the effectiveness of separating duties, namely, job rotation and mandatory vacation. Both of these ideas will proliferate permissions if they aren't managed very carefully, and proliferating permissions can overcome the goal sought by&amp;nbsp;separating duties.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3452620" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/STIG/">STIG</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Auditing/">Auditing</category></item><item><title>SQL Server, the DoD, and Common Criteria</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/08/12/sql-server-the-dod-and-common-criteria.aspx</link><pubDate>Fri, 12 Aug 2011 16:02:34 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3446769</guid><dc:creator>Quantum John</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3446769</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/08/12/sql-server-the-dod-and-common-criteria.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Common_Criteria" target="_blank"&gt;Common Criteria&lt;/a&gt;&amp;nbsp;is an international standard for a set of security characteristics, and the U.S. Department of Defense (DoD) Database Security Technical Implementation Guide (STIG) (via the Security Readiness Review for SQL Server) requires it to be enabled. (See DG0084.)&lt;/p&gt;
&lt;p&gt;You can turn it on by using sp_configure ("common criteria compliance enabled")&amp;nbsp;or by using SQL Server Management Studio (server properties, security page, options, "Enable Common Criteria compliance" checkbox).&lt;/p&gt;
&lt;p&gt;Enabling SQL Server's Common Criteria switch will enable 3 functions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Residual Information Protection&lt;/li&gt;
&lt;li&gt;The ability to view login statistics&lt;/li&gt;
&lt;li&gt;Prevention of a column-level GRANT from overriding a table-level DENY&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more details about these functions, see the SQL Server Books Online article &lt;a href="http://msdn.microsoft.com/en-us/library/bb326650.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to know about Common Criteria evaluations of different SQL Server versions and service pack levels, just go to&amp;nbsp;&lt;a href="http://www.microsoft.com/sqlserver/en/us/common-criteria.aspx" target="_blank"&gt;this page&lt;/a&gt; and click on the tabs across the top.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3446769" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/STIG/">STIG</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/SRRs/">SRRs</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category></item><item><title>Free SQL Ranger Training</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/07/20/free-sql-ranger-training.aspx</link><pubDate>Wed, 20 Jul 2011 17:02:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3442605</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3442605</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/07/20/free-sql-ranger-training.aspx#comments</comments><description>&lt;p&gt;When I first heard about "SQL Rangers" I wasn't sure what it was, but I definitely wanted to be one. Just 'cause it sounded so cool. Basically, it was an early name for what later became Microsoft Certified Masters, which was the highest level of certification. Over time, the Master certification program expanded and evolved, and now there's a higher level certification, that of Microsoft Certified Architect. And if you haven't paid attention since the old&amp;nbsp;Microsoft Certified Database Administrator (MCDBA) days, here's the current premier SQL Server certifications, as of July 2011:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft Certified Technical Specialist (MCTS), which requires one exam.&lt;/li&gt;
&lt;li&gt;Microsoft Certified Information Technology Professional (MCITP), which requires MCTS plus one exam.&lt;/li&gt;
&lt;li&gt;Microsoft Certified Master (MCM) (a.k.a. Ranger), which requires MCITP plus one standard exam and one hands-on lab exam.&lt;/li&gt;
&lt;li&gt;Microsoft Certified Architect (MCA), which requires MCM plus a detailed dossier and Review Board interview.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;If you're not familiar with these certifications&amp;nbsp;and want to find out more about them, start here for the SQL Server specific versions: &lt;a href="http://www.microsoft.com/learning/en/us/certification/cert-sql-server.aspx"&gt;http://www.microsoft.com/learning/en/us/certification/cert-sql-server.aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Study options for SQL Server MCTS and MCITP include a wide variety of boot camps and other classes, books, practice exams, and articles. The options for preparing for the SQL Ranger exam and lab are more limited, but there are now some great videos and other material, available online for free, from the folks at SqlSkills.com. SqlSkills has some classroom training available, but&lt;strong&gt; if you're interested in advanced self-study in one-hour bites, you can really increase your expertise with these videos: &lt;a href="http://technet.microsoft.com/en-us/sqlserver/ff977043.aspx"&gt;http://technet.microsoft.com/en-us/sqlserver/ff977043.aspx&lt;/a&gt;, and this complete set of resources:&amp;nbsp;&lt;a href="http://sqlskills.com/mcm.asp"&gt;http://sqlskills.com/mcm.asp&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If you're wondering how these certs relate to working for Microsoft Services, we&amp;nbsp;expect&amp;nbsp;our Premier Field Engineers (PFEs) and Consultants to attain and maintain the MCITP. It helps if you already have MCITP when you're going through the hiring process, but it's not required. If you become a SQL Ranger while working for us, it helps you build your cred with your peers. The only study option used to be a very expensive 6-week in-person boot camp, and the fact that you wouldn't be burning customer-contract hours for those weeks was a major disincentive for managers to support it. Now that I've found this great training online, I'm going to pursue it myself.&lt;/p&gt;
&lt;p&gt;Since this is a security-themed blog, I'll tie in the security aspect of certifications here. A person doesn't have to have a cert to have knowledge. And a&amp;nbsp;cert is not proof that a person is competent. However, for a large organization, a policy of requiring job-related I.T. certs increases the likelihood that a person will be competent in their technical role, and competent technicians is a critical requirement for being able to establish, maintain, and improve I.T. security. For that reason, more and more organizations are requiring I.T. certs for their technical staff. For example, the&amp;nbsp;U.S. Department of Defense's (DoD) Directive 8570 requires both job-related&amp;nbsp;I.T. certifications and security-related certifications. Which ones depends on your job role. A SQL Server MCTS will meet the I.T. certification requirement for some SQL Server DBAs working for the DoD, but others may have to have SQL Server MCITP.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3442605" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/PFE/">PFE</category></item><item><title>Conditionally Updating Statistics</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/07/19/conditionally-updating-statistics.aspx</link><pubDate>Tue, 19 Jul 2011 17:49:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3393179</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3393179</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/07/19/conditionally-updating-statistics.aspx#comments</comments><description>&lt;p&gt;SQL Server's query optimization engine uses statistics on indexes to determine the most efficient execution plans. By default, SQL Server automatically updates statistics, but sometimes the automatic processes don't update them soon enough, so there are multiple ways to force them to update to help keep your queries running as efficiently as possible. The main options are the &lt;strong&gt;UPDATE STATISTICS&lt;/strong&gt; command and the &lt;strong&gt;sp_updatestats&lt;/strong&gt; system stored procedure.&lt;/p&gt;
&lt;p&gt;You may be aware that you can choose an Update Statistics task in SQL Server Management Studio's (SSMS) Maintenance Plan Wizard, but that task is dumb, in the sense that it will recompute stats on all indexes in a targeted database, whether they need it or not. This means that sp_updatestats is generally a better alternative, to avoid unnecessary CPU load, because&amp;nbsp;sp_updatestats will only update statistics for indexes that need it. However, sp_updatestats executes per-database, and it&amp;nbsp;does &lt;strong&gt;not&lt;/strong&gt; provide fine-level control (e.g. sampling rate, all/column/index, etc.). In my experience,&amp;nbsp;most systems&amp;nbsp;don't need fine-level control, so the best option in most cases is to use sp_msforeachdb to&amp;nbsp;loop through all databases and execute sp_updatestats, which will only update stats on those databases that need it:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EXEC sp_msforeachdb 'USE [?] EXEC sp_updatestats'&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Put the command above in a SQL Server Agent job, schedule it, and you're done.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Advanced Options&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;1. If you happen to manage an instance of SQL Server that needs manual control over updating statistics, you can use the UPDATE STATISTICS command and specify options such as the sampling rate and whether to compute stats for all/column/index. Simply run whatever specific UPDATE STATISTICS commands you need, whenever you need them, and leave your scheduled sp_updatestats job alone. When the sp_updatestats job runs, if the targets of your specific UPDATE STATISTICS commands don't need updating, they'll be skipped.&lt;/p&gt;
&lt;p&gt;2. Don't run sp_updatestats on a schedule and just run UPDATE STATISTICS after specific events, such as right after large inserts, updates, or deletes.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Notes&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;1. Rebuilding an index will cause SQL Server to recompute statistics, but reorganizing an index won't. If you want to experiment with rebuilds, reorgs, and updating stats, or just view a query that shows you index fragmentation and the date/time of the last statistics update of each index, see the attached script.&lt;/p&gt;
&lt;p&gt;2. Why not just open sp_updatestats, copy the code, and tweak it to do whatever you want? Mainly because it uses a system function (stats_ver_current) that can only be run from inside a system procedure.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3393179" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-39-31-79/Experiment-with-statistics.sql" length="3517" type="application/octet-stream" /><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Maintenance/">Maintenance</category></item><item><title>PFE vs. Consultant</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/06/28/pfe-vs-consultant.aspx</link><pubDate>Tue, 28 Jun 2011 19:04:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3437985</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3437985</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/06/28/pfe-vs-consultant.aspx#comments</comments><description>&lt;p&gt;Well, it's almost the end of June and none of my draft posts are close enough to finishing to meet my self-imposed standard of at least one post per month. So, here's a pathetic little human-interest post.&lt;/p&gt;
&lt;p&gt;Microsoft has a Services group which provides a variety of support personnel to customers. Customers pay for this support, and as we're rather expensive, it's usually only large organizations that hire us. We're expensive because we're generally the leading experts in Microsoft technologies that are available for on-site assistance. Microsoft, like any of our competitors, has to pay competitive salaries in order to get the most qualified people to perform the work. Add a profit on top of the salaries, and that's why the per hour price may be higher than most other consulting companies supporting our products.&lt;/p&gt;
&lt;p&gt;By the way, there are many less expensive support alternatives, including free. Such as this blog. Some huge company contracts with Microsoft Services and gets some of my time. Sometimes when I've encountered the same question more than once, I'll write a blog post here about the issue and what to do about it. Then everyone in the world can get my expertise for free. (Okay, everyone in the world with Internet access, but I'm guessing there aren't too many organizations using SQL Server that don't have Internet access.)&lt;/p&gt;
&lt;p&gt;So, on to the topic in the title of this post. Microsoft Services is divided into &lt;strong&gt;Microsoft Consulting Services (MCS)&lt;/strong&gt; and &lt;strong&gt;Microsoft Premier Services (Premier)&lt;/strong&gt;.&amp;nbsp; What's the difference?&amp;nbsp;Here's the best summary I've heard (sorry I can't remember who came up with it):&lt;/p&gt;
&lt;center&gt;&lt;span style="font-size: large;"&gt;MCS consultants design and build things; &lt;br /&gt;Premier Field Engineers (PFEs) help fix things if they break and when they aren't busy fixing broken things, they advise about how to prevent them from breaking in the first place.&lt;/span&gt;&lt;/center&gt;
&lt;p&gt;That's it, short &amp;amp; sweet. Now for another tangent...&lt;/p&gt;
&lt;p&gt;I've worked for a bunch of different consulting companies, and Microsoft is the best I've ever worked for, by every measure I can think of. Here's a very important example: Every consulting company I ever worked for verbally stressed, repeatedly, how important it was for their consultants to maintain their skills. Sometimes they put it in writing. But what they didn't do was actually support consultants spending time or money to study, experiment, or earn certifications. Will they pay for a week of training? Sorry, we can't spare you away from the customer contract you're on. How about if you take vacation time, will they at least cover the cost of a&amp;nbsp;training program? Sorry, that's not in the budget right now. Microsoft, on the other hand, is extremely supportive, in both time and money. Microsoft consultants and PFEs both spend a lot of time studying to maintain and improve our knowledge and skills, and it's my perception that PFEs get to spend more time studying and experimenting than our consultants. As a PFE, I'm required to get at least 4 weeks per year of training. That's right, 4 weeks, &lt;em&gt;minimum&lt;/em&gt;. That can be accounted for by formal training, such as workshops, semi-formal training, such as TechReady or technical industry conventions within our specialities, or informal training, such as reading or experimenting on a home computer lab. Those who know me well know I love learning... is it any wonder I love being a PFE?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3437985" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/PFE/">PFE</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Off_2D00_Topic/">Off-Topic</category></item><item><title>Test SharePoint Mirror Without Down-Time</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/05/19/test-sharepoint-mirror-without-downtime.aspx</link><pubDate>Thu, 19 May 2011 15:40:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3425794</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3425794</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/05/19/test-sharepoint-mirror-without-downtime.aspx#comments</comments><description>&lt;p&gt;Here's a ﻿﻿SQL Server PFE war-story&amp;nbsp;to give&amp;nbsp;one example of one of the kind of work we might do.&lt;/p&gt;
&lt;p&gt;Most of the customers I support run SharePoint services, and they use a variety of methods to provide disaster recovery capabilities. One method involves SQL Server's Database Mirroring capability to maintain a copy of the data at a remote location. And 'remote location' often means there's a slow ﻿﻿WAN (low-bandwidth) connection between the primary site and the secondary (mirror) site.&lt;/p&gt;
&lt;p&gt;Well, an I.T. manager at one customer was concerned about how to test the disaster recovery plan. I'll mention that one reason mirroring is being used is because the slow WAN link made it impractical to regularly copy huge backup files. Simply relying on the mirroring monitor was not acceptable, because he wanted a full test, meaning he wanted test users to be able to see and interact with the remote instance of SharePoint. ﻿SharePoint was already installed on the remote site with only a default content database, but switching the mirror's primary and secondary roles in SQL Server wasn't good enough because that would require a few minutes of down-time for the production users﻿﻿ while mounting and testing the content databases on the remote site, and this was a 24/7 production system.&lt;/p&gt;
&lt;p&gt;This almost sounds like a scenario where you could create a Database Snapshot of the mirror, and run your test based on the snapshot. That would work for any test where it's okay for the data to be read-only, and my customer was okay with a read-only test. Unfortunately, SharePoint can't mount a content database without writing to it. So... here's the basic solution I came up with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mirror the SharePoint content database to a remote site.&lt;/li&gt;
&lt;li&gt;Restore a full backup of the content database to a test server on the primary site (so you don't have to copy a huge backup file over the WAN).&lt;/li&gt;
&lt;li&gt;Delete all the tables from the restored database.&lt;/li&gt;
&lt;li&gt;Make a full backup of the table-less database. This is a shell SharePoint content database with all the users, stored procedures, etc, and it's backup file is tiny.&lt;/li&gt;
&lt;li&gt;Copy the shell backup to the remote site and restore it.&lt;/li&gt;
&lt;li&gt;Create a Database Snapshot of the mirror.&lt;/li&gt;
&lt;li&gt;Create an SSIS package to copy the tables from the snapshot to the shell database, making it a fully functional, read-write test database.&lt;/li&gt;
&lt;li&gt;Connect the remote-site instance of SharePoint to the test database, and let the test users confirm that everything works.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This solution works well, but beware of a couple of things that might trip you up: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Different SharePoint content databases may be associated with different application pools, which means they have different database users. A shell with the wrong users will cause failures. Just make sure your shell database has all the users necessary to support the app pools for all the content databases you're going to test.&lt;/li&gt;
&lt;li&gt;An SSIS Data Flow task should work for every table in a SharePoint content database, but we had a failure in one system on the AllDocStreams table. We got around this problem by using an Execute SQL task with a SELECT -- INTO statement instead of a Data Flow task for that one table.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When I described this solution to a colleague, they said that while it might work, it's not a configuration supported by Microsoft. After thinking about that awhile, I disagree. Even though you may not see this solution fully described elsewhere in Microsoft documentation, each component of the solution is supported, therefore the entire solution is.&lt;/p&gt;
&lt;p&gt;Pretty fun, huh? It's hard to believe I get paid for playing around like this...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3425794" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/PFE/">PFE</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Off_2D00_Topic/">Off-Topic</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Debug/">Debug</category></item><item><title>Changing Domains on a SQL Server</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/04/02/changing-domains-on-a-sql-server.aspx</link><pubDate>Sat, 02 Apr 2011 15:29:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3393160</guid><dc:creator>Quantum John</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3393160</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/04/02/changing-domains-on-a-sql-server.aspx#comments</comments><description>&lt;p&gt;Someone recently asked me what issues might arise when changing a server's domain and the server is running SQL Server. Here are the possible issues I'm aware of as far as SQL Server is concerned:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. SQL Server SysAdmin (SA) Access.&lt;/strong&gt; The most important issue is if you only have SQL Server sysadmin via domain accounts/groups, which is normal if STIG'd. In this case you should temporarily enable the sa account and ensure you know the password,&amp;nbsp;until you get the new domain sysadmin accounts/groups working.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Service Account.&lt;/strong&gt; The new domain service account(s) will need the same privileges as the old domain service accounts. If there are no custom permissions, just use the SQL Server Configuration Manager to change the service account while being logged in as a domain administrator. If it's in a very high-security environment, you might have to make sure that your domain admin account has all the standard permissions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. SQL Server Domain-based Logins.&lt;/strong&gt; Logins that are based on domain accounts or domain groups will need to be recreated. The old ones can be scripted out to recreate all their permissions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Changing IP Addresses.&lt;/strong&gt; If required by the domain change, and &lt;em&gt;if it's clustered&lt;/em&gt;, then the virtual server IP address must change in addition to the individual nodes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Service Principal Names (SPNs).&lt;/strong&gt; These are always used by clustered instances, and sometimes used by stand alone instances.&amp;nbsp;If the IP addresses are changing, the&amp;nbsp;old SPNs need to be dropped and new ones created.&amp;nbsp;If the SQL Server service account is used to manage its own SPNs (not recommended) then the new domain service account will need to be granted the "Write servicePrincipalName" privilege.&lt;/p&gt;
&lt;p&gt;If the servers are&amp;nbsp;STIG'd then you should have&amp;nbsp;test servers, and you should change their domain first, to see if any other problems arise.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3393160" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/STIG/">STIG</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category></item><item><title>Do You Need MSDTC?</title><link>http://blogs.technet.com/b/fort_sql/archive/2011/03/09/do-you-need-msdtc.aspx</link><pubDate>Thu, 10 Mar 2011 02:52:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3383146</guid><dc:creator>Quantum John</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/fort_sql/rsscomments.aspx?WeblogPostID=3383146</wfw:commentRss><comments>http://blogs.technet.com/b/fort_sql/archive/2011/03/09/do-you-need-msdtc.aspx#comments</comments><description>&lt;p&gt;STIG requirement DG0016&amp;nbsp;specifies that you should not install any service you do not need, and if one is automatically installed and&amp;nbsp;cannot be removed, it should be disabled.&lt;/p&gt;
&lt;p&gt;The Microsoft Distributed Transaction Coordinator (MSDTC) is a Windows service, not a SQL Server service, but it's closely associated with SQL Server. Yet most DBA's don't interact with it,&amp;nbsp;and may not know if it's being used. And even if you don't have any apps using SQL Server for distributed transactions, it may still be used by other services. So, if it's running but it's not being used, you need to disable it, but how do you determine if it's being used or not? There are several ways, but here's the easiest:&lt;/p&gt;
&lt;p&gt;Log into the server as a Windows administrator.&lt;/p&gt;
&lt;p&gt;Go to Start/Run (or the Start search box on later versions of Windows), enter &lt;strong&gt;dcomcnfg &lt;/strong&gt;and hit Enter. Wait for the Component Services window to open (be patient), then drill into Component Services/Computers/My Computer/Distributed Transaction Coordinator/Local DTC/Transation Statistics.&lt;/p&gt;
&lt;p&gt;So, if your server has been running for a long time and its MSDTC stats look like this:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-76-22/6102.MSDTC_5F00_Stats.jpg" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;...then your MSDTC is not being used, and you should disable it in Services (Start/Run/services.msc).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In case you're wondering where I stole this info, go to&amp;nbsp;&lt;a target="_blank" href="http://technet.microsoft.com/en-us/library/cc771686(WS.10).aspx" title="http://technet.microsoft.com/en-us/library/cc771686(WS.10).aspx "&gt;http://technet.microsoft.com/en-us/library/cc771686(WS.10).aspx&lt;/a&gt;&amp;nbsp;and drill down. You'll find a wealth of info on managing MSDTC.&lt;/p&gt;
&lt;p&gt;In addition, Microsoft provides a DTC Tester (&lt;a href="http://support.microsoft.com/kb/293799"&gt;http://support.microsoft.com/kb/293799&lt;/a&gt;) and a DTC Ping tool (&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5e325025-4dcd-4658-a549-1d549ac17644&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5e325025-4dcd-4658-a549-1d549ac17644&amp;amp;DisplayLang=en&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3383146" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/STIG/">STIG</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Admin/">Admin</category><category domain="http://blogs.technet.com/b/fort_sql/archive/tags/Configuration/">Configuration</category></item></channel></rss>