Recipe 11.11 Disabling Site Link Transitivity or Site Link Schedules

11.11.1 Problem

You want to disable site link transitivity to control replication.

11.11.2 Solution Using a graphical user interface
  1. Open the Active Directory Sites and Services snap-in.

  2. In the left pane, expand Sites Inter-Site Transports.

  3. Right-click either the IP or SMTP folder depending which protocol you want to disable transitivity or ignore schedules for.

  4. Select Properties.

  5. To disable site link transitivity, uncheck Bridge all site links.

  6. To ignore site link schedules, check Ignore schedules.

  7. Click OK. Using a command-line interface

You can modify the options attribute of a site link object using an LDIF file and ldifde, but since the attribute is a bit flag, you are better off using the GUI or VBScript solutions that look at the current value of options and modify it accordingly. ldifde doesn't handle this type of logic. Using VBScript
' This code can disable site link transitivity and site 
' schedules for all links of the IP transport.
' The code for the CalcBit function can be found in Recipe 4.12
boolDisableTrans = <TrueOrFalse>    ' e.g. TRUE
boolIgnoreSchedules = <TrueOrFalse> ' e.g. FALSE
' ------ END CONFIGURATION ---------

set objRootDSE = GetObject("LDAP://RootDSE")
set objLink = GetObject( _
                  "LDAP://cn=IP,cn=Inter-site Transports,cn=sites," & _
                  objRootDSE.Get("configurationNamingContext") )

intBitsOrg = objLink.Get("options")
intBits = CalcBit(intBitsOrig, 2, boolDisableTrans) 
intBits = CalcBit(intBitsOrig, 1, boolIgnoreSchedules) 

if objLink.Get("options") <> intBits then
   objLink.Put "options", intBits
   WScript.Echo "Successfully modified link transitivity for " & strLink
   WScript.Echo "Did not need to modify link transitivity for " & strLink
end if

11.11.3 Discussion

Active Directory site links are transitive, which means that if site A is linked to site B, and site B is linked to site C, then site A is also be linked (through site B) to site C. The Knowledge Consistency Checker (KCC) uses transitivity by default when making decisions about creating connection objects. You can disable this behavior if you want. Typically this is not something you'll want to do unless you know what you are doing. Disabling transitivity may be necessary for some Windows 2000 deployments that have a lot of sites and find that the KCC is having a hard time keeping up. With Windows Server 2003, the KCC has been greatly improved and site link transitivity should not cause problems.

The other reason you might want to disable transitivity is if you need to make replication more deterministic. Disabling transitivity makes it much easier to determine where the KCC will attempt to establish connection objects, because the KCC on a domain controller will not be able to replicate with domain controllers that are not in sites that are directly linked.

I mention site link schedules here primarily because the same attribute (i.e., options) that determines site link transitivity also determines if link schedules are enforced. If you enable the ignore schedules option for a particular transport (i.e., IP or SMTP), the KCC ignores any preconfigured link schedules. If you later disable this setting, link schedules will go back into effect.

11.11.4 See Also

Recipe 4.12 for more on setting a bit-flag attribute

    Chapter 3. Domain Controllers, Global Catalogs, and FSMOs
    Chapter 6. Users
    Appendix A. Tool List