@@ -114,46 +114,50 @@ function Get-DbaAgRingBuffer {
114114 Stop-Function - Message " Failure" - Category ConnectionError - ErrorRecord $_ - Target $instance - Continue
115115 }
116116
117- $currentTimestamp = ($server.Query (" SELECT cpu_ticks / CONVERT(FLOAT, (cpu_ticks / ms_ticks)) AS TimeStamp FROM sys.dm_os_sys_info" ))[0 ]
118- Write-Message - Level Verbose - Message " Using current timestamp of $currentTimestamp "
117+ try {
118+ [long ]$currentTimestamp = ($server.Query (" SELECT cpu_ticks / CONVERT(FLOAT, (cpu_ticks / ms_ticks)) AS TimeStamp FROM sys.dm_os_sys_info" )).TimeStamp
119+ Write-Message - Level Verbose - Message " Using current timestamp of $currentTimestamp "
119120
120- if ($RingBufferType ) {
121- $typeList = ($RingBufferType | ForEach-Object { " N'$_ '" }) -join " , "
122- } else {
123- $typeList = " N'RING_BUFFER_HADRDBMGR_API', N'RING_BUFFER_HADRDBMGR_STATE', N'RING_BUFFER_HADRDBMGR_COMMIT', N'RING_BUFFER_HADR_TRANSPORT_STATE'"
124- }
121+ if ($RingBufferType ) {
122+ $typeList = ($RingBufferType | ForEach-Object { " N'$_ '" }) -join " , "
123+ } else {
124+ $typeList = " N'RING_BUFFER_HADRDBMGR_API', N'RING_BUFFER_HADRDBMGR_STATE', N'RING_BUFFER_HADRDBMGR_COMMIT', N'RING_BUFFER_HADR_TRANSPORT_STATE'"
125+ }
125126
126- $sql = " WITH HadrRingBuffer AS
127- (
127+ $sql = " WITH HadrRingBuffer AS
128+ (
129+ SELECT
130+ ring_buffer_type,
131+ timestamp,
132+ CONVERT(XML, record) AS record
133+ FROM sys.dm_os_ring_buffers
134+ WHERE ring_buffer_type IN ($typeList )
135+ )
128136 SELECT
137+ SERVERPROPERTY('ServerName') AS ServerName,
129138 ring_buffer_type,
130- timestamp,
131- CONVERT(XML, record) AS record
132- FROM sys.dm_os_ring_buffers
133- WHERE ring_buffer_type IN ($typeList )
134- )
135- SELECT
136- SERVERPROPERTY('ServerName') AS ServerName,
137- ring_buffer_type,
138- record.value('(./Record/@id)[1]', 'int') AS record_id,
139- DATEADD(ms, -1 * ($currentTimestamp - [timestamp]), GETDATE()) AS EventTime,
140- record
141- FROM HadrRingBuffer
142- WHERE DATEADD(ms, -1 * ($currentTimestamp - [timestamp]), GETDATE()) > DATEADD(MINUTE, -$CollectionMinutes , GETDATE())
143- ORDER BY EventTime DESC;"
144-
145- Write-Message - Level Verbose - Message " Executing SQL Statement: $sql "
146- foreach ($row in $server.Query ($sql )) {
147- [PSCustomObject ]@ {
148- ComputerName = $server.ComputerName
149- InstanceName = $server.ServiceName
150- SqlInstance = $server.DomainInstanceName
151- RingBufferType = $row.ring_buffer_type
152- RecordId = $row.record_id
153- EventTime = $row.EventTime
154- Record = $row.record
139+ record.value('(./Record/@id)[1]', 'int') AS record_id,
140+ DATEADD(ms, -1 * ($currentTimestamp - [timestamp]), GETDATE()) AS EventTime,
141+ record
142+ FROM HadrRingBuffer
143+ WHERE DATEADD(ms, -1 * ($currentTimestamp - [timestamp]), GETDATE()) > DATEADD(MINUTE, -$CollectionMinutes , GETDATE())
144+ ORDER BY EventTime DESC;"
145+
146+ Write-Message - Level Verbose - Message " Executing SQL Statement: $sql "
147+ foreach ($row in $server.Query ($sql )) {
148+ [PSCustomObject ]@ {
149+ ComputerName = $server.ComputerName
150+ InstanceName = $server.ServiceName
151+ SqlInstance = $server.DomainInstanceName
152+ RingBufferType = $row.ring_buffer_type
153+ RecordId = $row.record_id
154+ EventTime = $row.EventTime
155+ Record = $row.record
156+ }
155157 }
158+ } catch {
159+ Stop-Function - Message " Failed to query HADR ring buffer data." - Category InvalidOperation - ErrorRecord $_ - Target $instance - Continue
156160 }
157161 }
158162 }
159- }
163+ }
0 commit comments