Cannot access a disposed object. Object name: ‘NavSystemTenant’

I’ve created a new NAV Instance, setup the correct database name then tried to run the Service and I’ve received the following error message:

Error
—————————

ServerInstance ‘MicrosoftDynamicsNavServer$NewInstance’ failed to reach status ‘Running’ on this server due to the following error: ‘Cannot start the service.’. Additional information may be in the event log of the server.
—————————

OK
—————————

As suggested by the error message I’ve opened the Event Log to look for additional information and I’ve found the following error message:

Cannot access a disposed object. Object name: ‘NavSystemTenant’.

What does this error mean? Well the error message does not help us to fix this issue but I’ve found a solution and I’m here to share it with you (this is the mission of my website, share my solutions).

Cause:
The new instance is setup to use a port (Management Services Port, Client Services Port, SOAP Services Port or OData Services Port) that is already in use by an existing running NAV Instance. In my case was the SOAP Services Port.

Solution:
Change the port number to a one which is not being used by any other instance, or stop the other service using this port.

Did my solution fix your issue? Leave a comment.

Cannot access a disposed object. Object name: ‘Tenant’

I’ve created a new NAV Instance, setup the correct database name then tried to run the Service and I’ve received the following error message:

Error
—————————

ServerInstance ‘MicrosoftDynamicsNavServer$NewInstance’ failed to reach status ‘Running’ on this server due to the following error: ‘Cannot start the service.’. Additional information may be in the event log of the server.
—————————

OK
—————————

As suggested by the error message I’ve opened the Event Log to look for additional information and I’ve found the following error message:

Cannot access a disposed object. Object name: ‘Tenant’.

What does this error mean? Well the error message does not help us to fix this issue but I’ve found a solution and I’m here to share it with you (this is the mission of my website, share my solutions).

Cause:
The new instance is setup to use a port (Management Services Port, Client Services Port, SOAP Services Port or OData Services Port) that is already in use by an existing running NAV Instance. In my case was the SOAP Services Port.

Solution:
Change the port number to a one which is not being used by any other instance, or stop the other service using this port.

Did my solution fix your issue? Leave a comment.

The Microsoft Dynamics NAV server is currently not ready to serve requests

Searching on internet I’ve found a few of posts with solution for this error, they were quite old (2014) and the cause of the error was that the account used by the NAV Server was not db_owner in the database. The solution was to grant that user to db_owner.

Well the issue now is that the account used to run the NAV Server in my database is db_owner.

What is the error? What is the meaning of this error message?

The Microsoft Dynamics NAV server is currently not ready to serve requests. Try again later or contact your system administrator.

To be honest this error message did not help me to understand what was the issue, even in the Event Log there was not extra info.

Do not ask me the meaning of this error message and I do not know yet the causes but I found a solution (this is the mission of my website, share my solutions).

Solution:
Navigate to the following folder

C:\ProgramData\Microsoft\Microsoft Dynamics NAV\<NAVVersionNumber>\Server

and delete the folder with the name of NAV Instance of which you had the error. Then folders have the same name of the Service, with the following format

MicrosoftDynamicsNavServer$<ServerInstance>

where <ServerInstance> is the name of the NAV Instance.
At the end restart the NAV Instance.

Note: Don’t be worry, after you will restart the instance, this folder will be recreated.

Did my solution fix your issue? Leave a comment.

HOW TO set NAV Service Startup Type via PowerShell

When you create a new Instance using the command New-NAVServerInstance it will set the Startup Type of the NAV Service as “Automatic” by default.

I haven’t found any NAV command to change it, so let us think about NAV Service as any other Windows Service.

In PowerShell there is a command Set-Service that allows to change an existing Service.

NAV Service names have the following format

MicrosoftDynamicsNavServer$<ServerInstance>

where <ServerInstance> is the name of the NAV Instance

So running the following command we can change the Startup Type to Automatic, Manual or Disabled.

Set-Service –Name "MicrosoftDynamicsNavServer`$DynamicsNAV100" –StartupType Manual

This example will set the NAV Service for the Server Instance DynamicsNAV100 to Manual.

Unfortunately -StartupType parameter does not have a value for Automatic (Delayed Start)

So it seams a bit tricky but just looking into the register I’ve noted that the other services that had Automatic (Delayed Start) as Startup Type have a REG_DWORD value called “DelayedAutoStart” with value 1 under HKLM\System\CurrentControlSet\Services\

So the idea is use the previous command to set the Startup Type to Automatic then add REG_DWORD via script

Set-Service –Name "MicrosoftDynamicsNavServer`$DynamicsNAV100" –StartupType Automatic
Set-ItemProperty -Path "Registry::HKLM\System\CurrentControlSet\Services\MicrosoftDynamicsNavServer`$DynamicsNAV100" -Name "DelayedAutostart" -Value 1 -Type DWORD

In reality we could setup everything from the registry

Set-ItemProperty -Path "Registry::HKLM\System\CurrentControlSet\Services\MicrosoftDynamicsNavServer`$DynamicsNAV100" -Name "Start" -Value 2 -Type DWORD
Set-ItemProperty -Path "Registry::HKLM\System\CurrentControlSet\Services\MicrosoftDynamicsNavServer`$DynamicsNAV100" -Name "DelayedAutostart" -Value 1 -Type DWORD

NOTE 1: Both scripts will work only if the current Startup Type is different of Automatic
NOTE 2: “DelayedAutostart” DWORD will have effect only if you setup the Service Type as Automatic.

Did my HOW TO help you? Leave a reply.

HOW TO run SQL query for multiple companies in NAV database

In Micrososoft Dynamics NAV, tables with property DataPerCompany = No are stored in SQL in multiple tables having the company name as prefix, than $ and the name.

Example, the Customer table in Cronus Company:

CRONUS UK Ltd_$Customer

The following T-SQL Script retrieves the list of the companies, loop through them and use the Company Name as prefix (@pref) to run a query (@sql_ext).

DECLARE @pref nvarchar(30)
DECLARE @sql_ext nvarchar(max)

DECLARE company_cursor CURSOR FOR 
SELECT replace(Name,'.','_') FROM Company

OPEN company_cursor
FETCH NEXT FROM company_cursor INTO @pref 

WHILE @@FETCH_STATUS = 0
BEGIN

SELECT @sql_ext = N'SELECT * FROM [dbo].[' + @pref + '$Inquiry Note] WHERE DATALENGTH([Note]) < 4'

EXEC sp_executesql @sql_ext
FETCH NEXT FROM company_cursor INTO @pref 
END

Here find another reading suggestion, this time in C/AL: HOW TO change data for all Companies in NAV

Did my HOW TO help you? Leave a reply.

HOW TO show BigText in a message window in C/AL

According to the MSDN documentation in the link BigText Data Type

"cannot be shown in a message window"

This example requires that you create the following variables:

Name DataType Subtype
varBigText BigText

It is true that you cannot insert the BigText in a message

MESSAGE(varBigText);

HOW TO show BigText in a message window in C/AL?

You can show the content of the variable easily using the FORMAT Function (Code, Text) to convert the BigText in a String.

MESSAGE(FORMAT(varBigText));

Did my HOW TO help you? Leave a reply.

Page contains several Actions with the same ID

Microsoft Dynamics NAV
—————————
Page {PageNo} {PageName} contains several Actions with the same ID {ActionID}. Redesign the page to remove duplicate Action IDs.
—————————
OK
—————————

contains several Actions with the same ID

Solution:
Delete lines for page in the error from the 2000000074 Profile Metadata system table.

Did my solution solve your problem? Leave a comment.