Είναι γνωστό ότι στο SQL Server έχουμε την δυνατότητα να κάνουμε authenticate users είτε με windows account είτε με SQL Logins (account).
Για τα windows accounts η διαχείριση γίνεται μέσα από το Active Directory με τα tools που αυτό προσφέρει.
Για τα SQL Logins πάλι έχουμε τα εργαλεία που ο SQL Server προσφέρει μέσα από το SSMS αλλά είναι στη φύση του DBA πάντα να θέλει το κάτι παραπάνω. Όσοι DBA εργάζονται σε οργανισμούς με αυστηρούς ελέγχους σε θέματα ασφαλείας είναι συνήθως αυτοί που ζητούν το κάτι παραπάνω. Για αυτούς αλλά όχι μόνο το παρακάτω query θα το λατρέψουν καθώς με μια ματιά μπορούν να δουν όλες τις πληροφορίες που αφορούν τα SQL Logins τόσο για να παρέχουν τα στοιχεία αυτά στου ελεγκτικούς φορείς αλλά και για να μπορούν εύκολα να κάνουν και troubleshooting σε διάφορες περιπτώσεις όπως ποια είναι τα accounts που έχουν γίνει Locked, πόσες φορές έχουν δώσει λάθος password, πόσες μέρες απομένουν μέχρι να ζητηθεί να αλλάξουν το password και ακόμα περισσότερα.
Το query είναι αρκετά απλό καθώς διαβάζει την βασική λίστα των χρηστών του SQL Server που δεν είναι άλλη από τον sys.server_principals με φίλτρο στο type field την τιμή 'S' που είναι τα SQL Logins και χρησιμοποιώντας την LOGINPROPERTY function.
SELECT name AS loginname
, LOGINPROPERTY(name, 'BadPasswordCount') AS BadPasswordCount
, LOGINPROPERTY(name, 'BadPasswordTime') AS BadPasswordTime
, LOGINPROPERTY(name, 'DaysUntilExpiration') AS DaysUntilExpiration
, LOGINPROPERTY(name, 'DefaultDatabase') AS DefaultDatabase
, LOGINPROPERTY(name, 'DefaultLanguage') AS DefaultLanguage
, LOGINPROPERTY(name, 'HistoryLength') AS HistoryLength
, LOGINPROPERTY(name, 'IsExpired') AS IsExpired
, LOGINPROPERTY(name, 'IsLocked') AS IsLocked
, LOGINPROPERTY(name, 'IsMustChange') AS IsMustChange
, LOGINPROPERTY(name, 'LockoutTime') AS LockoutTime
, LOGINPROPERTY(name, 'PasswordHash') AS PasswordHash
, LOGINPROPERTY(name, 'PasswordLastSetTime') AS PasswordLastSetTime
, LOGINPROPERTY(name, 'PasswordHashAlgorithm') AS PasswordHashAlgorithm
FROM sys.server_principals
WHERE type = 'S'
Το αποτέλεσμα είναι πέρα για πέρα ικανοποιητικό
//antonch