Para mantener viva la llama del blog en una época de mucho trabajo y poco tiempo libre para poder dedicarle a nuestro hobbie, hemos decidido hacer una entrada simple, pero muy útil.
Muchas veces, nos interesa saber que cuenta arrancó el SQL Server y qué puerto está usando. Para ello, muchos usamos el SQL Configuration Manager para comprobar esta información, pero, ¿cómo ahorrar tiempo y hacerlo con T-SQL?
Si ya tienes una ventana abierta de SSMS lo único que tienes que lanzar son estas dos consultas:
Cuenta de servicio:
select @@servername as InstanceName ,servicename, service_account
FROM sys.dm_server_services
Puerto:
SELECT top 1 @@servername as InstanceName,local_tcp_port
FROM sys.dm_exec_connections
Nota: Esta query funcionará siempre que esté habilitado el protocolo de red TCP/IP y la conexión use este protocolo (Y no otro como SharedMemory o NamedPipes)
Pero no, esto no termina aquí. Como siempre, intentamos añadir un valor añadido 😉:
¿Cómo lanzar estas consultas simultáneamente en muchas instancias?
Seguro que lo encuentras muy útil, para tener un inventario, realizar un informe que te soliciten, realizar una comprobación masiva, etc.
Gracias a la ayuda de Powershell lo podemos hacer, usaremos el comando Invoke-Sqlcmd pasándole como valor al parámetro -ServerInstance una variable que será obtenida desde un fichero servers.txt
Contenido de fichero servers.txt, una instancia por cada línea:
Script en Powershell:
$servers = Get-Content 'C:\Users\pInstall.sicuel\Desktop\servers.txt'
ForEach ($server in $servers) {
Invoke-Sqlcmd -Query "SELECT top 1 @@servername as InstanceName ,servicename, service_account,local_tcp_port
FROM sys.dm_server_services, sys.dm_exec_connections " -ServerInstance $server
}
Fácil y sencillo, guarda este script de Powershell, ¡ya que te ayudará a lanzar consultas múltiples.
Os recordamos que todo esto lo podéis completar con la entrada https://sicuel.es/2019/02/11/como-comprobar-el-estado-de-la-cuenta-de-servicio-sql-server/ donde comprobábamos el estado de las cuentas de servicio de nuestras instancias a través, también, de PowerShell
Hasta la próxima!
Muy sencillo, pero esta información también la puedes obtener con comandos de sistema operativo desde Powershell ¿no?
Si, y aunque tenemos conocimientos de Powershell, creemos que el T-SQL es nuestro lenguaje por defecto!