Check_PeopleSoft_User_Lockout

Snippet Name: Check_PeopleSoft_User_Lockout

Tags:

Created Date: 2025-06-16 13:12:39
Last Modified Date: 2025-05-31 10:32:07

Dependencies:

DBA Notes:

Sample Output:

Title: Check PeopleSoft User Lockout
Author: user
in the application "peopleSoft", the user "people is reported as locked out, but the error is not SQL server related, but related to the application. how can I check if user  "people"  is locked or not in each of my databases realted to the applciaiton?
 
 

Author: ChatGPT
In PeopleSoft, user authentication and account lockouts are typically managed within the **PeopleSoft application tables** rather than SQL Server logins. To check if the user **"people"** is locked out across all your PeopleSoft-related databases, you need to query the relevant application tables.

### Steps to Check for Lockout in PeopleSoft:

1. **Check the `PSOPRDEFN` Table**  
   The `PSOPRDEFN` table contains PeopleSoft user definitions, including lockout status.

   ```sql
   SELECT OPRID, ACCTLOCK, LOCK_REASON, LASTSIGNONDTTM
   FROM PSOPRDEFN
   WHERE OPRID = 'people';
   ```

   - `ACCTLOCK`:  
     - `0` ??? Account is **not** locked.  
     - `1` ??? Account **is** locked.  
   - `LOCK_REASON`: May provide additional details on why the account is locked.
   - `LASTSIGNONDTTM`: Last successful login attempt.

2. **Check for Invalid Login Attempts**  
   If a user is getting locked out frequently, you can review their sign-on audit records.

   ```sql
   SELECT OPRID, LOGINDTTM, LOGOUTDTTM, LOGINSTATUS
   FROM PSACCESSLOG
   WHERE OPRID = 'people'
   ORDER BY LOGINDTTM DESC;
   ```

   - `LOGINSTATUS`:  
     - `0` ??? Successful login  
     - `1` ??? Failed login attempt  

3. **Check Across All PeopleSoft Databases**  
   If you have multiple databases related to PeopleSoft, you can run the above queries on each database using **dynamic SQL**. Example:

   ```sql
   DECLARE @sql NVARCHAR(MAX) = '';

   SELECT @sql = @sql + 
   'SELECT ''' + name + ''' AS DatabaseName, OPRID, ACCTLOCK, LOCK_REASON 
    FROM [' + name + '].dbo.PSOPRDEFN WHERE OPRID = ''people'' UNION ALL '
   FROM sys.databases
   WHERE name LIKE 'HR%' OR name LIKE 'FSCM%' OR name LIKE 'CRM%'; -- Adjust as needed

   -- Remove last "UNION ALL"
   SET @sql = LEFT(@sql, LEN(@sql) - 10);

   EXEC sp_executesql @sql;
   ```

   This will check for the user status in all databases with names matching PeopleSoft modules like **HRMS, FSCM, CRM**.

### Next Steps:
- If `ACCTLOCK = 1`, you may need to **unlock the user** via the PeopleSoft application.
- If the issue persists despite `ACCTLOCK = 0`, check **web server logs, integration broker logs, and process scheduler logs** for further clues.

Let me know if you need help adjusting the query for your specific environment!


Leave a Reply