<div class="content" name="DNSSRV_DS_STATS" uuid="02cbf880-2d26-4544-99d7-73294b664a78"><p>The <b>DNSSRV_DS_STATS</b> structure has DNS server
statistics related to <span><a href="a95b05da-f1fd-4db3-94b4-817fdaa1f642#gt_04fd0982-6bb6-44f1-817e-795715049c50" data-linktype="relative-path">directory server</a></span>
processing. The UpdateLists member through DsWriteType member refer to
statistical values, when the server is propagating changes from the in-memory
database to the directory server.</p><p>This structure MUST be formatted as follows:</p><table>
 <tbody><tr>
  <th><p><br/>0</p></th>
  <th><p><br/>1</p></th>
  <th><p><br/>2</p></th>
  <th><p><br/>3</p></th>
  <th><p><br/>4</p></th>
  <th><p><br/>5</p></th>
  <th><p><br/>6</p></th>
  <th><p><br/>7</p></th>
  <th><p><br/>8</p></th>
  <th><p><br/>9</p></th>
  <th><p>1<br/>0</p></th>
  <th><p><br/>1</p></th>
  <th><p><br/>2</p></th>
  <th><p><br/>3</p></th>
  <th><p><br/>4</p></th>
  <th><p><br/>5</p></th>
  <th><p><br/>6</p></th>
  <th><p><br/>7</p></th>
  <th><p><br/>8</p></th>
  <th><p><br/>9</p></th>
  <th><p>2<br/>0</p></th>
  <th><p><br/>1</p></th>
  <th><p><br/>2</p></th>
  <th><p><br/>3</p></th>
  <th><p><br/>4</p></th>
  <th><p><br/>5</p></th>
  <th><p><br/>6</p></th>
  <th><p><br/>7</p></th>
  <th><p><br/>8</p></th>
  <th><p><br/>9</p></th>
  <th><p>3<br/>0</p></th>
  <th><p><br/>1</p></th>
 </tr>
 <tr>
  <td colspan="32">Header</td>
 </tr>
 <tr>
  <td colspan="32">...</td>
 </tr>
 <tr>
  <td colspan="32">DsTotalNodesRead</td>
 </tr>
 <tr>
  <td colspan="32">DsTotalRecordsRead</td>
 </tr>
 <tr>
  <td colspan="32">DsNodesLoaded</td>
 </tr>
 <tr>
  <td colspan="32">DsRecordsLoaded</td>
 </tr>
 <tr>
  <td colspan="32">DsTombstonesRead</td>
 </tr>
 <tr>
  <td colspan="32">DsUpdateSearches</td>
 </tr>
 <tr>
  <td colspan="32">DsUpdateNodesRead</td>
 </tr>
 <tr>
  <td colspan="32">DsUpdateRecordsRead</td>
 </tr>
 <tr>
  <td colspan="32">UpdateLists</td>
 </tr>
 <tr>
  <td colspan="32">UpdateNodes</td>
 </tr>
 <tr>
  <td colspan="32">UpdateSuppressed</td>
 </tr>
 <tr>
  <td colspan="32">UpdateWrites</td>
 </tr>
 <tr>
  <td colspan="32">UpdateTombstones</td>
 </tr>
 <tr>
  <td colspan="32">UpdateRecordChange</td>
 </tr>
 <tr>
  <td colspan="32">UpdateAgingRefresh</td>
 </tr>
 <tr>
  <td colspan="32">UpdateAgingOn</td>
 </tr>
 <tr>
  <td colspan="32">UpdateAgingOff</td>
 </tr>
 <tr>
  <td colspan="32">UpdatePacket</td>
 </tr>
 <tr>
  <td colspan="32">UpdatePacketPrecon</td>
 </tr>
 <tr>
  <td colspan="32">UpdateAdmin</td>
 </tr>
 <tr>
  <td colspan="32">UpdateAutoConfig</td>
 </tr>
 <tr>
  <td colspan="32">UpdateScavenge</td>
 </tr>
 <tr>
  <td colspan="32">DsNodesAdded</td>
 </tr>
 <tr>
  <td colspan="32">DsNodesModified</td>
 </tr>
 <tr>
  <td colspan="32">DsNodesTombstoned</td>
 </tr>
 <tr>
  <td colspan="32">DsNodesDeleted</td>
 </tr>
 <tr>
  <td colspan="32">DsRecordsAdded</td>
 </tr>
 <tr>
  <td colspan="32">DsRecordsReplaced</td>
 </tr>
 <tr>
  <td colspan="32">DsWriteSuppressed</td>
 </tr>
 <tr>
  <td colspan="32">DsSerialWrites</td>
 </tr>
 <tr>
  <td colspan="32">LdapTimedWrites</td>
 </tr>
 <tr>
  <td colspan="32">LdapWriteTimeTotal</td>
 </tr>
 <tr>
  <td colspan="32">LdapWriteAverage</td>
 </tr>
 <tr>
  <td colspan="32">LdapWriteMax</td>
 </tr>
 <tr>
  <td colspan="32">LdapWriteBucket0</td>
 </tr>
 <tr>
  <td colspan="32">LdapWriteBucket1</td>
 </tr>
 <tr>
  <td colspan="32">LdapWriteBucket2</td>
 </tr>
 <tr>
  <td colspan="32">LdapWriteBucket3</td>
 </tr>
 <tr>
  <td colspan="32">LdapWriteBucket4</td>
 </tr>
 <tr>
  <td colspan="32">LdapWriteBucket5</td>
 </tr>
 <tr>
  <td colspan="32">LdapSearchTime</td>
 </tr>
 <tr>
  <td colspan="32">FailedDeleteDsEntries</td>
 </tr>
 <tr>
  <td colspan="32">FailedReadRecords</td>
 </tr>
 <tr>
  <td colspan="32">FailedLdapModify</td>
 </tr>
 <tr>
  <td colspan="32">FailedLdapAdd</td>
 </tr>
 <tr>
  <td colspan="32">PollingPassesWithDsErrors (optional)</td>
 </tr>
 <tr>
  <td colspan="32">LdapReconnects (optional)</td>
 </tr>
 <tr>
  <td colspan="32">DsWriteType (160 bytes)</td>
 </tr>
 <tr>
  <td colspan="32">...</td>
 </tr>
 <tr>
  <td colspan="32">...</td>
 </tr>
</tbody></table><p><b>Header (8 bytes): </b>A structure of type <b>DNSSRV_STAT_HEADER</b>
(section <span><a href="271b57b1-759c-4c5c-8238-912cd1b3be2a" data-linktype="relative-path">2.2.10.2.1</a></span>).</p><p><b>DsTotalNodesRead (4 bytes): </b>The total number
of DNS <span><a href="a95b05da-f1fd-4db3-94b4-817fdaa1f642#gt_762051d8-4fdc-437e-af9d-3f4da77c3c7d" data-linktype="relative-path">nodes</a></span> read from the
directory server.</p><p><b>DsTotalRecordsRead (4 bytes): </b>The total number
of resource records read from the directory server.</p><p><b>DsNodesLoaded (4 bytes): </b>The number of valid
DNS nodes found in the directory server and loaded in memory by the server.</p><p><b>DsRecordsLoaded (4 bytes): </b>The number of
resource records loaded in memory by the server.</p><p><b>DsTombstonesRead (4 bytes): </b>The number of
nodes read from the directory server and found in a tombstoned state.</p><p><b>DsUpdateSearches (4 bytes): </b>The number of zone
update searches performed on the directory server.</p><p><b>DsUpdateNodesRead (4 bytes): </b>The number of DNS
nodes that were read from the directory server and contained updated
information.</p><p><b>DsUpdateRecordsRead (4 bytes): </b>The number of
resource records that were read from the directory server and contained updated
information.</p><p><b>UpdateLists (4 bytes): </b>The number of in-memory
nodes with an updated list of record.</p><p><b>UpdateNodes (4 bytes): </b>The number of in-memory
nodes that required an update in the directory server.</p><p><b>UpdateSuppressed (4 bytes): </b>The number of
in-memory nodes that did not require any write to the directory server. </p><p><b>UpdateWrites (4 bytes): </b>The number of
in-memory nodes that required writing to the directory server.</p><p><b>UpdateTombstones (4 bytes): </b>The number of
in-memory nodes that required tombstoning.</p><p><b>UpdateRecordChange (4 bytes): </b>The number of
in-memory nodes that required record changes.</p><p><b>UpdateAgingRefresh (4 bytes): </b>The number of
in-memory nodes that required an <span><a href="a95b05da-f1fd-4db3-94b4-817fdaa1f642#gt_0288f9f1-b244-4551-8638-a2280001b531" data-linktype="relative-path">aging</a></span> information
refresh.</p><p><b>UpdateAgingOn (4 bytes): </b>The number of
in-memory nodes that required aging to be enabled.</p><p><b>UpdateAgingOff (4 bytes): </b>The number of
in-memory nodes that required aging to be disabled.</p><p><b>UpdatePacket (4 bytes): </b>The number of
in-memory nodes modified as a result of update packets being received.</p><p><b>UpdatePacketPrecon (4 bytes): </b>The number of
in-memory nodes modified as a result of update packets being received with
prerequisites (as discussed in <span><a href="https://go.microsoft.com/fwlink/?LinkId=107017" data-linktype="external">[RFC2136]</a></span>
section 2.4).</p><p><b>UpdateAdmin (4 bytes): </b>The number of in-memory
nodes modified as a result of administrator initiated changes.</p><p><b>UpdateAutoConfig (4 bytes): </b>The number of
in-memory nodes modified as a result of an auto-configure operation.</p><p><b>UpdateScavenge (4 bytes): </b>The number of
in-memory nodes modified as a result of a <span><a href="a95b05da-f1fd-4db3-94b4-817fdaa1f642#gt_345c3de7-adfa-4386-9ba5-f5f572af489c" data-linktype="relative-path">scavenging</a></span> cycle.</p><p><b>DsNodesAdded (4 bytes): </b>The number of new
nodes added to the directory server.</p><p><b>DsNodesModified (4 bytes): </b>The number of nodes
modified in the directory server.</p><p><b>DsNodesTombstoned (4 bytes): </b>The number of
nodes tombstoned in the directory server.</p><p><b>DsNodesDeleted (4 bytes): </b>The number of nodes
deleted from the directory server.</p><p><b>DsRecordsAdded (4 bytes): </b>The number of records
added to the directory server.</p><p><b>DsRecordsReplaced (4 bytes): </b>The number of
records modified or replaced in the directory server.</p><p><b>DsWriteSuppressed (4 bytes): </b>The number of
records added to the directory server.</p><p><b>DsSerialWrites (4 bytes): </b>The number of
records that had matching data and hence were not written to the directory
server.</p><p><b>LdapTimedWrites (4 bytes): </b>The number of times
the server performed a timed LDAP write operation.</p><p><b>LdapWriteTimeTotal (4 bytes): </b>The cumulative
time, in milliseconds, consumed by server-performed timed LDAP write
operations.</p><p><b>LdapWriteAverage (4 bytes): </b>The average time,
in milliseconds, for all server performed timed LDAP write operations since the
server was last restarted.</p><p><b>LdapWriteMax (4 bytes): </b>The longest duration
taken, in milliseconds, for any single server-performed timed LDAP
write-operation.</p><p><b>LdapWriteBucket0 (4 bytes): </b>The number of <span><a href="a95b05da-f1fd-4db3-94b4-817fdaa1f642#gt_45643bfb-b4c4-432c-a10f-b98790063f8d" data-linktype="relative-path">LDAP</a></span>
write-operations that took less than 10 milliseconds.</p><p><b>LdapWriteBucket1 (4 bytes): </b>The number of LDAP
write-operations that took between 10 and 100 milliseconds.</p><p><b>LdapWriteBucket2 (4 bytes): </b>The number of LDAP
write-operations that took between 100 milliseconds and 1 second.</p><p><b>LdapWriteBucket3 (4 bytes): </b>The number of LDAP
write-operations that took between 1 and 10 seconds.</p><p><b>LdapWriteBucket4 (4 bytes): </b>The number of LDAP
write-operations that took between 10 and 100 seconds.</p><p><b>LdapWriteBucket5 (4 bytes): </b>The number of LDAP
write-operations that took more than 100 seconds.</p><p><b>LdapSearchTime (4 bytes): </b>The cumulative time,
in milliseconds, consumed by server-performed LDAP searches.</p><p><b>FailedDeleteDsEntries (4 bytes): </b>The number of
times the server failed to delete entries from the directory server.</p><p><b>FailedReadRecords (4 bytes): </b>The number of
times the server failed to read records from the directory server.</p><p><b>FailedLdapModify (4 bytes): </b>The number of
times the server failed to modify records in the directory server.</p><p><b>FailedLdapAdd (4 bytes): </b>The number of times
the server failed to add entries to the directory server.</p><p><b>PollingPassesWithDsErrors (4 bytes): </b>The
number of times the server hit failure while polling zones in the directory
server. This field SHOULD<a id="Appendix_A_Target_75"></a><a aria-label="Product behavior note 75" href="4a9a3ba3-10eb-430e-b157-1fed0aaf85a5#Appendix_A_75" data-linktype="relative-path">&lt;75&gt;</a> be
present. A client can tell whether the field is present based on the size of
the buffer holding this structure.</p><p><b>LdapReconnects (4 bytes): </b>The number of times
the server attempted to reconnect to the directory server. This field MUST be
present if and only if PollingPassesWithDsErrors is present. A client can tell
whether the field is present based on the size of the buffer holding this
structure.</p><p><b>DsWriteType (160 bytes): </b>An array of 32-bit
unsigned integers that keeps track of update requests for different DNS record
types as specified DNS_RECORD_TYPE (section <span><a href="39b03b89-2264-4063-8198-d62f62a6441a" data-linktype="relative-path">2.2.2.1.1</a></span>). There
are a total of 40 entries each corresponding to the number of received update
requests for different record types in the order specified in DNS_RECORD_TYPE
(section 2.2.2.1.1), starting from DNS_TYPE_ZERO to DNS_TYPE_DNAME.</p></div>