You may retrieve a few important information about a connection to SQL Server by querying the server through appropriate @@ global variables. For example, the following routine takes an ADO Connection object that points to SQL Server and prints a few information about the connection:
Dim cn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim fld As ADODB.Field cn.Open CONN_STRING ' cn points to a SQL Server connection rs.Open "SELECT 'Server Name'[email protected]@servername, 'Service Name'[email protected]@servicename, " _ & "'Language'[email protected]@language, 'Language ID'[email protected]@langid, 'Connections opened so " _ & "far'[email protected]@connections, 'Max connections'[email protected]@max_connections, 'Process " _ & "ID'[email protected]@spid", cn' display connection infoFor Each fld In rs.Fields Debug.Print fld.Name & " = " & fld.ValueNext
There are many other @@ global variables that can turn to be useful, especially for debugging and profiling reasons. For example, run this code to print diagnostic information about a SQL Server connection, including number of packets sent and received, disk read and write operations, and CPU ticks dedicated to SQL Server, to disk I/O and not used by SQL Server since when SQL Server itself was booted:
rs.Open "SELECT 'Packets sent'[email protected]@Pack_Sent, 'Packets received'[email protected]@Pack_received, " _ & "'Packet errors'[email protected]@Packet_Errors, 'Disk Reads'[email protected]@total_read, 'Disk " _ & "Writes'[email protected]@total_write, 'Disk Errors'[email protected]@total_errors, 'CPU " _ & "Ticks'[email protected]@cpu_busy, 'I/O Ticks'[email protected]@io_busy, 'Idle Ticks'[email protected]@idle", cnFor Each fld In rs.Fields Debug.Print fld.Name & " = " & fld.ValueNext