<?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>Weblog.BassQ.nl &#187; Active Directory</title>
	<atom:link href="http://Weblog.BassQ.nl/index.php/tag/active-directory/feed/" rel="self" type="application/rss+xml" />
	<link>http://Weblog.BassQ.nl</link>
	<description>A Great Collection Of Information</description>
	<lastBuildDate>Fri, 21 Oct 2011 09:56:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Enable Active Directory Object Restore With Windows Server 2008 R2</title>
		<link>http://Weblog.BassQ.nl/index.php/enable-active-directory-object-restore-with-windows-server-2008-r2/</link>
		<comments>http://Weblog.BassQ.nl/index.php/enable-active-directory-object-restore-with-windows-server-2008-r2/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 18:51:51 +0000</pubDate>
		<dc:creator>BassQ</dc:creator>
				<category><![CDATA[Weblog]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://Weblog.BassQ.nl/?p=781</guid>
		<description><![CDATA[The Active Directory Recycle Bin in Windows Server 2008 R2 by Jonathan Medd : http://www.simple-talk.com/sysadmin/exchange/the-active-directory-recycle-bin-in-windows-server-2008-r2/ Since Active Directory was included as part of Window Server 2000, administrators have often asked for  a simple way to roll back mistakes, whether that &#8230; <a href="http://Weblog.BassQ.nl/index.php/enable-active-directory-object-restore-with-windows-server-2008-r2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The Active Directory Recycle Bin in Windows Server 2008 R2 by Jonathan Medd : <a href="http://www.simple-talk.com/sysadmin/exchange/the-active-directory-recycle-bin-in-windows-server-2008-r2/" target="_blank">http://www.simple-talk.com/sysadmin/exchange/the-active-directory-recycle-bin-in-windows-server-2008-r2/</a></p>
<p>Since Active Directory was included as part of Window Server 2000, administrators have often asked for  a simple way to roll back mistakes, whether that is the incorrect deletion of the wrong user account to the accidental removal of thousands of objects by deleting an OU. Before the release of Windows Server 2008 R2 there were a number of ways using built-in or third-party methods to restore Active Directory objects, but typically they were not as quick or complete as say retrieving a deleted email or file.</p>
<p>Microsoft has included with their release of Windows Server 2008 R2 the facility, under the correct conditions, to enable a Recycle Bin for Active Directory and allow simple restoration of objects which have been erroneously removed. In this article we will briefly cover some of the options prior to 2008 R2 and then examine how to enable the new Recycle Bin and restore objects from it.</p>
<h2>Pre-Windows Server 2008 R2</h2>
<p>The 2008 R2 Recycle Bin for Active Directory is a great motivating point for upgrading your forest and domain(s) to the latest version, but this is not always a quick process in many enterprises so it is worth knowing what options are available prior to this version. Like many things it’s a lot better to examine and plan for possible resolutions before a significant mistake happens that you need to deal with. Retrieving Active Directory objects typically falls into two available categories, authoritative restore from a backup or tombstone reanimation.</p>
<h3><strong>Authoritative Restore </strong></h3>
<p>The Microsoft KB article 840001(<a href="http://support.microsoft.com/kb/840001">http://support.microsoft.com/kb/840001</a>) details how to perform the restoration of a user account using a system state backup of a domain controller. Typically, you would use a global catalog so that you can also restore all group membership information.</p>
<h3><strong>Tombstone Reanimation</strong></h3>
<p>The above article also details how to recover an account when you don’t have a system state backup by using tombstone reanimation which was introduced with Windows Server 2003 – you can retrieve objects from the Deleted Objects container where they are kept after deletion until their tombstone period expires. Obviously regular system state backups of Active Directory are critical for your full disaster recovery procedures, but taking advantage of tombstone reanimation means you can get objects back quicker than having to go through the full authoritative restore process.</p>
<p>You could use the procedure in the article which utilises the ldp.exe tool, but there are other methods around which you may find simpler.</p>
<ul>
<li>
<p style="text-align: left;">The article itself links to a Sysinternals tool, <strong>ADRestore</strong> (<a href="http://technet.microsoft.com/en-us/sysinternals/bb963906.aspx">http://technet.microsoft.com/en-us/sysinternals/bb963906.aspx</a>), which is a command line tool for reanimating objects.</p>
</li>
<li>
<p style="text-align: left;">The free <strong>ADRestore.Net</strong>, a GUI tool made by Microsoft PFE Guy Teverovsky. <a href="http://blogs.microsoft.co.il/blogs/guyt/archive/2007/12/15/adrestore-net-rewrite.aspx">http://blogs.microsoft.co.il/blogs/guyt/archive/2007/12/15/adrestore-net-rewrite.aspx</a>.</p>
</li>
<li>
<p style="text-align: left;">Quest produces a freeware product <strong>Object Restore for Active Directory</strong>, an easy to use GUI tool. <a href="http://www.quest.com/object-restore-for-active-directory/">http://www.quest.com/object-restore-for-active-directory/</a> (Note: there is a commercial version with more features, <strong>Recovery Manager for Active Directory</strong>.)</p>
</li>
<li>
<p style="text-align: left;">Quest also produces a cmdlet library for managing Active Directory with Windows PowerShell (<a href="http://www.quest.com/powershell/activeroles-server.aspx">http://www.quest.com/powershell/activeroles-server.aspx</a>). As of version 1.2 a number of the cmdlets had a Tombstone parameter added to them so that a search of objects would also include items which have been tombstoned. These results could then be piped through to the new cmdlet Restore-QADDeletedObject to undelete the object represented by the tombstone.  For instance the command<strong> Get-QADUser –Tombstone -LastChangedOn  ((Get-Date).adddays(-1)) | Restore-QADDeletedObject</strong> would restore all user accounts deleted yesterday.</p>
</li>
</ul>
<p>The drawback with tombstone reanimation is that because most of the object’s attributes are removed at the time of the object’s deletion, a restored object using this method requires many properties of the account, such as address fields and group membership, to be manually repopulated. Whilst this is obviously preferable to re-creating an account from scratch it does not make for a quick overall process. However, you will at least get back the objectGUID and objectSid attributes which means there would be no need to re-configure a user’s workstation profile.</p>
<p>The original release of Windows Server 2008 introduced snapshot backups for Active Directory. You can take point-in-time snapshots of your Active Directory with the <strong>NTDSUTIL</strong> command line utility which utilizes Volume Shadow Copy to provide a snapshot. It is then possible to mount this snapshot using different ports on the same domain controller as the live Active Directory database and use standard tools to compare the two. This could really make the tombstone reanimation a lot simpler because after restoring the object you could view two versions of Active Directory Users and Computers side by side and view the properties of the restored object from a previous time, so making it simpler to repopulate properties.</p>
<p>The Directory Service Comparison Tool (<a href="http://lindstrom.nullsession.com/?page_id=11">http://lindstrom.nullsession.com/?page_id=11</a>) takes advantage of these snapshots and makes the repopulation process more streamlined.</p>
<p>For those with Microsoft Exchange messaging environments, once you have the Active Directory account back, you can use the <strong>Reconnect Mailbox</strong> feature within Exchange to tie the restored account back up with the mailbox. This is of course providing you have a similar tombstone retention period for mailboxes that you do for AD accounts.</p>
<h2>Active Directory Recycle Bin</h2>
<p>The real reason you decided to read this article though was not so that we could spend time going over all the possible options for how you can piece together restored AD objects, but rather to find out how the Recycle Bin is going to make your life as an Active Directory administrator easier without necessarily the need for these different tools. The key differences from previous versions of Windows Server are that by default you get all of the attributes back and the tools to use are PowerShell cmdlets, which are quickly becoming a more essential part of every Windows administrator’s standard toolkit.</p>
<p>Firstly though the Active Directory Recycle Bin is not enabled by default and has certain domain and forest wide requirements before it can be enabled.</p>
<ul>
<li>Firstly, all domain controllers within the Active Directory forest must be running Windows Server 2008 R2.</li>
<li>Secondly, the functional level of the Active Directory forest must be Windows Server 2008 R2.</li>
</ul>
<p>Naturally organizations are typically cautious when upgrading Active Directory and these types of infrastructure projects don’t tend to happen quickly, but the Recycle Bin could be one of the features which gives you more weight behind a decision. You should also be aware though that enabling the Recycle Bin is a onetime only move, there’s no easy way to disable it again, so careful consideration of this decision must be taken.</p>
<p>It’s worth noting that if you are making a fresh forest install of Windows Server 2008 R2 the Active Directory schema will already include all of the necessary attributes for the Recycle Bin to function. If however you are upgrading your domain controllers from previous versions of Windows Server then you will need to run the well known procedure of <span> adprep /forestprep </span>and <span>adprep /domainprep</span> (for each domain) and possibly <span>adprep /domainprep /gpprep </span>(for Group Policy preparation)</p>
<p>before you can introduce Windows Server 2008 R2 domain controllers into the environment.</p>
<p>So let’s go ahead and run through all the steps we need to get the Recycle Bin enabled. Firstly, ensure that all of your domain controllers are running Windows Server 2008 R2 and then we need to use PowerShell; the great news with Windows Server 2008 R2 is that version 2 of PowerShell is installed by default and is placed directly on your taskbar.</p>
<p><img style="float: left;" src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A1.jpg" alt="" /></p>
<p>After you have installed Active Directory Domain Services the Active Directory specific cmdlets are available to use via a module; modules essentially are the evolution of snapins from version 1 of PowerShell. To access these cmdlets you can either open the Active Directory specific version of the PowerShell console from the Administrative Programs menu, or the method I would prefer, use the <strong>Import-Module</strong> cmdlet. (Tip: You could add the below expression to your PowerShell profile so that the cmdlets are available every time you open PowerShell)</p>
<p><strong>PS&gt; Import-Module activedirectory</strong></p>
<p>Once complete all of the Active Directory cmdlets will be at your fingertips. As previously discussed we now need to get the functional level of the forest up to the level of Windows Server 2008 R2. The most common way to do this previously was through Active Directory Domains and Trusts.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A2.jpg" alt="" /></p>
<p>Now though we can do this through PowerShell. The <strong>Get-ADForest</strong> cmdlet will return information about your forest and the <strong>Set-ADForestMode </strong>cmdlet will enable you to raise the current functional level – since it is such a significant change to your environment you will be prompted to confirm that you wish to go ahead.</p>
<div>
<p>PS&gt; Get-ADForest | Set-ADForestMode –ForestMode Windows2008R2Forest</p></div>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A3.jpg" alt="" /></p>
<p>Now that our forest is at the correct functional level we can enable the Recycle Bin, to do so we use the <strong>Enable-ADOptionalFeature</strong> cmdlet. This must be either run on the DC with the Domain Naming Master FSMO role or directed at that server with the <strong>–server</strong> parameter. Again you will be prompted to confirm your command since the action is irreversible.</p>
<div>
<p>PS&gt; Enable-ADOptionalFeature &#8216;Recycle Bin Feature&#8217; -Scope ForestOrConfigurationSet -target &#8216;test.local&#8217;</p></div>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A4.jpg" alt="" /></p>
<p><span id="more-781"></span>Now that we have the Recycle Bin enabled it’s time to go check out how we recover some deleted objects. In this environment we have a very simple AD structure with a couple of test accounts to illustrate the example.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A5.jpg" alt="" /></p>
<p>Let’s take the situation where an administrator accidently deletes the <strong>Users</strong> OU. One of the most common reasons this can happen is because it is actually possible to delete OU’s from the Group Policy Management tool, not just Active Directory Users and Computers – so an administrator might think they are removing a GPO and in a bad moment delete the wrong item and remove a whole OU. The administrator is prompted for what they are about to do, but I have seen it happen more than once!</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A6.jpg" alt="" /></p>
<p>The initial release of Windows 2008 Server actually included a new checkbox ‘Protect object from accidental deletion’. In the example of the OU below any attempt to delete the OU will be met with an <strong>Access is denied</strong> response and the administrator will actually have to remove the tick from that checkbox before the OU can be deleted.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A7.jpg" alt="" /></p>
<p>However, what you would naturally expect to happen as a consequence of the <strong>Protect object from accidental deletion</strong> would be any user or computer account created in that protected OU would also be supported by the same mechanism. Unfortunately by default they are not, so as a good practise you would either need to build that into your account creation process or programmatically check and set that checkbox on all accounts in the OU on a regular basis.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A8.jpg" alt="" /></p>
<p>Consequently, in the above example if we accept the warning to delete the OU we are greeted with an <strong>Access is denied</strong> message since the OU has protection set.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A9.jpg" alt="" /></p>
<p>So we were saved from deleting the OU, but all of the unprotected child objects were deleted.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A10.jpg" alt="" /></p>
<p>(For the purposes of this article I now remove the <strong>Users</strong> OU by first clearing the checkbox for protecting the object from accidental deletion.)</p>
<p>We can browse the current contents of the Active Directory Recycle Bin using the <strong>Get-ADObject</strong> cmdlet, directing it at the <strong>Deleted Objects</strong> container and using the <strong>–includeDeletedObjects</strong> parameter.</p>
<div>
<p>PS&gt; Get-ADObject –SearchBase “CN=Deleted Objects,DC=test,DC=local” –ldapFilter “(objectClass=*)” -includeDeletedObjects | Format-List Name,ObjectClass,ObjectGuid</p></div>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A11.jpg" alt="" /></p>
<p>We can see from the resultant output that we have both the <strong>Users</strong> OU in there and the two user accounts. So let’s try restoring one of the user accounts back, to do so we need the <strong>Restore-ADObject</strong> cmdlet and supply the ObjectGuid property of the user account.</p>
<div>
<p>PS&gt; Restore-ADObject –identity 2df74fba-7e86-4f75-b16d-5725ef45a45f</p></div>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A12.jpg" alt="" /></p>
<p>Oh dear, it failed to restore, but PowerShell tells us that it failed because the object’s parent no longer exists either, i.e. we need to first restore the <strong>Users</strong> OU. (Note: an alternative would be to use the  -targetpath parameter and re-direct the restore to a different OU)</p>
<p>To restore the <strong>Users</strong> OU we can use the same cmdlet (<strong>Restore-ADObject</strong>) as to restore users, just supply the ObjectGuid of the OU.</p>
<div>
<p>PS&gt; Restore-ADObject –identity 20142376-8a48-4b56-9972-0e64eb9e9a0f</p></div>
<p>The <strong>Users</strong> OU returns.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A13.jpg" alt="" /></p>
<p>Now we just need to get those user accounts back. Rather than have to type out the ObjectGuid for each account we wish to restore we can instead create a search which will match all of the accounts we wish to restore and then use the PowerShell pipeline to send those results to the <strong>Restore-ADObject</strong> cmdlet.</p>
<div>
<p>PS&gt; Get-ADObject -ldapFilter &#8220;(lastKnownParent=OU=Users,OU=Resources,DC=test,DC=local)&#8221; -includeDeletedObjects | Restore-ADObject</p></div>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A14.jpg" alt="" /></p>
<p>The user accounts are back in the <strong>Users</strong> OU.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A15.jpg" alt="" /></p>
<p>If we check the properties of the account we can confirm that different from tombstone re-animation we get all of the properties back.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A16.jpg" alt="" /></p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A17.jpg" alt="" /></p>
<h2>Active Directory Recycle Bin PowerPack for PowerGUI</h2>
<p>Although the Recycle Bin is a great new feature within Windows Server 2008 R2 Microsoft is already getting feedback that there is no GUI for managing it. Whilst a lot of administrators are comfortable with PowerShell, some may still prefer to use a GUI based management tool for these tasks. Fortunately a great tool to plug this gap has already been provided by the community; PowerShell MVP Kirk Munro has created the Active Directory Recycle Bin PowerPack for PowerGUI (<a href="http://www.powergui.org/entry.jspa?categoryID=21&amp;externalID=2461">http://www.powergui.org/entry.jspa?categoryID=21&amp;externalID=2461</a>). This free tool has bundled up scripts using the previously demonstrated Active Directory PowerShell cmdlets and provides a graphical front end for administration.</p>
<p>Simply download the PowerGUI tool plus the Active Directory Recycle Bin PowerPack and import it into PowerGUI. Open up the PowerPack and you will have a graphical view of the current contents of the Recycle Bin with the ability to drill down through Organisational Units. Options for restoring single items or recursively are provided in the <strong>Actions</strong> column as well as alternate restoration paths and emptying items from the Recycle Bin.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A18.jpg" border="0" alt="" /></p>
<p>It is also possible to use the <strong>Configure recycle bin</strong> action to set the values for <strong>DeletedObjectLifetime</strong>, the amount of days objects reside in the Recycle Bin, and <strong>TombstoneLifetime</strong>, the amount of days objects can be restored using Tombstone Reanimation after they have left the Recycle Bin. In Windows Server 2008 R2 both of these values default to 180 days, in some earlier versions of Windows Server this value was 60 days and if you upgrade those domain controllers it will remain the same so you may wish to change the values – you can use the <strong>Modify</strong> action to do this.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A19.jpg" alt="" /></p>
<p>For this example I have deleted from Active Directory the <strong>Resources</strong> and<strong> Users</strong> containers and the two user accounts which you can see nicely in the below screenshot using PowerGUI.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A20.jpg" alt="" /></p>
<p>This time we will restore the account <strong>Joe Bloggs</strong>, but to an alternative location using the <strong>Restore to&#8230;. </strong>Action. (Remember: this is done in PowerShell using the <strong>–targetpath</strong> parameter of the <strong>Restore-ADObject cmdlet</strong>) Simply input the path to the Organisational Unit you wish to restore the object to. In this example we use the default <strong>Users</strong> container as the target location.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A21.jpg" alt="" /></p>
<p>The user has been restored to the alternate location; this is particularly useful if we did not wish to bring back the entire OU(s) as we did previously.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A22.jpg" alt="" /></p>
<p>If however, you do wish to bring back the contents of an entire OU and everything below it there is an action, <strong>Restore (recursive</strong>).</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A23.jpg" alt="" /></p>
<p>Using the <strong>Restore</strong> <strong>(recursive)</strong> action in this scenario brings back both the <strong>Resources</strong> and <strong>Users</strong> OU’s as well as the single account remaining in it, <strong>Jane Smith</strong>.</p>
<p><img src="http://www.simple-talk.com/iwritefor/articlefiles/811-Medd%20A24.jpg" alt="" /></p>
<p>Hopefully in a future release of Windows Server this functionality will be provided out of the box, the most natural home would be a viewable container within Active Directory Users and Computers, until then the Recycle Bin PowerPack for PowerGUI will prove very useful.</p>
<h2>Summary</h2>
<p>One of the most requested features for a long time with Active Directory has been a Recycle Bin. Microsoft has finally delivered this with the release of Windows Server 2008 R2. It may not be a feature that enterprises get to use for a little while given the system requirements of all 2008 R2  Domain Controllers and your Active Directory Forest at 2008 R2 functional level, but it could be one of those compelling reasons that enables you to pursue an upgrade.</p>
<p>Administration is via the new Active Directory PowerShell cmdlets which Microsoft is using to provide a consistent command line interface across all of their products. Although currently there is no native GUI for these administration tasks, the Active Directory Recycle Bin PowerPack for PowerGUI enables administrators to leverage the underlying PowerShell functionality and provide a graphical interface for carrying out these tasks.</p>
<p><map name='google_ad_map_781_9f24cd510f3f6f88'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/781?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_781_9f24cd510f3f6f88' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=781&amp;url= http%3A%2F%2FWeblog.BassQ.nl%2Findex.php%2Fenable-active-directory-object-restore-with-windows-server-2008-r2%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://Weblog.BassQ.nl/index.php/enable-active-directory-object-restore-with-windows-server-2008-r2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading your Active Directory to Windows Server 2008</title>
		<link>http://Weblog.BassQ.nl/index.php/upgrading-your-active-directory-to-windows-server-2008/</link>
		<comments>http://Weblog.BassQ.nl/index.php/upgrading-your-active-directory-to-windows-server-2008/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 09:54:30 +0000</pubDate>
		<dc:creator>BassQ</dc:creator>
				<category><![CDATA[Weblog]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://Weblog.BassQ.nl/?p=142</guid>
		<description><![CDATA[Ways to migrate As shown last time upgrading your Windows Server 2003 Active Directory environment to Windows Server 2008 can be done in three distinct ways: In-place upgrading Windows Server 2003 and Windows Server 2003 R2 can both be upgraded &#8230; <a href="http://Weblog.BassQ.nl/index.php/upgrading-your-active-directory-to-windows-server-2008/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a id="2008UpgdWaystomigrate"></a></p>
<h4><a id="2008UpgdWaystomigrate">Ways to migrate</a></h4>
<p>As shown last time upgrading your Windows Server 2003 Active Directory environment to Windows Server 2008 can be done in three distinct ways:</p>
<ul>
<li><strong>In-place upgrading</strong><br />
Windows Server 2003 and Windows Server 2003 R2 <a href="http://blogs.technet.com/askperf/archive/2008/02/01/ws2008-upgrade-paths-resource-limits-registry-values.aspx">can both be upgraded in-place</a> to Windows Server 2008</li>
<li><strong>Transitioning</strong><br />
Migrating this way means adding Windows Server 2008 Domain Controllers to your existing Active Directory environment. �</li>
<li><strong>Restructuring </strong><br />
A third way to go from Windows Server 2003 Domain Controllers to Windows Server 2008 Domain Controllers is restructuring your Active Directory environment. This involves moving all your resources from one (Windows Server 2003) domain to a new and fresh (Windows Server 2008) domain. Tools like the Active Directory Migration Tool (ADMT) are priceless in these kind of migrations.</li>
</ul>
<p><a id="2008UpgdReasonstoupgradein-place"></a></p>
<h4><a id="2008UpgdReasonstoupgradein-place">Reasons to upgrade in-place</a></h4>
<p>In-place upgrading is the path of the least investment. You can simply reuse your existing Windows Server 2003 and Windows Server 2003 R2 Domain Controllers as Windows Server 2008 Domain Controllers.</p>
<p>Just like transitioning In-place upgrading means you get to keep your current Active Directory lay-out, contents, group policies and schema.</p>
<p>In-place upgrading is good when:</p>
<ul>
<li>You worked hard to get your Active Directory in the shape it&#8217;s in.</li>
<li>Your servers are in tip-top shape.</li>
<li>There&#8217;s really no budget to buy new servers.</li>
</ul>
<p>Be sure your current Windows Server 2003 Domain Controllers will last another three to five years when you intend to upgrade them in-place. Transitioning isn&#8217;t really any harder compared to in-place upgrading. So if you&#8217;re going to do either, please make sure you&#8217;re not heading for <em>double work</em> . It would be sad to see you upgrade Domain Controllers now and see you transition in a year from now, while you could&#8217;ve easily transitioned in the first place.</p>
<p><span style="text-decoration: underline;">Remember:</span> You&#8217;re the one with the advantage in negotiations when your boss wants you to go to Windows Server 2008 and really doesn&#8217;t want to buy new servers.</p>
<p><a id="2008UpgdReasonsnottoupgradein-place"></a></p>
<h4><a id="2008UpgdReasonsnottoupgradein-place">Reasons not to upgrade in-place</a></h4>
<p>While I can find two main reasons to perform in-place upgrades, I can find a lot of reasons <span style="text-decoration: underline;">not</span> to perform them: (and choose another migration path)</p>
<ul>
<li>Your servers do not meet the required patchlevel for in-place upgrading<br />
(The Windows Server 2003 patchlevel should be at least Service Pack 1)</li>
<li>You want to upgrade across architectures (between x86, x64 and/or Itanium)</li>
<li>You&#8217;re running Windows Small Business Server 2003 or Windows Small Business Server 2003 R2 (upgrade scenarios for Small Business Server are uncertain at this moment)</li>
<li>You want to switch Windows Server edition (to obtain clustering for instance)
<ul>
<li>Standard Edition can be upgraded to both Standard and Enterprise Edition</li>
<li>Enterprise Edition can be upgraded to Enterprise Edition only</li>
<li>Datacenter Edition can be upgraded to Datacenter Edition only</li>
</ul>
</li>
<li>You want your Windows Server 2008 Domain Controllers to be Server Core installations of Windows Server 2008. Upgrading to Server Core is not possible</li>
<li>Your Windows Server 2003 Domain Controllers are equipped with a boot drive which has less than 14062 MB of free space (<a href="http://www.netometer.com/video/tutorials/windows_server_2008_inplace_upgrade/index.php">solution here</a> ) or your your Windows Server 2003 Domain Controllers do not meet <a href="http://www.microsoft.com/windowsserver2008/en/us/system-requirements.aspx">the Windows Server 2008 (recommended) System requirements</a> .</li>
<li>Applications on your existing Domain Controllers are not tested with or certified for usage on Windows Server 2008.</li>
<li>Applications or installed components on your Windows Server 2003 have known problems when upgrading in-place to Windows Server 2008. <a href="http://theessentialexchange.com/blogs/michael/archive/2008/04/02/Upgrading-Windows-Server-with-Exchange-2007.aspx">PowerShell and thus Exchange Server 2007</a> are such programs!</li>
</ul>
<p>If these considerations leave you with an undesirable outcome (for instance you wanted to migrate from 32bit Domain Controllers to 64bit Domain Controllers) choose to <a href="http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/03/02/transitioning-your-active-directory-to-windows-server-2008.aspx">transition your Windows Server Active Directory environment to Windows Server 2008</a> .</p>
<p><span id="more-142"></span></p>
<p><a id="2008UpgdStepstoupgradein-place"></a></p>
<h2><a id="2008UpgdStepstoupgradein-place">Steps to upgrade in-place</a></h2>
<p>Upgrading your Windows Server 2003 and Windows Server 2003 R2 Domain Controllers in-place to Windows Server 2008 Domain Controllers consists of the following steps:</p>
<p><a id="2008UpgdBeforeyoubegin"></a></p>
<h3><a id="2008UpgdBeforeyoubegin"><span style="color: #ff0000;">Before you begin</span> </a></h3>
<p><strong>Avoid common mistakes<br />
</strong> There is a very good Microsoft Knowledge Base article on <a href="http://support.microsoft.com/kb/555040">Common Mistakes When Upgrading a Windows 2000 Domain To a Windows 2003 Domain</a> , written by community experts.  I suggest you read it. (twice) Most of the contents also apply to transitioning from Windows Server 2003 (R2) to Windows Server 2008</p>
<p><strong>Plan your server lifecycle</strong><br />
It&#8217;s not uncommon for a Domain Controller to sit on your network for a period of five years. I believe you should take this in mind when selecting and buying a server. You should <a href="http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2007/05/30/big-drives-part-2.aspx">plan your partitions (or volumes) carefully</a> and <a href="http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2007/02/09/active-directory-on-separate-volumes.aspx">place the Active Directory files on separate volumes</a> when your needs justify it. The <a href="http://www.windowsservercatalog.com/">Windows Server catalog</a> helps you pick systems that will run Windows Server 2008 with ease.</p>
<p><strong>Assess your readiness</strong><br />
Microsoft has kindly provided a tool to scan systems to assess whether systems are capable of running Windows Server 2008, whether drivers are available (either from Microsoft update or on the installation media) and what problems you might encounter when upgrading to Windows server 2008. I recommend checking your systems with this tool, which is called the <a href="http://www.microsoft.com/map">Microsoft Assessment and Planning Solution Accelerator</a> (MAP for short).</p>
<p><strong>Backups</strong><br />
Make backups of all your Domain Controllers and verify you can restore these backups when needed.</p>
<p><strong>Documentation<br />
</strong> It is a good thing to know exactly what you&#8217;re migrating. When things go wrong you might need to be able to revert back to the old situation. This might require the Directory Services Restore Mode (DSRM) password and credentials for service accounts, which might not be written down anywhere. In multiple Domain Controller, multiple domain, multiple forest and multiple sites scenarios it&#8217;s very wise to make a table containing the relevant information per Domain Controller in terms of Flexible Single Master Operations (FSMO) roles, Global Catalog placement, domain membership, site membership, replication topology, routing tables, IP addressing, etc.</p>
<p><strong>Communication<br />
</strong> When done right your colleagues might not even suspect a thing, but it&#8217;s important to shed some light on what you&#8217;re doing. (Make someone) communicate to the end users that you&#8217;re going to mess with the core of their infrastructure. This might result in colleagues understanding you&#8217;re (really) busy and might also result in problems being reported fast. Both are good things if you&#8217;d ask me&#8230;</p>
<p><a id="2008UpgdPrepareyourActiveDirectoryenvironment"></a></p>
<h3><a id="2008UpgdPrepareyourActiveDirectoryenvironment">Prepare your Active Directory environment</a></h3>
<p>Before you can begin to upgrade the first Windows Server 2003 Domain Controller to a Windows Server 2008 Domain Controller, you first have to prepare the Active Directory.</p>
<p>Microsoft provides a tool called <strong>adprep.exe</strong> to facilitate this preparation. You need to run the following commands on the following servers in your Active Directory environment:</p>
<p>You need to run the following commands on the following servers in your Active Directory environment:</p>
<table border="1" cellspacing="0" cellpadding="2" width="518">
<tbody>
<tr>
<td width="230" valign="top"><strong>Command</strong></td>
<td width="285" valign="top"><strong>Domain Controller</strong></td>
</tr>
<tr>
<td width="230" valign="top">adprep.exe /forestprep</td>
<td width="285" valign="top">Schema Master</td>
</tr>
<tr>
<td width="230" valign="top">adprep.exe /domainprep</td>
<td width="285" valign="top">Infrastructure Master</td>
</tr>
<tr>
<td width="230" valign="top">adprep.exe /domainprep /gpprep</td>
<td width="285" valign="top">Infrastructure Master</td>
</tr>
<tr>
<td width="230" valign="top">adprep.exe /rodcprep *</td>
<td width="285" valign="top">Domain Naming Master</td>
</tr>
</tbody>
</table>
<p>* Optional when you want to deploy Read Only Domain Controllers.</p>
<p>After preparing your Active Directory for Windows Server 2008 be sure to check the process. Breadcrumbs to failures may be found in the event viewer, but real men will check the <strong>adprep.log</strong> files.</p>
<p>Allow sufficient time for proper replication to all your Windows Server 2003 Domain Controllers. (In large environments with specific replication needs this might take hours.) When you feel all changes have been replicated use the <a href="http://support.microsoft.com/kb/249256">replmon</a> and <a href="http://support.microsoft.com/kb/229896">repadmin</a> tools to check and optionally troubleshoot Active Directory replication.</p>
<p><a id="2008UpgdChoosingwhichDomainControllertoupgradefirst"></a></p>
<h3><a id="2008UpgdChoosingwhichDomainControllertoupgradefirst">Choosing which Domain Controller to upgrade first</a></h3>
<p>When your Active Directory forest consists of many Active Directory domains, begin your upgrades in the forest root domain.</p>
<p>Flexible Single Master Operations (FSMO) roles are key in your Active Directory environment. When your environment allows it, it <a href="http://support.microsoft.com/kb/555040">is recommended to</a> :</p>
<ul>
<li><a href="http://support.microsoft.com/kb/324801">Transfer all the Flexible Single Master Operations (FSMO) roles from the root domain (3) and the entire forest (2)</a> to a single Active Directory Domain Controller</li>
<li><a href="http://support.microsoft.com/kb/313994">Make all Domain Controllers Global Catalogs</a></li>
</ul>
<p>Perform an in-place upgrade of the Domain Controller holding all the Flexible Single Master Operations (FSMO) roles first. This will ensure the first Windows Server 2008 Domain Controller is a Global Catalog and all the Flexible Single Master Operations (FSMO) roles are on Windows Server 2008.</p>
<p>After you have upgraded the Domain Controller holding all the FSMO roles in the forest root domain, you can upgrade the Domain Controllers for additional domains in your forest. Place the domain-wide FSMO roles (3) on a single server and upgrade it in-place.</p>
<p>When you&#8217;re done upgrading other servers you can redistribute Flexible Single Master Operations (FSMO) roles across other servers, although it is a best practice to keep your Flexible Single Master Operations (FSMO) roles on as little servers as possible.</p>
<p><a id="2008UpgdUpgradethefirstDomainController"></a></p>
<h3><a id="2008UpgdUpgradethefirstDomainController">Upgrade the first Domain Controller</a></h3>
<p>After preparing your Active Directory environment you can start the in-place upgrade on your first Windows Server 2003 Domain Controller. Simply enter the Windows Server 2008 DVD, corresponding to the architecture (x86, x64 or Itanium) and the Edition (Standard, Enterprise, DataCenter) you&#8217;re migrating from and to.</p>
<p>In the initial <strong>Install Windows</strong> screen press the <strong>Install Now</strong> button to begin installation of Windows Server 2008.</p>
<p>The screen <strong>Get important updates for installation</strong> gives you the option to either go online and get the latest updates for installation or to skip going online. I recommend choosing <strong>Go online to get the latest updates for installation (recommended)</strong> , since Microsoft might enhance the Windows Server 2008 installation wizard by adding additional support for drivers and scenarios.</p>
<blockquote><p><strong><span style="text-decoration: underline;"><span style="color: #ff0000;">Note:<br />
</span> </span> </strong> These updates are not related to the updates your accustomed to receive through Windows or Microsoft Update. These updates relate to the Windows Server 2008 Installation process only. Microsoft may choose to enhance the installation experience between Service Pack releases.</p></blockquote>
<p>Depending on your media type you will see the <strong>Type your product key for activation </strong> window. If you do, simply type your Windows product key and tick the <strong>Automatically activate Windows when I&#8217;m online</strong> option.</p>
<p>In the <strong>Which type of installation do you want</strong> window select <strong>Upgrade</strong> .</p>
<p>The <strong>Compatibility report</strong> window will be displayed telling you what hardware might not function once upgrade is completed , also to check with software vendors to check if their software are compatible with Windows Server 2008. click <strong>Next</strong> .</p>
<p>The Installation wizard will now perform an in-place upgrade of your Windows Server 2003 Domain Controller. After multiple restarts, the Upgrade process will be completed and you will be able to start using your Windows Server 2008. Your upgrade might take hours to complete.</p>
<p><a id="2008UpgdUpgradeadditionalDomainControllers"></a></p>
<h3><a id="2008UpgdUpgradeadditionalDomainControllers">Upgrade additional Domain Controllers</a></h3>
<p>Upgrading additional Domain Controllers in place is as easy as repeating the steps for in-place upgrading the first Domain Controller.</p>
<p>If you want to deploy Read Only Domain Controllers (RODCs) in the same domain as your upgraded Domain Controller, make sure:</p>
<ul>
<li>You have deployed <strong>at least one</strong> Windows Server 2008 in each domain you want to deploy Read Only Domain Controllers, before you deploy the first Read Only Domain Controller.</li>
<li>Both the Forest functional level and Domain functional level are Windows Server 2003 at minimum, before you deploy the first Read Only Domain Controller.</li>
<li>You have run adprep.exe /rodcprep on the Domain Controller holding the Domain Naming Master Flexible Single Master Operations (FSMO) role for the forest you want to deploy Read Only Domain Controllers in, before you deploy the first Read Only Domain Controller.</li>
</ul>
<p><a id="2008UpgdRaisethedomainfunctionallevel"></a></p>
<h3><a id="2008UpgdRaisethedomainfunctionallevel">Raise the domain functional level</a></h3>
<p>After you&#8217;ve successfully upgraded the last Windows Server 2003 Domain Controller for a specific domain (or you don&#8217;t feel the need to ever add pre-Windows Server 2008 Domain Controllers to your Active Directory environment) you&#8217;re ready to raise the Domain functional level of that domain.</p>
<p>Upgrading the domain functional level to Windows Server 2008 adds the following features to your environment:</p>
<ul>
<li>Distributed File System Replication (DFS-R) support for SYSVOL, which provides more robust and detailed replication of SYSVOL contents with minimal replication traffic compared to FRS.</li>
<li>Advanced Encryption Services (AES 128 and 256) support for the Kerberos protocol.</li>
<li>Last Interactive Logon Information, which displays the time of the last successful interactive logon for a user, from what workstation, and the number of failed logon attempts since the last logon.</li>
<li>Fine-grained password policies, which make it possible for password and account lockout policies to be specified for users and global security groups in a domain, instead of per domain only.</li>
</ul>
<blockquote><p><strong><span style="text-decoration: underline;"><span style="color: #ff0000;">Note:</span> </span> </strong><br />
Raising the functional level is a one way procedure. Once you&#8217;ve raised your domain functional level there&#8217;s no way to return to the previous domain functional level.</p></blockquote>
<p>Raising the domain functional level in Windows Server 2008 looks remarkably similar to <a href="http://technet2.microsoft.com/windowsserver/en/library/5084a49d-20bd-43f0-815d-88052c9e2d461033.mspx?mfr=true">raising the domain functional level on Windows Server 2003</a> :</p>
<ol>
<li>Log on to the Domain Controller holding the PDC emulator FSMO role with a user account that is a member of the Domain Administrators group..</li>
<li>Open <strong>Active Directory Domains and Trusts.</strong></li>
<li>In the console tree, right-click the domain for which you want to raise functionality, and then click <strong>Raise Domain Functional Level</strong> .</li>
<li>In <strong>Select an available domain functional level</strong> , click Windows Server 2008, and then click <strong>Raise</strong> .</li>
</ol>
<p><a id="2008UpgdRaisetheforestfunctionallevel"></a></p>
<h3><a id="2008UpgdRaisetheforestfunctionallevel">Raise the forest functional level</a></h3>
<p>After you&#8217;ve successfully raised the domain functional level of all the domains in your Active Directory forest you&#8217;re ready to upgrade the Forest functional level. This will not add any features, but will result in all domains that are subsequently added to the forest will operate at the Windows Server 2008 domain functional level by default.</p>
<blockquote><p><strong><span style="text-decoration: underline;"><span style="color: #ff0000;">Note:</span> </span> </strong><br />
Raising the functional level is a one way procedure. Once you&#8217;ve raised your forest functional level there&#8217;s no way to return to the previous forest or domain functional levels.</p></blockquote>
<p>To upgrade the forest functional level to Windows Server 2008 perform the following actions:</p>
<ol>
<li>Log on to the Domain Controller of the forest root domain holding the PDC Emulator FSMO role with a user account that is a member of the Enterprise Administrators group.</li>
<li>Open <strong>Active Directory Domains and Trusts</strong> .</li>
<li>In the console tree, right-click Active Directory Domains and Trusts, and then click <strong>Raise Forest Functional Level</strong> .</li>
<li>Under <strong>Select an available forest functional level</strong> , click Windows Server 2008, and then click <strong>Raise</strong> .</li>
</ol>
<p><a id="2008UpgdConcluding"></a></p>
<h2><a id="2008UpgdConcluding">Concluding</a></h2>
<p>In my mind in-place upgrading is more tricky than transitioning your Active Directory environment. If at all: it&#8217;s the same amount of work. With transitioning you need to perform the right steps at the right time. With In-place upgrading you need to check more prerequisites before you can actually slap in the disk.</p>
<p>With transitioning being inevitable (since hardware ages) and 64bit computing looming on the horizon I feel In-place upgrading is the right migration scenario only on rare occasions.</p>
<p>Please note however Microsoft supports in-place upgrading many Active Directory technology specialists do not recommend upgrading Domain Controllers.</p>
<h2>Further reading</h2>
<p><a href="http://www.elmajdal.net/Win2k8/In-Place_Upgrade_Windows_Server_2003_Domain_Controller_To_Windows_Server_2008.aspx">In-Place Upgrade from Windows Server 2003 Domain Controller to Windows Server 2008</a><br />
<a href="http://technet2.microsoft.com/windowsserver2008/en/library/4e703a77-d9ba-4a26-b756-eba5499f15581033.mspx?mfr=true">Identifying Your Windows Server 2008 Functional Level Upgrade</a> �<br />
<a href="http://www.channelinsider.com/c/a/Commentary/What-Does-the-Upgrade-Landscape-Look-Like-for-Windows-Server-2008/">What Does the Upgrade Landscape Look Like for Windows Server 2008</a> �<br />
<a href="http://www.netometer.com/video/tutorials/windows-dc-2008-inplace-upgrade/index.php">Screencast: How to Upgrade In-Place 2003 DC</a><br />
<a href="http://windowsitpro.com/article/articleid/98082/what-you-need-to-know-about-in-place-upgrades.html">What You Need to Know About In-Place Upgrades</a> �<br />
<a href="http://support.microsoft.com/kb/555040">Common Mistakes When Upgrading a Windows 2000 Domain To a Windows 2003 Domain</a><br />
<a href="http://en.wikipedia.org/wiki/FSMO">Flexible single master operation</a><br />
<a href="http://support.microsoft.com/kb/313994">How to create or move a global catalog in Windows Server 2003</a><br />
TechNet Forums &#8211; <a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2922545&amp;SiteID=17">In-place upgrade of W2k3 to W2k8</a> �<br />
TechNet Forums &#8211; <a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2889293&amp;SiteID=17">Migrate AD users from 2003 to 2008</a> �<br />
TechNet Forums &#8211; <a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=3125302&amp;SiteID=17">migration from windows 2003 to windows 2008</a> �<br />
[Podcast] <a href="http://podcast.burtongroup.com/ip//2008/04/windows-server.html">Windows Server 2008: To Upgrade or Not to Upgrade</a></p>
<p><map name='google_ad_map_142_9f24cd510f3f6f88'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/142?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_142_9f24cd510f3f6f88' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=142&amp;url= http%3A%2F%2FWeblog.BassQ.nl%2Findex.php%2Fupgrading-your-active-directory-to-windows-server-2008%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://Weblog.BassQ.nl/index.php/upgrading-your-active-directory-to-windows-server-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Active Directory Maximum Limits</title>
		<link>http://Weblog.BassQ.nl/index.php/active-directory-maximum-limits/</link>
		<comments>http://Weblog.BassQ.nl/index.php/active-directory-maximum-limits/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 09:52:20 +0000</pubDate>
		<dc:creator>BassQ</dc:creator>
				<category><![CDATA[Weblog]]></category>
		<category><![CDATA[Active Directory]]></category>

		<guid isPermaLink="false">http://Weblog.BassQ.nl/?p=141</guid>
		<description><![CDATA[Maximum Number of Objects Each domain controller in an Active Directory forest can create a little bit less than 2.15 billion objects during its lifetime. Each Active Directory domain controller has a unique identifier that is specific to the individual domain controller. These &#8230; <a href="http://Weblog.BassQ.nl/index.php/active-directory-maximum-limits/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Maximum Number of Objects</h2>
<p class="intro">Each domain controller in an Active Directory forest can create a little bit less than 2.15 billion objects during its lifetime.</p>
<p>Each Active Directory domain controller has a unique identifier that is specific to the individual domain controller. These identifiers, which are called Distinguished Name Tags (DNTs), are not replicated or otherwise visible to other domain controllers. The range of values for DNTs is from 0 through 2,147,483,393 (2<sup class="superscript">31</sup> minus 255). As objects are created on a domain controller, a unique value is used. A DNT is not reused when an object is deleted. Therefore, domain controllers are limited to creating approximately 2 billion objects (including objects that are created through replication). This limit applies to the aggregate of all objects from all partitions (domain NC, configuration, schema, and any application directory partitions) that are hosted on the domain controller.</p>
<p>Because new domain controllers start with low initial DNT values (typically, anywhere from 100 up to 2,000), it may be possible to work around the domain controller lifetime creation limit—assuming, of course, that the domain is currently maintaining less than 2 billion objects. For example, if the lifetime creation limit is reached because approximately 2 billion objects are created, but 500 million objects are removed from the domain (for example, deleted and then permanently removed from the database through the garbage collection process), installing a new domain controller and allowing it to replicate the remaining objects from the existing domain controllers is a potential workaround. However, it is important that the new domain controller receives the objects through replication and that such domain controllers not be promoted with the Install from Media (IFM) option. Domain controllers that are installed with IFM inherit the DNT values from the domain controller that was used to create the IFM backup.</p>
<p>At the database level, the error that occurs when the DNT limit is reached is “Error: Add: Operations Error. &lt;1&gt; Server error: 000020EF: SvcErr: DSID-0208044C, problem 5012 (DIR_ERROR), data -1076.”</p>
<p><span id="more-141"></span></p>
<h2>Maximum Number of Security Identifiers</h2>
<p class="intro">There is a limit of approximately 1 billion security identifiers (SIDs) over the life of a domain. This limit is due to the size of the global relative identifier (RID) pool of 30 bits that makes each SID (that is assigned to user, group, and computer accounts) in a domain unique. The actual limit is 2<sup class="superscript">30</sup> or 1,073,741,824 RIDs. Because RIDs are not reused—even if security principals are deleted—the maximum limit applies, even if there are less than 1 billion security principals in the domain.</p>
<table class="sidebarContent" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr style="padding-right: 0px; padding-left: 0px; padding-bottom: 7px; padding-top: 0px">
<td class="dropCapQ" style="vertical-align: top" align="left"></td>
<td style="vertical-align: top">
<h5><img src="http://weblog.bassq.nl/library/gallery/templates/MNP2.Common/images/.gif" border="0" alt="" width="10" height="10" /></h5>
</td>
</tr>
</tbody>
</table>
<p>When all the available RIDs are assigned for a domain, the Directory Service log in the Application and Service Logs of Event Viewer also displays Event ID 16644 from an event log source of the Security Accounts Manager (SAM) that reads “The maximum domain account identifier value has been reached. No further account-identifier pools can be allocated to domain controllers in this domain.”</p>
<p>A partial work-around to this limitation is to create an additional domain to hold accounts and then migrate accounts to the new domain. However, you must create a trust relationship to migrate accounts in advance of reaching the limit. Creating a trust requires the creation of a security principal, which is also known as a trust user account. For more information about this limit, see articles 316201 (<a href="http://go.microsoft.com/fwlink/?LinkID=115211" target="_blank">http://go.microsoft.com/fwlink/?LinkID=115211</a> <script type="text/javascript"><!-- </p>
<p>    			if(typeof(IsPrinterFriendly) != "undefined")  			{  			var l = "http://go.microsoft.com/fwlink/?LinkID=115211";  			var nl;  			var c = l.charAt(0);  			var o = document.getElementById("E4");  			switch (c){  			case "/":  			nl=("&nbsp;[http://" + document.domain + l + "]");  			break  			case "#":  			nl=("");  			break  			default:  			nl="&nbsp;[" + l + "]"  			}  			if(o != null) o.innerHTML = nl;  			}
// --></script> ) and 305475 (<a href="http://go.microsoft.com/fwlink/?LinkId=115212" target="_blank">http://go.microsoft.com/fwlink/?LinkId=115212</a> <script type="text/javascript"><!-- </p>
<p>    			if(typeof(IsPrinterFriendly) != "undefined")  			{  			var l = "http://go.microsoft.com/fwlink/?LinkId=115212";  			var nl;  			var c = l.charAt(0);  			var o = document.getElementById("ECB");  			switch (c){  			case "/":  			nl=("&nbsp;[http://" + document.domain + l + "]");  			break  			case "#":  			nl=("");  			break  			default:  			nl="&nbsp;[" + l + "]"  			}  			if(o != null) o.innerHTML = nl;  			}
// --></script> ) in the Microsoft Knowledge Base.</p>
<h2>Group Memberships for Security Principals</h2>
<p class="intro">Security principals (that is, user, group, and computer accounts) can be members of a maximum of approximately 1,015 groups. This limitation is due to the size limit for the access token that is created for each security principal. For more information, see article 328889 in the Microsoft Knowledge Base (<a href="http://go.microsoft.com/fwlink/?LinkID=115213" target="_blank">http://go.microsoft.com/fwlink/?LinkID=115213</a> <script type="text/javascript"><!-- </p>
<p>    			if(typeof(IsPrinterFriendly) != "undefined")  			{  			var l = "http://go.microsoft.com/fwlink/?LinkID=115213";  			var nl;  			var c = l.charAt(0);  			var o = document.getElementById("EMB");  			switch (c){  			case "/":  			nl=("&nbsp;[http://" + document.domain + l + "]");  			break  			case "#":  			nl=("");  			break  			default:  			nl="&nbsp;[" + l + "]"  			}  			if(o != null) o.innerHTML = nl;  			}
// --></script> ).</p>
<h2>FQDN Length Limitations</h2>
</p>
<p class="intro">Fully qualified domain names (FQDNs) in Active Directory cannot exceed 64 characters in total length, including hyphens and periods (.). As an example, the following host name has 65 characters and therefore is not valid in an Active Directory domain: server10.branch-15.southaz.westernregion.northamerica.contoso.com. This is an important limitation to keep in mind when you name domains. For more information about naming limitations, see article 909264 in the Microsoft Knowledge Base (<a href="http://go.microsoft.com/fwlink/?LinkID=106629" target="_blank">http://support.microsoft.com/kb/909264</a> <script type="text/javascript"><!-- </p>
<p>    			if(typeof(IsPrinterFriendly) != "undefined")  			{  			var l = "http://go.microsoft.com/fwlink/?LinkID=106629";  			var nl;  			var c = l.charAt(0);  			var o = document.getElementById("EWB");  			switch (c){  			case "/":  			nl=("&nbsp;[http://" + document.domain + l + "]");  			break  			case "#":  			nl=("");  			break  			default:  			nl="&nbsp;[" + l + "]"  			}  			if(o != null) o.innerHTML = nl;  			}
// --></script> ).</p>
<h2>File Name Length Limitations</h2>
</p>
<p class="intro">The file system that Windows operating systems uses limits file name lengths (including the path to the file name) to 260 characters. That limitation applies also to physical files that Active Directory components use, such as SYSVOL and database file paths. When you are determining where to place your SYSVOL and database files during Active Directory installation, avoid nested folder structures that might make the full file path to the SYSVOL folder longer than 260 characters. For more information, see article 245809 in the Microsoft Knowledge Base (<a href="http://go.microsoft.com/fwlink/?LinkId=115219" target="_blank">http://go.microsoft.com/fwlink/?LinkId=115219</a> <script type="text/javascript"><!-- </p>
<p>    			if(typeof(IsPrinterFriendly) != "undefined")  			{  			var l = "http://go.microsoft.com/fwlink/?LinkId=115219";  			var nl;  			var c = l.charAt(0);  			var o = document.getElementById("EAC");  			switch (c){  			case "/":  			nl=("&nbsp;[http://" + document.domain + l + "]");  			break  			case "#":  			nl=("");  			break  			default:  			nl="&nbsp;[" + l + "]"  			}  			if(o != null) o.innerHTML = nl;  			}
// --></script> ).</p>
<h2>Organizational Unit Name Length</h2>
</p>
<p class="intro">The maximum length for the name of an organizational unit (OU) is 64 characters. This limitation prevents an OU name from surpassing the file system limit of 260 characters when Universal Naming Convention (UNC) paths are constructed for Group Policy. For more information, see article 245809 in the Microsoft Knowledge Base (<a href="http://go.microsoft.com/fwlink/?LinkID=115219" target="_blank">http://go.microsoft.com/fwlink/?LinkID=115219</a> <script type="text/javascript"><!-- </p>
<p>    			if(typeof(IsPrinterFriendly) != "undefined")  			{  			var l = "http://go.microsoft.com/fwlink/?LinkID=115219";  			var nl;  			var c = l.charAt(0);  			var o = document.getElementById("EKC");  			switch (c){  			case "/":  			nl=("&nbsp;[http://" + document.domain + l + "]");  			break  			case "#":  			nl=("");  			break  			default:  			nl="&nbsp;[" + l + "]"  			}  			if(o != null) o.innerHTML = nl;  			}
// --></script> ).</p>
<h2>Maximum Number of Group Policy Objects Applied</h2>
</p>
<p class="intro">There is a limit of 999 Group Policy objects (GPOs) that you can apply to a user account or computer account. This does not mean that the total number of policy settings on the system is limited to 999. Rather, a single user or computer will not be able to process more than 999 GPOs. This limit exists for performance reasons.</p>
<h2>Maximum Number of Accounts per LDAP Transaction</h2>
<p class="intro">When you write scripts or applications that perform Lightweight Directory Access Protocol (LDAP) transactions, the recommended limit is to perform no more than 5,000 operations per LDAP transaction. An LDAP transaction is a group of directory operations (such as add, delete, and modify) that are treated as one unit. If your script or application performs more than 5,000 operations in a single LDAP transaction, you are at risk of running into resource limits and an operational timeout. If that happens, all the operations (changes, additions, and modifications) in the transaction are rolled back, which means that you lose all those changes.</p>
<p>For example, if you are using Active Directory Service Interfaces (ADSI) to write a script, the SetInfo method completes a transaction. For more information about ADSI Methods, see Active Directory Service Interfaces (<a href="http://go.microsoft.com/fwlink/?LinkID=4487" target="_blank">http://go.microsoft.com/fwlink/?LinkID=4487</a> <script type="text/javascript"><!-- </p>
<p>    			if(typeof(IsPrinterFriendly) != "undefined")  			{  			var l = "http://go.microsoft.com/fwlink/?LinkID=4487";  			var nl;  			var c = l.charAt(0);  			var o = document.getElementById("EZC");  			switch (c){  			case "/":  			nl=("&nbsp;[http://" + document.domain + l + "]");  			break  			case "#":  			nl=("");  			break  			default:  			nl="&nbsp;[" + l + "]"  			}  			if(o != null) o.innerHTML = nl;  			}
// --></script> ).</p>
<p>As another example, when you use the System.DirectoryServices (S.DS) namespace in the Microsoft .Net Framework, the DirectoryEntry.CommitChanges method completes an LDAP transaction. For more information about the DirectoryEntry.CommitChanges method, see DirectoryEntry.CommitChanges () (<a href="http://go.microsoft.com/fwlink/?LinkId=115220" target="_blank">http://go.microsoft.com/fwlink/?LinkId=115220</a> <script type="text/javascript"><!-- </p>
<p>    			if(typeof(IsPrinterFriendly) != "undefined")  			{  			var l = "http://go.microsoft.com/fwlink/?LinkId=115220";  			var nl;  			var c = l.charAt(0);  			var o = document.getElementById("EAD");  			switch (c){  			case "/":  			nl=("&nbsp;[http://" + document.domain + l + "]");  			break  			case "#":  			nl=("");  			break  			default:  			nl="&nbsp;[" + l + "]"  			}  			if(o != null) o.innerHTML = nl;  			}
// --></script> ).</p>
<table class="sidebarContent" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr style="padding-right: 0px; padding-left: 0px; padding-bottom: 7px; padding-top: 0px">
<td class="dropCapQ" style="vertical-align: top" align="left"></td>
<td style="vertical-align: top">
<h5><img src="http://weblog.bassq.nl/library/gallery/templates/MNP2.Common/images/.gif" border="0" alt="" width="10" height="10" /></h5>
</td>
</tr>
</tbody>
</table>
<h2>Recommended Maximum Number of Domains in a Forest</h2>
<p class="intro">For Windows 2000 Server, the recommended maximum number of domains in a forest is 800. For Windows Server 2003, the recommended maximum number of domains when the forest functional level is set to Windows Server 2003 (also known as forest functional level 2) is 1,200. This restriction is a limitation of multivalued, nonlinked attributes in Windows Server 2003.</p>
<h2>Recommended Maximum Number of Domain Controllers in a Domain</h2>
<p class="intro">Because the File Replication Service (FRS) is used to replicate SYSVOL in a Windows Server 2003 domain, we recommend a limit of 1,200 domain controllers per domain to ensure reliable recovery of SYSVOL.</p>
<p>If any Active Directory domain in your network is expected to exceed 800 domain controllers and those domain controllers are hosting Active Directory–integrated Domain Name System (DNS) zones, review article 267855 in the Microsoft Knowledge Base (<a href="http://go.microsoft.com/fwlink/?LinkId=115222" target="_blank">http://go.microsoft.com/fwlink/?LinkId=115222</a> <script type="text/javascript"><!-- </p>
<p>    			if(typeof(IsPrinterFriendly) != "undefined")  			{  			var l = "http://go.microsoft.com/fwlink/?LinkId=115222";  			var nl;  			var c = l.charAt(0);  			var o = document.getElementById("E1D");  			switch (c){  			case "/":  			nl=("&nbsp;[http://" + document.domain + l + "]");  			break  			case "#":  			nl=("");  			break  			default:  			nl="&nbsp;[" + l + "]"  			}  			if(o != null) o.innerHTML = nl;  			}
// --></script> ).</p>
<p>For more information about FRS limitations, see the FRS Technical Reference (<a href="http://go.microsoft.com/fwlink/?LinkId=115302" target="_blank">http://go.microsoft.com/fwlink/?LinkId=115302</a> <script type="text/javascript"><!-- </p>
<p>    			if(typeof(IsPrinterFriendly) != "undefined")  			{  			var l = "http://go.microsoft.com/fwlink/?LinkId=115302";  			var nl;  			var c = l.charAt(0);  			var o = document.getElementById("EBE");  			switch (c){  			case "/":  			nl=("&nbsp;[http://" + document.domain + l + "]");  			break  			case "#":  			nl=("");  			break  			default:  			nl="&nbsp;[" + l + "]"  			}  			if(o != null) o.innerHTML = nl;  			}
// --></script> ).<br />
<br />
[ad#post]</p>
<p><map name='google_ad_map_141_9f24cd510f3f6f88'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/141?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_141_9f24cd510f3f6f88' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=141&amp;url= http%3A%2F%2FWeblog.BassQ.nl%2Findex.php%2Factive-directory-maximum-limits%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://Weblog.BassQ.nl/index.php/active-directory-maximum-limits/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

