Sage 100

 View Only
  • 1.  MAS_USERS and MAS_REPORTS setup

    Posted 11-19-2025 09:53
    Edited by Wayne Schulz 11-19-2025 10:02

    I'm in the process of an upgrade going from Sage 100 2022 Premium to Sage 100 2025 Premium. 

    For whatever reason after I'd already migrated 2022 to 2025 the IT people had to restore the SQL server. I found that when they restored they (a) didn't bring back the MAS_USER and MAS_REPORTS and the ownership of the MAS_XXX was all set to the IT login account.

    I think changing ownership is pretty easy. However I'm not sure of the exact rights MAS_USER and MAS_REPORTS need since those are setup during the initial Sage 100 Premium installation.

    Is it safe for me to manually recreate these two SQL user accounts and if so what permissions do each need?

    Or should I just uninstall and start over? 



    ------------------------------
    Wayne Schulz
    wayne@s-consult.com
    Schulz Consulting
    (860) 516-8990
    Connecticut
    ------------------------------



  • 2.  RE: MAS_USERS and MAS_REPORTS setup

    Posted 11-19-2025 10:29

    MAS_Reports gets datareader role for each database.

    MAS_User get dbowner from being assigned as the owner - no need to add it under each database.



    ------------------------------
    Phil McIntosh
    Friendly Systems
    ------------------------------



  • 3.  RE: MAS_USERS and MAS_REPORTS setup

    Posted 11-19-2025 11:41

    Thanks Phil - I went though this and recreating and adjusting these two accounts within the SQL server was able to be scripted ( used Google Gemini AI )  and appears to have worked. I'm now back into. Sage 100 2025.

    The condensed steps included your recommendation and the final step was running Sage 100 2025 SQL Settings Utility (Start Menu > Sage 100 2025 > SQL Settings). Then I provided new passwords for each account and used the SA credentials to reset and synchronize the passwords between Sage and SQL. 

    Sage 100 2025 then started right up

    Here's the initial Gemini AI response when I asked it about recreating accounts.

    Here is the breakdown of the required SQL permissions for the MAS_USER and MAS_REPORTS accounts.

    Quick Comparison Table

    Account Name Purpose Server Role Database Mapping Database Role Membership
    MAS_USER Main Application (Read/Write) public MAS_System & All Company DBs db_owner
    MAS_REPORTS Crystal Reports (Read Only) public MAS_System & All Company DBs db_datareader

    1. MAS_USER (The Application Login)

    This account is the workhorse. It processes all transactions, writes to the General Ledger, and handles schema changes during updates.

    • Server Roles: It strictly requires public. It does not need sysadmin (and for security, should not have it).

    • User Mapping: You must map this login to:

      • The MAS_System database.

      • Every individual company database (e.g., MAS_ABC, MAS_XYZ).

    • Database Role Membership:

      • Requirement: db_owner.

      • Technician Note: While you can technically run day-to-day operations with db_datareader + db_datawriter, Sage 100 Premium frequently requires the ability to create temporary tables, truncate tables, and modify schema during module upgrades or install updates. Leaving it as db_owner prevents obscure permission errors during Period End Processing.

    2. MAS_REPORTS (The Reporting Login)

    This account is used by the ODBC connection for Reports. It is designed to be a "Read Only" user to prevent a malicious (or poorly written) report from altering your accounting data.

    • Server Roles: public.

    • User Mapping: Map this login to:

      • The MAS_System database.

      • Every individual company database.

    • Database Role Membership:

      • Requirement: db_datareader.

      • Technician Note: Do not give this account db_owner or db_datawriter. If a user creates a custom Crystal Report with a command object, you want to ensure the SQL Server rejects any UPDATE or DELETE statements.


    Critical "Sage Wisdom" for Manual Setup

    If you are adding these manually in SQL Server Management Studio (SSMS) rather than using the Sage configuration utility, keep these three things in mind:

    1. The Password Synchronization Trap

    Creating the user in SQL does not update Sage 100's internal configuration files. Sage 100 stores the encrypted SQL password in the MASSQL.settings file (or MAS_System config tables, depending on the version).

    • The Fix: Ensure the password you set in SSMS matches exactly what Sage expects. If you don't know the original password, you will need to reset it in SSMS and then run the Sage 100 Premium SQL Connection utility on the server to update the application's encrypted strings.

    2. Orphaned Users (After Restore)

    If you restored the databases from a backup (e.g., moving from Server A to Server B) and then created the SQL Logins, the "User" inside the database is likely not linked to the "Login" on the server.

    • The Fix: Run the following query for each database to link them back up:

      <response-element class="" ng-version="0.0.0-PLACEHOLDER"></response-element>
      SQL
      USE MAS_XXX; -- Repeat for MAS_System and all company DBs
      EXEC sp_change_users_login 'Auto_Fix', 'MAS_USER';
      EXEC sp_change_users_login 'Auto_Fix', 'MAS_REPORTS';
      
      <response-element class="" ng-version="0.0.0-PLACEHOLDER"></response-element>

    3. Default Schema

    Ensure the "Default Schema" for both users in the User Mapping section is set to dbo.





    ------------------------------
    Wayne Schulz
    wayne@s-consult.com
    Schulz Consulting
    (860) 516-8990
    Connecticut
    ------------------------------



  • 4.  RE: MAS_USERS and MAS_REPORTS setup

    Posted 11-19-2025 11:43

    I was surprised ( happy ) that Google Gemini was able to generate this without me having to supply a user guide to point it to the Sage KB. I'm not sure the info is every step that needs to be taken. In my case there were some minor errors that came up and in every case I asked Gemini about the error and it gave me a script to fix it.




    ------------------------------
    Wayne Schulz
    wayne@s-consult.com
    Schulz Consulting
    (860) 516-8990
    Connecticut
    ------------------------------



  • 5.  RE: MAS_USERS and MAS_REPORTS setup

    Posted 11-19-2025 14:03

    Awesome!!



    ------------------------------
    Jeff Schwenk
    Owner
    Bottomline Software, Inc.
    Waynesboro VA
    (540) 221-4444

    Improving bottom lines for over 25 years!
    ------------------------------



  • 6.  RE: MAS_USERS and MAS_REPORTS setup

    Posted 11-19-2025 14:19

    I used this script on a recent upgrade, to fix SQL permissions (where I had to move the databases back to the original SQL instance after the migration / conversion).

    use MAS_System; exec sp_changedbowner 'MAS_User'; exec sp_dropuser 'MAS_Reports'; exec sp_grantdbaccess 'MAS_Reports'; exec sp_addrolemember 'db_datareader', 'MAS_Reports';
    use MAS_WM6; exec sp_changedbowner 'MAS_User'; exec sp_dropuser 'MAS_Reports'; exec sp_grantdbaccess 'MAS_Reports'; exec sp_addrolemember 'db_datareader', 'MAS_Reports';
    use MAS_WMA; exec sp_changedbowner 'MAS_User'; exec sp_dropuser 'MAS_Reports'; exec sp_grantdbaccess 'MAS_Reports'; exec sp_addrolemember 'db_datareader', 'MAS_Reports';
    use MAS_WME; exec sp_changedbowner 'MAS_User'; exec sp_dropuser 'MAS_Reports'; exec sp_grantdbaccess 'MAS_Reports'; exec sp_addrolemember 'db_datareader', 'MAS_Reports';
    use MAS_WMH; exec sp_changedbowner 'MAS_User'; exec sp_dropuser 'MAS_Reports'; exec sp_grantdbaccess 'MAS_Reports'; exec sp_addrolemember 'db_datareader', 'MAS_Reports';
    use MAS_WMO; exec sp_changedbowner 'MAS_User'; exec sp_dropuser 'MAS_Reports'; exec sp_grantdbaccess 'MAS_Reports'; exec sp_addrolemember 'db_datareader', 'MAS_Reports';
    use MAS_WMV; exec sp_changedbowner 'MAS_User'; exec sp_dropuser 'MAS_Reports'; exec sp_grantdbaccess 'MAS_Reports'; exec sp_addrolemember 'db_datareader', 'MAS_Reports';
    use MAS_WMW; exec sp_changedbowner 'MAS_User'; exec sp_dropuser 'MAS_Reports'; exec sp_grantdbaccess 'MAS_Reports'; exec sp_addrolemember 'db_datareader', 'MAS_Reports';
    use MAS_WMZ; exec sp_changedbowner 'MAS_User'; exec sp_dropuser 'MAS_Reports'; exec sp_grantdbaccess 'MAS_Reports'; exec sp_addrolemember 'db_datareader', 'MAS_Reports';
    use MAS_WPR; exec sp_changedbowner 'MAS_User'; exec sp_dropuser 'MAS_Reports'; exec sp_grantdbaccess 'MAS_Reports'; exec sp_addrolemember 'db_datareader', 'MAS_Reports';

    If you are manually creating the SQL logins, you might want to add the server role for MAS_User:



    ------------------------------
    Kevin Moyes
    Technical Systems Analyst
    Munjal White Consulting Co.
    Toronto ON
    ------------------------------