Error message when you try to start the AOS for Microsoft Dynamics AX 4.0: "Error 100: Cannot create another system semaphore"

Applies to: Microsoft Dynamics AX 4.0Axapta Object Server

Symptoms


When you try to start the Application Object Server (AOS) for Microsoft Dynamics AX 4.0, the AOS does not start. Additionally, you receive one of the following error messages:
Error 100: Cannot create another system semaphore.
Object Server 01: Dialog issued for client-less session 1: The program is unable to load and execute the class 'SqlDatabaseInit', which is essential in order to identify the database vendor, and load the appropriate SQL system variables. This can be caused by insufficient access rights to the SQL Database, a missing or corrupted application file, or syntax error(s) within the class itself.

Cause


This problem may occur because of several different conditions. To determine the specific cause of the error message, we recommend that you look in the Application log to locate a more meaningful error message. To do this, follow these steps:
  1. Click Start, point to All Programs, point to Administrative Tools, and then click Event Viewer.
  2. Under Event Viewer (Local), click Application.
  3. In the right pane, scroll down the list of messages to locate an error message.
  4. Double-click the error message to determine whether the message applies to your situation.
The error message that you locate may indicate that one or more of the following conditions are true:
  • The Microsoft SQL Server service is not started.
  • The account that is used to start the AOS does not have the correct database roles in SQL Server.
  • The number of AOS licenses is exceeded.
  • The SQL Server database sort order is incorrectly case-sensitive.
Note This list includes the known causes of this error message. There may be other causes.

Resolution


To resolve this problem after you verify that a specific error message applies to your situation, use one of the following methods, as appropriate for your situation.

Note You may have to use more than one method to resolve this issue.

Method 1: Start the SQL Server service

The AOS depends on the SQL Server service being started. If the SQL Server service is not started, the AOS will not start.

Use one of the following procedures, as appropriate for the version of SQL Server that you are running.

Microsoft SQL Server 2000

To start the SQL Server 2000 service, follow these steps:
  1. Click Start, point to All Programs, point to Administrative Tools, and then click Services.
  2. Locate the MSSQLServer service.
  3. If the service is not started, right-click the service, and then click Start.

Microsoft SQL Server 2005

To start the SQL Server 2005 service, follow these steps:
  1. Click Start, point to All Programs, point to Administrative Tools, and then click Services.
  2. Locate the SQL Server (MSSQLServer) service.
  3. If the service is not started, right-click the service, and then click Start.

Method 2: Make sure that the account that is used to start the AOS has the correct database roles in SQL Server

The account that is used to start the AOS service must have at least the following database roles assigned in SQL Server:
  • db_ddladmin
  • db_datareader
  • db_datawriter
To determine whether the account has the correct database roles, follow these steps:
  1. Determine the account that is used to start the AOS service. To do this, follow these steps:
    1. Click Start, point to All Programs, point to Administrative Tools, and then click Services.
    2. Locate the service that starts with Dynamics Server$.
    3. Right-click the service, and then click Properties.
    4. Click the Log On tab.
    5. Under Log on as, determine the account that is used to log on to the AOS service.

      Notes
      • By default, the NT Authority\Network Service account is used to log on to the AOS service.
      • If the AOS service is on the same computer as SQL Server, the account that requires SQL Server permissions is the NT Authority\Network Service account.
      • If the AOS service is running on a separate computer from the SQL Server, the account that requires SQL server permissions is the computer name of the computer on which the AOS service is running. The format of the computer name is as follows:
        domain\computer_name$
        In this case, domain is the name of the network domain, and computer_name$ is the name of the AOS server.
  2. Use one of the following procedures, as appropriate for the version of SQL Server that you are running.

    SQL Server 2000

    For SQL Server 2000, follow these steps:
    1. Click Start, point to All Programs, point to Microsoft SQL Server, and then click Enterprise Manager.
    2. Expand Microsoft SQL Servers.
    3. Expand SQL Server Group.
    4. Expand (Local) (Windows NT).
    5. Expand Security.
    6. Click Logins.
    7. Right-click the account that you determined in step 1, and then click Properties.
    8. Click the Database Access tab.
    9. Click the Axapta database, and then verify that the following database roles are selected:
      • db_ddladmin
      • db_datareader
      • db_datawriter
    10. Click OK.
    11. Expand Databases.
    12. Expand the Dynamics database.
    13. Click Stored Procedures, and then locate the following stored procedures:
      • createserversessions
      • createusersessions
    14. Right-click a stored procedure, and then click Properties.
    15. Click Permissions.
    16. Locate the account that you determined in step 1, click to select the EXEC check box, and then click OK.

      Note Repeat steps 2n to 2p for the other stored procedure in step 2m.

    SQL Server 2005

    For SQL Server 2005, follow these steps:
    1. Click Start, point to All Programs, point to Microsoft SQL Server 2005, and then click SQL Server Management Studio.
    2. On the Summary tab, double-click Security.
    3. Double-click Logins.
    4. Right-click the account that you determined in step 1, and then click Properties.
    5. Click User Mapping.
    6. Click the Axapta database, and then verify that the following database roles are selected:
      • db_ddladmin
      • db_datareader
      • db_datawriter
    7. Click OK.
    8. Expand Databases.
    9. Expand the Dynamics database.
    10. Expand Programmability.
    11. Expand Stored Procedures.
    12. Locate the following stored procedures:
      • createserversessions
      • createusersessions
    13. Right-click a stored procedure, and then click Properties.
    14. Click Permissions.
    15. Locate the account that you determined in step 1, click to select the Grant check box for the EXEC permission, and then click OK.

      Note Repeat steps 2m to 2o for the other stored procedure in step 2l.

Method 3: Determine whether the number of AOS licenses is exceeded

To determine whether the number of AOSs for which you are currently licensed is exceeded, follow these steps:
  1. Start Microsoft Dynamics AX 4.0, and then log on.
  2. Click Administration.
  3. Expand Setup.
  4. Expand System.
  5. Click License information.
  6. On the System tab, select Application Object Servers under Code description.
  7. In the Status column, note the number of AOSs for which you are currently licensed.
Note To start an additional AOS, you can shut down an AOS that is running. Alternatively, you can purchase additional AOS licenses.

Method 4: Make sure that the SQL Server database sort order is case-insensitive

In Microsoft Dynamics AX 4.0, the sort order for the database must be case-insensitive.


To determine the sort order in your situation, use one of the following procedures, as appropriate for the version of SQL Server that you are running.

Microsoft SQL Server 2000

For Microsoft SQL Server 2000, follow these steps:
  1. Click Start, point to All Programs, point to Microsoft SQL Server, and then click Query Analyzer.
  2. Log in to Query Analyzer, and then run the following script:
    sp_helpsort

Microsoft SQL Server 2005

For Microsoft SQL Server 2005, follow these steps:
  1. Click Start, point to All Programs, point to Microsoft SQL Server 2005, and then click SQL Server Management Studio.
  2. Click New Query, and then run the following script:
    sp_helpsort
In the script results list, there should be a listing that states either "case-insensitive" or "case-sensitive."