2

¿Cómo comprobar el estado de la cuenta de servicio SQL Server?

Como DBA, seguramente te has encontrado alguna vez que la cuenta de servicio de SQL Server está bloqueada. Dependiendo de la infraestructura y la envergadura de tus sistemas, podrás comprobarlo y solucionarlo por ti mismo o puede que tengas un equipo/compañero que te pueda ayudar a cotejar y desbloquear dicha cuenta.

En muchos casos nos hemos encontrado sin permisos en el Directorio Activo para comprobar y desbloquear la cuenta, por lo que nos hemos tenido que buscar la vida con ejemplos como el siguiente:

Imagina que, tras un reinicio, cuando se intenta levantar el servicio de SQL Server, te dé un mensaje de error y en el log compruebes que la cuenta está bloqueada. Si es sólo una cuenta, puedes entrar a la consola de usuarios de directorio activo (si la tienes instalada), buscar la cuenta y comprobar si está bloqueada o si tiene la contraseña y la propia cuenta caducada.

Pero, ¿y si no tienes está herramienta? Con la ayuda del módulo de Active-Directory de Powershell podemos hacer esto de una forma más sencilla.

Lo primero que debemos hacer es importar el módulo de Active Directory en tu Powershell:

Import-Module ActiveDirectory 

Para que funcione, tenemos que tener instalado el recurso en las características de Windows:

Windows Feature

Tras ello, abrimos una consola de Powershell (o la modalidad de Powershell ISE) y lanzamos el comando Get-ADUser:

Get-AdUser

Si ejecutamos el comando acompañado del nombre, nos mostraría algo así:

Estos datos son muy básicos y en nuestra opinión, debemos prestar más atención en los parámetros (que no aparecen por defecto) como LockedOut o PasswordExpired. Lo conseguimos de esta forma:

Tienes toda la documentación sobre el comando Get-ADUser en el siguiente enlace de Microsoft:

https://docs.microsoft.com/en-us/powershell/module/addsadministration/get-aduser?view=win10-ps

Ahora imaginemos que necesitas comprobar el estado de muchas cuentas para prevenir una incidencia en el arranque del motor ¿cómo le pasamos un listado de cuentas a nuestra consulta?

Creamos un fichero .csv con la siguiente estructura:

Fichero CSV

Llamamos a este fichero CSV desde nuestro PowerShell y lo recorremos con un “ForEach”:

Import-Module ActiveDirectory
Import-Csv C:\tmp\SQL_Service_Account_PRO.csv | ForEach {
Get-ADUser -identity $_.user -Properties name, PasswordExpired, LockedOut | `
    Select name,PasswordExpired, LockedOut }  | Format-Table -AutoSize 

Este sería el resultado, formateado en Tabla y con el parámetro AutoSize para ajustarlo:

Y hasta aquí esta pequeña, pero creemos que muy útil entrada. Si os ha ayudado en algún momento o creéis que se puede mejorar no dudéis en hacernos llegar vuestra opinión a través de los comentarios o nuestro correo.

¡Hasta pronto!

2 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *