web-dev-qa-db-fra.com

Manipuler les mots de passe de SQL Login dans SQL Server

Est-il possible de changer le mot de passe pour un identifiant avec un mot de passe expiré à l'aide de Objets de gestion SQL Server (SMO) Programmation?

Plusieurs fois pendant les heures de travail, j'ai reçu ce message d'un serveur de production. J'ai un privilège de niveau "SA" dans SQL Server.

Screenshot

Environnement de travail

  1. Microsoft SQL Server 2012 Express
  2. Windows Server 2012 R2
  3. VMware, inc. Plate-forme virtuelle VMware
4
Md Haidar Ali Khan

Vous pouvez utiliser login.changepassword Méthode:

public void ChangePassword(
    string newPassword,
    bool unlock,
    bool mustChange
)

Vous pouvez également modifier le mot de passe à l'aide de T-SQL:

USE [master]
GO
ALTER LOGIN [test] WITH PASSWORD=N'123456'
GO

L'âge de mot de passe maximum peut être défini:

  • Ouvrez les outils administratifs/la politique de sécurité locale (ou exécutez SECPOL.MSC).
  • Accédez aux paramètres de sécurité/Politiques de compte/Politique de mot de passe
  • Mettre à jour le mot de passe maximum Âge

Il peut également être défini par AD et GPO.

4
Julien Vavasseur

Complétant à Réponse de Julien , Vous pouvez être proactif pour planifier ci-dessous TSQL en tant que travail pour vous alerter quotidiennement sur - DaysUntilExpiration de LOGINPROPERTY par exemple Obtenez toutes les connexions de votre serveur de base de données qui vont expirer dans 2 jours.

SELECT name as LoginName,
create_date as LoginCreateDate,
modify_date as LoginModifiedDate,
is_policy_checked ,
is_expiration_checked ,
-- returns the number of days until the password expires.
LOGINPROPERTY(name, 'DaysUntilExpiration') DaysUntilExpiration,
LOGINPROPERTY(name, 'PasswordLastSetTime') PasswordLastSetTime,
LOGINPROPERTY(name, 'IsExpired') IsExpired,
LOGINPROPERTY(name, 'IsMustChange') IsMustChange
From sys.sql_logins
--- optional filter 
-- where LOGINPROPERTY(name, 'DaysUntilExpiration') >= 2
6
Kin Shah