<?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> &#187; Database Role</title>
	<atom:link href="http://benchmarkitconsulting.com/tag/database-role/feed/" rel="self" type="application/rss+xml" />
	<link>http://benchmarkitconsulting.com</link>
	<description></description>
	<lastBuildDate>Mon, 06 Feb 2012 16:34:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Database Role Audit (alpha version)</title>
		<link>http://benchmarkitconsulting.com/colin-stasiuk/2009/02/10/database-role-audit-feedback-requested-pls/</link>
		<comments>http://benchmarkitconsulting.com/colin-stasiuk/2009/02/10/database-role-audit-feedback-requested-pls/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 18:58:07 +0000</pubDate>
		<dc:creator>Colin Stasiuk</dc:creator>
				<category><![CDATA[Benchmark IT Consulting]]></category>
		<category><![CDATA[Colin Stasiuk]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Audit]]></category>
		<category><![CDATA[Database Role]]></category>

		<guid isPermaLink="false">http://benchmarkitconsulting.com/?p=430</guid>
		<description><![CDATA[OK so this is kind of a &#8220;part 2&#8243; to a post I made a while back about doing a SQL Server Role Audit. I wanted to go to the next level down and do the same type of thing for all database roles (system and user). This is definitely an &#8220;alpha version&#8221; of the [...]]]></description>
			<content:encoded><![CDATA[<p>OK so this is kind of a &#8220;part 2&#8243; to a post I made a while back about doing a <a href="http://benchmarkitconsulting.com/colin-stasiuk/2008/11/06/server-role-audit/" target="_blank">SQL Server Role Audit</a>. I wanted to go to the next level down and do the same type of thing for all database roles (system and user). This is definitely an &#8220;alpha version&#8221; of the script. It&#8217;s meant to run in SQL 2005/2008 but still work on databases running in 80 Compatibility Mode.</p>
<p>I would LOVE some feedback/comments/suggestions/etc&#8230; what I would love even more is a link to a better script that does the same thing <img src='http://benchmarkitconsulting.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>LOL remember this is v1 so I haven&#8217;t really gone back through it and made it &#8220;net worthy&#8221; but if you could give it a run, give me some feedback, etc it would be greatly appreciated <img src='http://benchmarkitconsulting.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><code style="font-size: 11px;"><span style="color:blue">SET&nbsp;</span><span style="color:black">NOCOUNT&nbsp;</span><span style="color:blue">ON&nbsp; <br />DECLARE&nbsp;</span><span style="color:#434343">@DatabaseRoles&nbsp;</span><span style="color:blue">NVARCHAR</span><span style="color:gray">(</span><span style="color:blue">MAX</span><span style="color:gray">)&nbsp; <br /></span><span style="color:blue">DECLARE&nbsp;</span><span style="color:#434343">@SQLSTMT&nbsp;</span><span style="color:blue">NVARCHAR</span><span style="color:gray">(</span><span style="color:blue">MAX</span><span style="color:gray">)&nbsp; <br /></span><span style="color:blue">DECLARE&nbsp;</span><span style="color:#434343">@cmptlevel&nbsp;</span><span style="color:blue">INT&nbsp; </p>
<p>SELECT&nbsp;</span><span style="color:#434343">@cmptlevel&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:gray">(</span><span style="color:blue">SELECT&nbsp;</span><span style="color:black">cmptlevel&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">FROM&nbsp;</span><span style="color:black">master.dbo.sysdatabases&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">WHERE&nbsp;</span><span style="color:black">dbid&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:magenta">DB_ID</span><span style="color:gray">())&nbsp; </p>
<p></span><span style="color:blue">CREATE&nbsp;TABLE&nbsp;</span><span style="color:#434343">#DatabaseRoleMatrix</span><span style="color:gray">(&nbsp; <br />&nbsp;&nbsp;</span><span style="color:black">[DatabaseUserName]&nbsp;</span><span style="color:blue">VARCHAR</span><span style="color:gray">(</span><span style="color:black">256</span><span style="color:gray">), <br />&nbsp;&nbsp;</span><span style="color:black">[DatabaseUserType]&nbsp;</span><span style="color:blue">VARCHAR</span><span style="color:gray">(</span><span style="color:black">10</span><span style="color:gray">),&nbsp; <br />&nbsp;&nbsp;</span><span style="color:black">[DatabaseRoleName]&nbsp;</span><span style="color:blue">VARCHAR&nbsp;</span><span style="color:gray">(</span><span style="color:black">256</span><span style="color:gray">),&nbsp; <br />&nbsp;&nbsp;</span><span style="color:black">[RoleAccess]&nbsp;&nbsp;&nbsp;</span><span style="color:blue">CHAR</span><span style="color:gray">(</span><span style="color:black">1</span><span style="color:gray">))&nbsp; </p>
<p></span><span style="color:blue">INSERT&nbsp;INTO&nbsp;</span><span style="color:#434343">#DatabaseRoleMatrix</span><span style="color:gray">(</span><span style="color:black">[DatabaseUserName]</span><span style="color:gray">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:black">[DatabaseUserType]</span><span style="color:gray">,&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:black">[DatabaseRoleName]</span><span style="color:gray">,&nbsp;</span><span style="color:black">[RoleAccess]</span><span style="color:gray">)&nbsp; <br /></span><span style="color:blue">SELECT&nbsp;&nbsp;</span><span style="color:gray">NULL&nbsp;</span><span style="color:blue">AS&nbsp;</span><span style="color:red">&#39;DatabaseUserName&#39;</span><span style="color:gray">,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red">&#39;Role&#39;&nbsp;</span><span style="color:blue">AS&nbsp;</span><span style="color:red">&#39;DatabaseUserType&#39;</span><span style="color:gray">,&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:black">name&nbsp;</span><span style="color:blue">AS&nbsp;</span><span style="color:red">&#39;DatabaseRoleName&#39;</span><span style="color:gray">,&nbsp;NULL&nbsp;</span><span style="color:blue">AS&nbsp;</span><span style="color:red">&#39;RoleAccess&#39;&nbsp; <br /></span><span style="color:blue">FROM&nbsp;</span><span style="color:black">dbo.sysusers&nbsp; <br /></span><span style="color:blue">WHERE&nbsp;</span><span style="color:black">issqlrole&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:black">1&nbsp; <br /></span><span style="color:blue">UNION&nbsp;</span><span style="color:gray">ALL&nbsp; <br /></span><span style="color:blue">SELECT&nbsp;&nbsp;</span><span style="color:black">b.name&nbsp;</span><span style="color:blue">AS&nbsp;</span><span style="color:red">&#39;DatabaseUserName&#39;</span><span style="color:gray">,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:magenta">CASE <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">WHEN&nbsp;</span><span style="color:black">b.issqlrole&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:black">1&nbsp;</span><span style="color:blue">THEN&nbsp;</span><span style="color:red">&#39;Role&#39; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">ELSE&nbsp;&nbsp;</span><span style="color:red">&#39;User&#39;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">END</span><span style="color:gray">,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:black">c.name&nbsp;</span><span style="color:blue">AS&nbsp;</span><span style="color:red">&#39;DatabaseRoleName&#39;</span><span style="color:gray">,&nbsp;</span><span style="color:red">&#39;X&#39;&nbsp;</span><span style="color:blue">AS&nbsp;</span><span style="color:red">&#39;RoleAccess&#39;&nbsp; <br /></span><span style="color:blue">FROM&nbsp;</span><span style="color:black">dbo.sysusers&nbsp;b&nbsp;</span><span style="color:magenta">LEFT&nbsp;</span><span style="color:gray">OUTER&nbsp;</span><span style="color:blue">JOIN&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:black">dbo.sysmembers&nbsp;&nbsp;a&nbsp;</span><span style="color:blue">ON&nbsp;</span><span style="color:black">a.memberuid&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:black">b.uid&nbsp;</span><span style="color:magenta">LEFT&nbsp;</span><span style="color:gray">OUTER&nbsp;</span><span style="color:blue">JOIN&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:black">dbo.sysusers&nbsp;c&nbsp;</span><span style="color:blue">ON&nbsp;</span><span style="color:black">a.groupuid&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:black">c.uid&nbsp;&nbsp; <br /></span><span style="color:blue">WHERE&nbsp;&nbsp;&nbsp;</span><span style="color:black">b.name&nbsp;</span><span style="color:gray">NOT&nbsp;</span><span style="color:blue">IN</span><span style="color:gray">(</span><span style="color:red">&#39;db_owner&#39;</span><span style="color:gray">,</span><span style="color:red">&#39;db_accessadmin&#39;</span><span style="color:gray">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red">&#39;db_securityadmin&#39;</span><span style="color:gray">,</span><span style="color:red">&#39;public&#39;</span><span style="color:gray">,&nbsp; <br />&nbsp;</span><span style="color:red">&#39;db_ddladmin&#39;</span><span style="color:gray">,</span><span style="color:red">&#39;db_backupoperator&#39;</span><span style="color:gray">,</span><span style="color:red">&#39;db_datareader&#39;</span><span style="color:gray">, <br />&nbsp;</span><span style="color:red">&#39;db_datawriter&#39;</span><span style="color:gray">, <br />&nbsp;</span><span style="color:red">&#39;db_denydatareader&#39;</span><span style="color:gray">,</span><span style="color:red">&#39;db_denydatawriter&#39;</span><span style="color:gray">)&nbsp;&nbsp; </p>
<p></span><span style="color:blue">IF&nbsp;</span><span style="color:#434343">@cmptlevel&nbsp;</span><span style="color:gray">&gt;&nbsp;</span><span style="color:black">80&nbsp; <br /></span><span style="color:blue">BEGIN&nbsp; <br />&nbsp;&nbsp;SELECT&nbsp;</span><span style="color:#434343">@DatabaseRoles&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:magenta">COALESCE</span><span style="color:gray">(</span><span style="color:#434343">@DatabaseRoles&nbsp;</span><span style="color:gray">+&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red">&#39;,[&#39;&nbsp;</span><span style="color:gray">+&nbsp;</span><span style="color:magenta">CAST</span><span style="color:gray">(</span><span style="color:black">DatabaseRoleName&nbsp;</span><span style="color:blue">AS&nbsp;VARCHAR</span><span style="color:gray">)&nbsp;+&nbsp;</span><span style="color:red">&#39;]&#39;</span><span style="color:gray">,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red">&#39;[&#39;&nbsp;</span><span style="color:gray">+&nbsp;</span><span style="color:magenta">CAST</span><span style="color:gray">(</span><span style="color:black">DatabaseRoleName&nbsp;</span><span style="color:blue">AS&nbsp;VARCHAR</span><span style="color:gray">)+&nbsp;</span><span style="color:red">&#39;]&#39;</span><span style="color:gray">)&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">FROM&nbsp;</span><span style="color:#434343">#DatabaseRoleMatrix&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">WHERE&nbsp;</span><span style="color:black">DatabaseRoleName&nbsp;</span><span style="color:blue">IS&nbsp;</span><span style="color:gray">NOT&nbsp;NULL&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">GROUP&nbsp;BY&nbsp;</span><span style="color:black">DatabaseRoleName&nbsp; </p>
<p>&nbsp;&nbsp;</span><span style="color:blue">SET&nbsp;</span><span style="color:#434343">@SQLSTMT&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:red">&#39;&nbsp; <br />SELECT&nbsp;db_name()&nbsp;as&nbsp;&#39;&#39;db_name&#39;&#39;,&nbsp;*&nbsp; <br />FROM&nbsp;#DatabaseRoleMatrix&nbsp; <br />PIVOT&nbsp; <br />(&nbsp; <br />MAX(RoleAccess)&nbsp; <br />FOR&nbsp;[DatabaseRoleName]&nbsp; <br />IN&nbsp;(&#39;&nbsp;</span><span style="color:gray">+&nbsp;</span><span style="color:#434343">@DatabaseRoles&nbsp;</span><span style="color:gray">+&nbsp;</span><span style="color:red">&#39;)&nbsp; <br />)&nbsp; <br />AS&nbsp;p <br />WHERE&nbsp;DatabaseUserName&nbsp;IS&nbsp;NOT&nbsp;NULL <br />ORDER&nbsp;BY&nbsp;DatabaseUserType&nbsp;DESC,&nbsp;DatabaseUserName&#39;&nbsp; </p>
<p>&nbsp;&nbsp;</span><span style="color:blue">EXECUTE</span><span style="color:gray">(</span><span style="color:#434343">@SQLSTMT</span><span style="color:gray">)&nbsp; <br /></span><span style="color:blue">END&nbsp; </p>
<p>IF&nbsp;</span><span style="color:#434343">@cmptlevel&nbsp;</span><span style="color:gray">&lt;&nbsp;</span><span style="color:black">90&nbsp; <br /></span><span style="color:blue">BEGIN&nbsp; <br />&nbsp;&nbsp;CREATE&nbsp;TABLE&nbsp;</span><span style="color:#434343">#WhileDatabaseRole</span><span style="color:gray">(&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:black">[RowNum]&nbsp;</span><span style="color:blue">INT&nbsp;</span><span style="color:#434343">IDENTITY&nbsp;</span><span style="color:gray">(</span><span style="color:black">1</span><span style="color:gray">,</span><span style="color:black">1</span><span style="color:gray">)&nbsp;</span><span style="color:blue">PRIMARY&nbsp;KEY</span><span style="color:gray">,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:black">[DatabaseRoleName]&nbsp;</span><span style="color:blue">NVARCHAR</span><span style="color:gray">(</span><span style="color:black">256</span><span style="color:gray">))&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">DECLARE&nbsp;</span><span style="color:#434343">@RowCount&nbsp;</span><span style="color:blue">INT&nbsp; <br />&nbsp;&nbsp;DECLARE&nbsp;</span><span style="color:#434343">@DatabaseRoleList&nbsp;</span><span style="color:blue">NVARCHAR</span><span style="color:gray">(</span><span style="color:blue">MAX</span><span style="color:gray">)&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">DECLARE&nbsp;</span><span style="color:#434343">@DatabaseRoleName&nbsp;</span><span style="color:blue">NVARCHAR</span><span style="color:gray">(</span><span style="color:blue">MAX</span><span style="color:gray">)&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">SET&nbsp;</span><span style="color:#434343">@DatabaseRoleList&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:red">&#39;&#39;&nbsp; </p>
<p>&nbsp;&nbsp;</span><span style="color:blue">INSERT&nbsp;INTO&nbsp;</span><span style="color:#434343">#WhileDatabaseRole</span><span style="color:gray">(</span><span style="color:black">[DatabaseRoleName]</span><span style="color:gray">)&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">SELECT&nbsp;&nbsp;&nbsp;DISTINCT&nbsp;</span><span style="color:black">DatabaseRoleName&nbsp;&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">FROM&nbsp;&nbsp;</span><span style="color:#434343">#DatabaseRoleMatrix&nbsp;&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">WHERE&nbsp;</span><span style="color:black">DatabaseRoleName&nbsp;</span><span style="color:blue">IS&nbsp;</span><span style="color:gray">NOT&nbsp;NULL&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">ORDER&nbsp;BY&nbsp;</span><span style="color:black">DatabaseRoleName&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">SELECT&nbsp;</span><span style="color:#434343">@RowCount&nbsp;</span><span style="color:blue">=&nbsp;MAX</span><span style="color:gray">(</span><span style="color:black">[RowNum]</span><span style="color:gray">)&nbsp;</span><span style="color:blue">FROM&nbsp;</span><span style="color:#434343">#WhileDatabaseRole&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">SET&nbsp;</span><span style="color:#434343">@SQLSTMT&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:red">&#39;SELECT&nbsp;db_name()&nbsp;as&nbsp;&#39;&#39;db_name&#39;&#39;,&nbsp;&nbsp; <br />DatabaseUserName,&nbsp;DatabaseUserType,&nbsp;&nbsp;&#39;&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">WHILE&nbsp;</span><span style="color:#434343">@RowCount&nbsp;</span><span style="color:gray">&lt;&gt;&nbsp;</span><span style="color:black">0&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">BEGIN&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET&nbsp;</span><span style="color:#434343">@DatabaseRoleName&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:gray">(</span><span style="color:blue">SELECT&nbsp;</span><span style="color:black">[DatabaseRoleName]&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">FROM&nbsp;</span><span style="color:#434343">#WhileDatabaseRole&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">WHERE&nbsp;</span><span style="color:black">[RowNum]&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:#434343">@RowCount</span><span style="color:gray">)&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">SET&nbsp;</span><span style="color:#434343">@SQLSTMT&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:#434343">@SQLSTMT&nbsp;</span><span style="color:gray">+&nbsp;</span><span style="color:red">&#39;&nbsp;MAX( <br />    CASE&nbsp;WHEN&nbsp;DatabaseRoleName&nbsp;=&nbsp;&#39;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:gray">+&nbsp;</span><span style="color:blue">CHAR</span><span style="color:gray">(</span><span style="color:black">39</span><span style="color:gray">)&nbsp;+&nbsp;</span><span style="color:#434343">@DatabaseRoleName&nbsp;</span><span style="color:gray">+&nbsp;</span><span style="color:blue">CHAR</span><span style="color:gray">(</span><span style="color:black">39</span><span style="color:gray">)&nbsp;+&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red">&#39;&nbsp;THEN&nbsp;&#39;&#39;X&#39;&#39;&nbsp;END)&nbsp;AS&nbsp;&#39;&nbsp;</span><span style="color:gray">+&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">CHAR</span><span style="color:gray">(</span><span style="color:black">39</span><span style="color:gray">)&nbsp;+&nbsp;</span><span style="color:#434343">@DatabaseRoleName&nbsp;</span><span style="color:gray">+&nbsp;</span><span style="color:blue">CHAR</span><span style="color:gray">(</span><span style="color:black">39</span><span style="color:gray">)&nbsp;+&nbsp;</span><span style="color:red">&#39;,&#39;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">DELETE&nbsp;FROM&nbsp;</span><span style="color:#434343">#WhileDatabaseRole&nbsp;</span><span style="color:blue">WHERE&nbsp;</span><span style="color:black">[RowNum]&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:#434343">@RowCount&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue">SET&nbsp;</span><span style="color:#434343">@RowCount&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:#434343">@RowCount&nbsp;</span><span style="color:gray">-&nbsp;</span><span style="color:black">1&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">END&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;SELECT&nbsp;</span><span style="color:#434343">@SQLSTMT&nbsp;</span><span style="color:blue">=&nbsp;</span><span style="color:magenta">SUBSTRING</span><span style="color:gray">(</span><span style="color:#434343">@SQLSTMT</span><span style="color:gray">,&nbsp;</span><span style="color:black">1</span><span style="color:gray">,&nbsp;</span><span style="color:magenta">LEN</span><span style="color:gray">(</span><span style="color:#434343">@SQLSTMT</span><span style="color:gray">)-</span><span style="color:black">1</span><span style="color:gray">)&nbsp;+&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red">&#39;&nbsp;FROM&nbsp;#DatabaseRoleMatrix&nbsp;&nbsp; <br />&nbsp;&nbsp;WHERE&nbsp;DatabaseUserName&nbsp;IS&nbsp;NOT&nbsp;NULL&nbsp;&nbsp; <br />&nbsp;&nbsp;GROUP&nbsp;BY&nbsp;DatabaseUserName,&nbsp;DatabaseUserType&nbsp;&nbsp; <br />&nbsp;&nbsp;ORDER&nbsp;BY&nbsp;DatabaseUserType&nbsp;DESC,&nbsp;DatabaseUserName&#39;&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">EXEC&nbsp;</span><span style="color:darkred">sp_executesql&nbsp;</span><span style="color:#434343">@SQLSTMT&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;</span><span style="color:blue">DROP&nbsp;TABLE&nbsp;</span><span style="color:#434343">#WhileDatabaseRole&nbsp; <br />&nbsp;&nbsp;&nbsp; <br /></span><span style="color:blue">END&nbsp; </p>
<p>DROP&nbsp;TABLE&nbsp;</span><span style="color:#434343">#DatabaseRoleMatrix <br />&nbsp; <br /></span></code></p>
<p>UPDATE: <a href="http://www.truthsolutions.com/" target="_blank">K. Brian Kelley</a> asked if handles nested user defined database roles&#8230;. it does now <img src='http://benchmarkitconsulting.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Enjoy!!</p>
<p> <a href="http://benchmarkitconsulting.com"><img class="alignnone size-full wp-image-402" title="benchmark_sm" src="http://benchmarkitconsulting.com/wp-content/uploads/2009/02/benchmark_sm.jpg" alt="" /></a><a href="http://sqlserverpedia.com/wiki/Editors#Colin_Stasiuk" target="_blank"><img src="http://sqlserverpedia.com/badges/SQLServerPedia_Badge_Blogger.jpg" alt="" /> </a></p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Database+Role+Audit+%28alpha+version%29+http://tinyurl.com/cbcb24" title="Post to Twitter"><img class="nothumb" src="http://benchmarkitconsulting.com/wp-content/plugins/tweet-this/icons/tt-twitter-big4.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://benchmarkitconsulting.com/colin-stasiuk/2009/02/10/database-role-audit-feedback-requested-pls/&amp;title=Database+Role+Audit+%28alpha+version%29" title="Post to Delicious"><img class="nothumb" src="http://benchmarkitconsulting.com/wp-content/plugins/tweet-this/icons/tt-delicious-big4.png" alt="Post to Delicious" /></a> <a class="tt" href="http://digg.com/submit?url=http://benchmarkitconsulting.com/colin-stasiuk/2009/02/10/database-role-audit-feedback-requested-pls/&amp;title=Database+Role+Audit+%28alpha+version%29" title="Post to Digg"><img class="nothumb" src="http://benchmarkitconsulting.com/wp-content/plugins/tweet-this/icons/tt-digg-big4.png" alt="Post to Digg" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://benchmarkitconsulting.com/colin-stasiuk/2009/02/10/database-role-audit-feedback-requested-pls/&amp;title=Database+Role+Audit+%28alpha+version%29" title="Post to StumbleUpon"><img class="nothumb" src="http://benchmarkitconsulting.com/wp-content/plugins/tweet-this/icons/tt-su-big4.png" alt="Post to StumbleUpon" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://benchmarkitconsulting.com/colin-stasiuk/2009/02/10/database-role-audit-feedback-requested-pls/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

