 




<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SQL Server with Mr. Denny &#187; Permissions</title>
	<atom:link href="http://itknowledgeexchange.techtarget.com/sql-server/tag/permissions/feed/" rel="self" type="application/rss+xml" />
	<link>http://itknowledgeexchange.techtarget.com/sql-server</link>
	<description></description>
	<lastBuildDate>Fri, 24 May 2013 17:04:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Prepping the security for a data warehouse</title>
		<link>http://itknowledgeexchange.techtarget.com/sql-server/prepping-the-security-for-a-data-warehouse/</link>
		<comments>http://itknowledgeexchange.techtarget.com/sql-server/prepping-the-security-for-a-data-warehouse/#comments</comments>
		<pubDate>Thu, 05 Jul 2012 14:00:24 +0000</pubDate>
		<dc:creator>Denny Cherry</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Database security]]></category>
		<category><![CDATA[Permissions]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/sql-server/prepping-the-security-for-a-data-warehouse/</guid>
		<description><![CDATA[So in an earlier blog post I talked about how I had to grant some users the ability to create indexes in a reporting server.  A couple of people have asked me how I created the domain groups and ensured that the permissions were setup correctly.  In this case I did this with two SQL [...]]]></description>
				<content:encoded><![CDATA[<p>So in an earlier <a href="http://itknowledgeexchange.techtarget.com/sql-server/giving-users-the-ability-to-create-indexes/">blog post</a> I talked about how I had to grant some users the ability to create indexes in a reporting server.  A couple of people have asked me how I created the domain groups and ensured that the permissions were setup correctly.  In this case I did this with two SQL Scripts.  The first generates some command line commands which can then be run on a domain controller in order to create the domain groups that the users will be put into.  This script simply compares the groups which exist as logins and matches that against the list of databases on the SQL Server.  In this case I&#8217;m filtering the databases down based on a prefix as I only want to deal with databases that start with rpt or secure.  There are 5 different domain groups created for each database.  I take the output of this first query and run it from the command line window on an Active Directory domain controller and the domain groups are then created.  Once they are created I simply drop them into the correct folder in AD and the help desk can start dropping users into the groups.</p>
<pre class="brush: sql; title: ; notranslate">

select 'net group EDW1-' + name + ' /DOMAIN /ADD'
from sys.databases
where (name like 'rpt%'
or name like 'secure%')
and 'MyDomain\EDW1-' + name not in (select name from sys.server_principals)
UNION ALL
select 'net group EDW1_SHOWPLAN_' + name + ' /DOMAIN /ADD'
from sys.databases
where (name like 'rpt%'
or name like 'secure%')
and 'MyDomain\EDW1_SHOWPLAN_' + name not in (select name from sys.server_principals)
UNION ALL
select 'net group EDW1_CREATE_INDEX_' + name + ' /DOMAIN /ADD'
from sys.databases
where (name like 'rpt%'
or name like 'secure%')
and 'MyDomain\EDW1_CREATE_INDEX_' + name not in (select name from sys.server_principals)
UNION ALL
select 'net group EDW1_CREATE_VIEW_' + name + ' /DOMAIN /ADD'
from sys.databases
where (name like 'rpt%'
or name like 'secure%')
and 'MyDomain\EDW1_CREATE_VIEW_' + name not in (select name from sys.server_principals)
UNION ALL
select 'net group EDW1_CREATE_PROC-' + name + ' /DOMAIN /ADD'
from sys.databases
where (name like 'rpt%'
or name like 'secure%')
and 'MyDomain\EDW1_CREATE_PROC-' + name not in (select name from sys.server_principals)
GO

</pre>
<p>The second script that I&#8217;ve got creates the logins for each of these domain groups, again by simply looking at the ones that don&#8217;t exist in sys.server_principals.  This script generates T-SQL code which I then just copy and paste into another SQL Query window and then execute the script.  The only thing that I have to remember with this script is that there are line breaks in the output so I need to ensure that I run this with the results going to text not to the default grid.</p>
<pre class="brush: sql; title: ; notranslate">

select 'use master
GO
CREATE LOGIN [MyDomain\EDW1-' + name + '] FROM WINDOWS
GO
use ' + name + '
GO
CREATE USER [MyDomain\EDW1-' + name + '] FROM LOGIN [MyDomain\EDW1-' + name + ']
GO
EXEC sp_addrolemember @rolename=''db_datareader'', @membername=''MyDomain\EDW1-' + name + '''
GO'
from sys.databases
where (name like 'rpt%'
or name like 'secure%')
and 'MyDomain\EDW1-' + name not in (select name from sys.server_principals)
union all
select 'use master
GO
CREATE LOGIN [MyDomain\EDW1_CREATE_INDEX_' + name + '] FROM WINDOWS
GO
use ' + name + '
GO
CREATE USER [MyDomain\EDW1_CREATE_INDEX_' + name + '] FROM LOGIN [MyDomain\EDW1_CREATE_INDEX_' + name + ']
GO'
from sys.databases
where (name like 'rpt%'
or name like 'secure%')
and 'MyDomain\EDW1_CREATE_INDEX_' + name not in (select name from sys.server_principals)
UNION ALL
select 'use master
GO
CREATE LOGIN [MyDomain\EDW1_CREATE_PROC-' + name + '] FROM WINDOWS
GO
use ' + name + '
GO
CREATE USER [MyDomain\EDW1_CREATE_PROC-' + name + '] FROM LOGIN [MyDomain\EDW1_CREATE_PROC-' + name + ']
GO
GRANT SHOW PLAN TO  [MyDomain\EDW1_CREATE_PROC-' + name + ']
GO'
from sys.databases
where (name like 'rpt%'
or name like 'secure%')
and 'MyDomain\EDW1_CREATE_PROC-' + name not in (select name from sys.server_principals)
union all
select 'use master
GO
CREATE LOGIN [MyDomain\EDW1_CREATE_VIEW_' + name + '] FROM WINDOWS
GO
use ' + name + '
GO
CREATE USER [MyDomain\EDW1_CREATE_VIEW_' + name + '] FROM LOGIN [MyDomain\EDW1_CREATE_VIEW_' + name + ']
GO
GRANT SHOWPLAN TO  [MyDomain\EDW1_CREATE_VIEW_' + name + ']
GO'
from sys.databases
where (name like 'rpt%'
or name like 'secure%')
and 'MyDomain\EDW1_CREATE_VIEW_' + name not in (select name from sys.server_principals)
union all
select 'use master
GO
CREATE LOGIN [MyDomain\EDW1_SHOWPLAN_' + name + '] FROM WINDOWS
GO
use ' + name + '
GO
CREATE USER [MyDomain\EDW1_SHOWPLAN_' + name + '] FROM LOGIN [MyDomain\EDW1_SHOWPLAN_' + name + ']
GO
GRANT SHOWPLAN TO  [MyDomain\EDW1_SHOWPLAN_' + name + ']
GO'
from sys.databases
where (name like 'rpt%'
or name like 'secure%')
and 'MyDomain\EDW1_SHOWPLAN_' + name not in (select name from sys.server_principals)

</pre>
<p>The great thing about these scripts is that they produce a consistent set of domain groups for each new database that is added to the reporting server so that the helpdesk can quickly and easily figure out which groups users need to be placed into.  Could I have done this in PowerShell? Yeah, I&#8217;m sure that I could have.  But I don&#8217;t know the PowerShell cmdlets that would have been needed to create the domain accounts, so honestly I didn&#8217;t bother even trying.  I knew the SQL commands to do this off the top of my head.  While someone else probably could have written this in PowerShell in 10 minutes, I did it in T-SQL in 10 minutes and it&#8217;s reproduceable.</p>
<p>(Don&#8217;t forget for the index domain groups I&#8217;ve got a SQL Agent job that grants the rights to those that runs every night.)</p>
<p>If I need to add another set of domain groups into the script, I can simply copy and paste an existing one and make the few needed changes.</p>
<p>Denny</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/sql-server/prepping-the-security-for-a-data-warehouse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server 2012 Class March 19-22, 2012</title>
		<link>http://itknowledgeexchange.techtarget.com/sql-server/sql-server-2012-class-march-19-22-2012/</link>
		<comments>http://itknowledgeexchange.techtarget.com/sql-server/sql-server-2012-class-march-19-22-2012/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 14:00:22 +0000</pubDate>
		<dc:creator>Denny Cherry</dc:creator>
				<category><![CDATA[Class]]></category>
		<category><![CDATA[Encryption]]></category>
		<category><![CDATA[MCM]]></category>
		<category><![CDATA[Permissions]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Transaction Log]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/sql-server/?p=1937</guid>
		<description><![CDATA[This March I, Microsoft MVP for SQL Server and Microsoft Certified Master for SQL Server 2008 Denny Cherry, am teaching a 4 day class introducing SQL Server 2012.  This four day class is being offered for only $1200 for four full days of training on the newest version of Microsoft SQL Server 2012.  The class [...]]]></description>
				<content:encoded><![CDATA[<p>This March I, Microsoft MVP for SQL Server and Microsoft Certified Master for SQL Server 2008 Denny Cherry, am teaching a 4 day class introducing SQL Server 2012.  This <a href="http://mrdenny.com/events/sql-2012">four day class</a> is being offered for only $1200 for four full days of training on the newest version of Microsoft SQL Server 2012.  The class will cover installation options for rapid upgrades and deployments of SQL Server 2012 through the environment as well two days of looking at the newest and most exciting features of SQL Server 2012.  On the last day of the class we will focus on Table Partitioning, Transaction logs, encryption and permissions.  The full outline of the class is listed below.</p>
<p><a href="http://www.mrdenny.com/events/sql-2012">Registration</a> for this great 4 day class is now open, however seating is limited so get your reservation in now in order to attend this class.</p>
<p><strong>DAY 1: Planning and Installation</strong></p>
<ul>
<li>Welcome and Introductions</li>
<li>Module 1: Installing and Configuring SQL Server 2012 on Windows Server Core</li>
<li>Module 2: Installing and Configuring SQL Server 2012 in a Cluster</li>
<li>Module 3: Performing unattended installations of SQL Server 2012</li>
<li>Module 4: Deploying SQL Server 2012 using sysprep</li>
<li>Module 5: Automating SQL Server 2012 installations with VMware’s vSphere Deployments</li>
<li>Module 6: SQL Server 2012 Storage Design Considerations</li>
<li>Module 7: Installing SQL Server 2012 in a virtual environment</li>
<li>Module 8: Securing a SQL Server 2012 installation</li>
</ul>
<p><strong>DAY 2: Mission Critical</strong></p>
<ul>
<li>Module 1: SQL Server 2012 AlwaysOn Overview</li>
<li>Module 2: Configuring SQL Server 2012 AlwaysOn</li>
<li>Module 3: SQL Server 2012 AlwaysOn Availability Groups Drilldown</li>
<li>Module 4: What’s new in SQL Server 2012 Manageability</li>
<li>Module 5: What’s new in Transact-SQL</li>
<li>Module 6: Migrating from SQL Server 2000/2005/2008 to SQL Server 2012</li>
</ul>
<p><strong>DAY 3: Breakthrough Insights</strong></p>
<ul>
<li>Module 1: Installing and configuring a SQL Server 2012 based Business Intelligence Environment</li>
<li>Module 2: Configuring SQL Server 2012 Business Intelligence</li>
<li>Module 3: Introduction to PowerPivot</li>
<li>Module 4: Introduction to PowerView</li>
<li>Module 5: Introduction to Dashboards and ScoreCards</li>
<li>Module 6: Optimizing your datawarehouse performance using ColumnStore index</li>
<li>Module 7: Introduction to Data Quality Services</li>
</ul>
<p><strong>DAY 4: Manageability and Security<br />
</strong></p>
<ul>
<li>Module 1: Table Partitioning for performance and saving money</li>
<li>Module 2: Transaction Logs from the inside out</li>
<li>Module 3: Certificates aren’t just for web browsing any more</li>
<li>Module 4: Data Encryption will keep your data safe if it escapes</li>
<li>Module 5: SQL Injection is a bigger problem then you want to think it is</li>
<li>Module 6: Permissions, Rights and Authorizations will keep your data safe</li>
</ul>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/sql-server/sql-server-2012-class-march-19-22-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When working with SQL in a cluster, the account rights on both nodes of the cluster need to be the same</title>
		<link>http://itknowledgeexchange.techtarget.com/sql-server/when-working-with-sql-in-a-cluster-the-account-rights-on-both-nodes-of-the-cluster-need-to-be-the-same/</link>
		<comments>http://itknowledgeexchange.techtarget.com/sql-server/when-working-with-sql-in-a-cluster-the-account-rights-on-both-nodes-of-the-cluster-need-to-be-the-same/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 16:30:00 +0000</pubDate>
		<dc:creator>Denny Cherry</dc:creator>
				<category><![CDATA[Clustering]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Permissions]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/sql-server/when-working-with-sql-in-a-cluster-the-account-rights-on-both-nodes-of-the-cluster-need-to-be-the-same/</guid>
		<description><![CDATA[Recently I was working with a clients SQL Server cluster.&#160; The managed service provide had installed some Windows patches causing the SQL Cluster to fail over to the other node.&#160; No big deal, everything appeared to be working as normal. After a couple of days we noticed something a little strange.&#160; There was a very [...]]]></description>
				<content:encoded><![CDATA[<p>Recently I was working with a clients SQL Server cluster.&#160; The managed service provide had installed some Windows patches causing the SQL Cluster to fail over to the other node.&#160; No big deal, everything appeared to be working as normal.</p>
<p>After a couple of days we noticed something a little strange.&#160; There was a very strange wait type which was showing a LOT of wait type.&#160; This wait type was PREEMPTIVE_OS_GETPROCADDRESS which means that SQL Server is waiting on something outside of the database engine to respond.&#160; When I looked into the spid which was doing the waiting I saw that it was running the extended stored procedure xp_delete_file.&#160; What this file does, in case you aren’t aware is remove old SQL Server backups from the hard drive of the server based on parameters that you specified.</p>
<p>First thing that I did was look at the permissions of the files, they appeared to be setup correctly.&#160; the local admin group had full control, users had no rights, owner has full control.&#160; Knowing that the SQL Account should be a member of the administrators group on these servers (I didn’t set the machine up, so don’t get me started on minimum permissions).&#160; However when I looked in the admin group for this node of the cluster, the SQL Account wasn’t a member of the admin group.&#160; I jumped on to the other node and it was in that machines.</p>
<p>The reason that this was a problem is because of the way that NTFS handles permissions on new files when the user is an owner of the folder and has full control rights.&#160; Because the folder is owned by the local admin group, and the SQL Server was a member of the local admin group when the files were created they inherited the rights from the folder which were admins had full control, users had no rights, and owner had full control.&#160; Except that in this case ownership of the folder and the files was built in\Administrators which also carried down to the files.&#160; So when the SQL Account came through on the second machine looking to delete files it didn’t have the rights because it wasn’t in the built in\Administrators group any more.</p>
<p>Fortunately fixing this problem was pretty easy.&#160; I simply put the SQL Account in the local admin group on the misconfigured node and scheduled a short outage to restart SQL on that node so that it could pickup the new permissions.&#160; Then the long waits went away and the older backups were able to be deleted as they should be.</p>
<p>If you’d like to read more about why you don’t normally want to have the SQL Server running with admin rights and what the minimum needed rights means might I recommend you check out my security book Securing SQL Server (<a href="http://www.amazon.com/Securing-SQL-Server-Protecting-Attackers/dp/1597496251/ref=sr_1_1?ie=UTF8&amp;qid=1312752536&amp;sr=8-1">paperback</a> | <a href="http://www.amazon.com/Securing-SQL-Server-Protecting-ebook/dp/B004JHY9NE/ref=sr_1_2?ie=UTF8&amp;qid=1312752536&amp;sr=8-2">kindle</a> | <a href="http://www.securingsqlserver.com">website</a>) available on Amazon.com and other online retailers.</p>
<p>Denny</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/sql-server/when-working-with-sql-in-a-cluster-the-account-rights-on-both-nodes-of-the-cluster-need-to-be-the-same/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMware 4.1 has some &#8220;great&#8221; security &#8220;features&#8221; when you upgrade</title>
		<link>http://itknowledgeexchange.techtarget.com/sql-server/vmware-41-has-some-great-security-features-when-you-upgrade/</link>
		<comments>http://itknowledgeexchange.techtarget.com/sql-server/vmware-41-has-some-great-security-features-when-you-upgrade/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 11:00:32 +0000</pubDate>
		<dc:creator>Denny Cherry</dc:creator>
				<category><![CDATA[Permissions]]></category>
		<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/sql-server/?p=1223</guid>
		<description><![CDATA[So after I upgraded from VMware&#8217;s vSphere 4.0 to 4.1 I ran across an awesome &#8220;feature&#8221;.  Apparently for security purposes VMware&#8217;s vSphere decided that after the upgrade no one can log into the server except for root, and the vpxuser (the account that the vCenter server uses to log into the hosts).  Given that root [...]]]></description>
				<content:encoded><![CDATA[<p>So after I upgraded from VMware&#8217;s vSphere 4.0 to 4.1 I ran across an awesome &#8220;feature&#8221;.  Apparently for security purposes VMware&#8217;s vSphere decided that after the upgrade no one can log into the server except for root, and the vpxuser (the account that the vCenter server uses to log into the hosts).  Given that root can&#8217;t log into the server remotly that presents with a little bit or a problem as without going to the data center (or using a remote KVM of some sort) you have no access to the physical console.</p>
<p>Fixing this is actually a rather easy fix.  Log into the server&#8217;s console as root, then edit the /etc/security/access.conf and add a new line for each user that needs access.</p>
<p>Now if you have several users that need access to the physical hosts, then create a group in unix, and add this group to the access.conf file.  Each new line should look something like&#8230;</p>
<blockquote><p>+:UserName|GroupName:ALL</p></blockquote>
<p>In the case of my account the line looks something like this.</p>
<blockquote><p>+:dcherry:ALL</p></blockquote>
<p>If you wanted to use a group, then the line is similar.</p>
<blockquote><p>+:groupname:ALL</p></blockquote>
<p>Have fun fixing this little one if you&#8217;ve got a lot of VMware hosts to fix.</p>
<p>Denny</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/sql-server/vmware-41-has-some-great-security-features-when-you-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DENY overwrites GRANT, most of the time</title>
		<link>http://itknowledgeexchange.techtarget.com/sql-server/deny-overwrites-grant-most-of-the-time/</link>
		<comments>http://itknowledgeexchange.techtarget.com/sql-server/deny-overwrites-grant-most-of-the-time/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 11:00:30 +0000</pubDate>
		<dc:creator>Denny Cherry</dc:creator>
				<category><![CDATA[Permissions]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/sql-server/?p=698</guid>
		<description><![CDATA[SQL Server rights are pretty easy to work with most of the time.  You grant a bunch of rights to an object, then you deny rights to those objects and the user looses the rights.  Pretty easy.  Now the catch is that if you use the fixed database roles, those roles overwrite any denies that [...]]]></description>
				<content:encoded><![CDATA[<p>SQL Server rights are pretty easy to work with most of the time.  You grant a bunch of rights to an object, then you deny rights to those objects and the user looses the rights.  Pretty easy.  Now the catch is that if you use the fixed database roles, those roles overwrite any denies that are in place.<span id="more-698"></span></p>
<p>So if you deny a user access to a bunch of tables, then you put that user into the db_datareader fixed database role that user will have select rights to all the tables in the database, including all the tables that the user has been denied access to.</p>
<p>Denny</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/sql-server/deny-overwrites-grant-most-of-the-time/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Changing the default owner when creating objects</title>
		<link>http://itknowledgeexchange.techtarget.com/sql-server/changing-the-default-owner-when-creating-objects/</link>
		<comments>http://itknowledgeexchange.techtarget.com/sql-server/changing-the-default-owner-when-creating-objects/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 11:00:00 +0000</pubDate>
		<dc:creator>Denny Cherry</dc:creator>
				<category><![CDATA[Permissions]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[T/SQL]]></category>
		<category><![CDATA[Tables]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/sql-server/changing-the-default-owner-when-creating-objects/</guid>
		<description><![CDATA[When a user that doesn&#8217;t have sysadmin rights creates objects by default they will be created in the schema that is the users default schema.  Now the catch to this is that if you grant the user rights into the database via a domain group that domain group then the user doesn&#8217;t have a default [...]]]></description>
				<content:encoded><![CDATA[<p>When a user that doesn&#8217;t have sysadmin rights creates objects by default they will be created in the schema that is the users default schema.  Now the catch to this is that if you grant the user rights into the database via a domain group that domain group then the user doesn&#8217;t have a default schema.</p>
<p>So, now how do you fix this?  Unfortunately the only fix to this is to grant the users Windows login as a separate login, then grant this login rights into the database.  You can then grant the user which is mapped directly to the users Windows login a default schema of dbo.</p>
<p>Because of this the user should specify the schema when creating objects.</p>
<p>The downside to this is that they won&#8217;t be able to use the object editor to create new tables.  All new tables will need to be created in T/SQL directly.</p>
<p>Denny</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/sql-server/changing-the-default-owner-when-creating-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rights to System Stored Procedures</title>
		<link>http://itknowledgeexchange.techtarget.com/sql-server/rights-to-system-stored-procedures/</link>
		<comments>http://itknowledgeexchange.techtarget.com/sql-server/rights-to-system-stored-procedures/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 02:47:00 +0000</pubDate>
		<dc:creator>Denny Cherry</dc:creator>
				<category><![CDATA[Permissions]]></category>
		<category><![CDATA[System Objects]]></category>

		<guid isPermaLink="false">http://itknowledgeexchange.techtarget.com/sql-server/?p=382</guid>
		<description><![CDATA[Why on earth to people want to go changing the rights on the system objects. 99% of the time the rights are exactly what they need to be.  Now sometimes you may need to tweak them so that no one has rights to create jobs on the production SQL Servers but they do have the [...]]]></description>
				<content:encoded><![CDATA[<p>Why on earth to people want to go changing the rights on the system objects.<span id="more-382"></span></p>
<p>99% of the time the rights are exactly what they need to be.  Now sometimes you may need to tweak them so that no one has rights to create jobs on the production SQL Servers but they do have the ability to query the tables, so you revoke the rights to sp_add_job.  I can see that (heck I&#8217;ve even done it before).</p>
<p>But someone&#8217;s auditor told them that they needed to remove the rights to the extended stored procedure sp_reset_connection.  Now this isn&#8217;t something that is normally called by a client app.  It&#8217;s called automatically by the SQL driver when the client app is going to reconnect to a pooled connection to let the SQL Server know to clean up it&#8217;s data so that the connection is ready to be reused.</p>
<p>Did the auditor know what this procedure was used for?  Probably not.  Most people don&#8217;t have the slightest idea what this procedure is, or what it does.  If you watch SQL Profiler you&#8217;ll see it go scrolling by with no idea what it is used for.  Why did this auditor decide that in order to pass the audit this procedure shouldn&#8217;t be allowed to be used?  I&#8217;ve got no idea, but I would imagine that at some point some DBA at some other companies told them that they didn&#8217;t use it, and that they disabled it.  As long as no connection pooling was being used they probably didn&#8217;t notice any problems, however if temp tables are left in the session, there could be a collision.</p>
<p>If this was my system, I&#8217;d go to my manager and explain what this was, and what it was used for.  I&#8217;d then go to the auditor and let them know that the rights weren&#8217;t going to be changed.</p>
<p>Before just blindly following an order to change rights on any system object be sure to see what will happen when that procedure isn&#8217;t available to other users.  Removing rights to system procedures could end up having disastrous results if you are not careful.</p>
<p>Denny</p>
<!-- wpms-network-global-inserts -->]]></content:encoded>
			<wfw:commentRss>http://itknowledgeexchange.techtarget.com/sql-server/rights-to-system-stored-procedures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
