The Dialog Queue Info in the SAP MMC is provided by the sapstartsrv.exe (SAPXXX_NN Windows Service) from information stored by the ABAP server in a shared memory segment.
When the message "Dispatcher running but dialog queue unavailable" is appearing in SAP MMC, then the service process (sapstartsrv.exe) can't access the shared memory segment.
This can have following reasons:
- The shared memory segment size the service tries to access at the service side is different to what has been created by the dispatcher (most common root cause). Reason for that:
- The Executables of the service (sapstartsrv.exe - run command sc.exe qc SAPxxx_nn in a command box or powershell, value of binary_path_name) and the dispatcher (disp+work.exe) must have the exact same version. See also SAP MMC - right click on the SID, Version Info.In different versions the shared memory can have a different size...
Dispatcher(disp+work.exe see complete path in ...\work\sapstart.log) and service executable (see sc.exe) must reside in the same directory. This often gets corrupted when the service is manually re-registered and people just start sapstartsrv.exe from a command line WITHOUT specifying the complete path to sapstartsrv.exe in the instance exe directory. At installation time sapstartsrv.exe gets copied to windows\system32. This executable is registered as DCOM-Typelibrary and normally not updated any more (there is no need to update). When calling sapstartsrv.exe in the cmd.exe the executable in windows\system32 is started because the system32 directory is located in the environment variable path before the right SAP executable directory. - The dialog queue info length depends from profile parameter rdisp/elem_per_queue. If the system is still using two different profiles (Start_instancename_hostname and SID_instancename_hostname) AND rdisp/elem_per_queue is set in the instance profile but not in the start-profile, the service (using the startprofile) will try to access the shared memory segment created by the dispatcher (instance-profile) with a different size. This is exactly the reason why in current SAP systems the start-profile information is merged in to the instance profile and the service is using the instance profile. short term solution: put the parameter rdisp/elem_per_queue in both profiles, long term: reconfigure the instance to just use ONE profile. Keep in mind: when you have changed a parameter in sapstartsrv's profile you have to restart the service in order to activate your change in the service.
- In theory it is also possible that the queue shared memory segment is protected with a wrong access control list. the access control list of the shared memory segment is copied from the file security disp+work.exe during creation of shared memory segment, the one the service uses is the ACL of the service (sapstartsrv.exe). But normally the service won't start, reporting an access denied error during startup in sapstart.log or sapstartsrv.log.
When this situation occures you will typically not find any information in the instance dev_disp or dev_wXX trace files. As far as I can remember you will also find no information in sapstart.log or sapstartsrv.log
kind regards
Peter