Blocking problems caused by Microsoft Dynamics NAV 2009 SP1 using Microsoft SQL Server SERIALIZABLE isolation level

Applies to: Dynamics NAV 2009

RAPID PUBLISHING ARTICLES PROVIDE INFORMATION DIRECTLY FROM WITHIN THE MICROSOFT SUPPORT ORGANIZATION. THE INFORMATION THAT IS CONTAINED HEREIN IS CREATED IN RESPONSE TO EMERGING OR UNIQUE TOPICS, OR IS INTENDED TO SUPPLEMENT OTHER KNOWLEDGE BASE INFORMATION.
This article applies to Microsoft Dynamics NAV for all countries and all language locales.

Symptoms


Microsoft Dynamics NAV customers may experience blocking problems when multiple users enter journal entries, sales order entries, purchase order entries and similar tasks in Microsoft Dynamics NAV 2009 SP1.

Cause


Microsoft SQL Server blocking problems can be caused by unwanted range locks in the SQL Server database. These range locks occur when running under the SERIALIZABLE isolation level on Microsoft SQL server.


Without the hotfix described in this article, Microsoft Dynamics NAV uses the SERIALIZABLE transaction isolation level in Microsoft SQL Server in writable transactions. After applying this hotfix, it will be possible to configure Microsoft Dynamics NAV to use the REPEATABLE READ isolation level instead.

Resolution


To resolve this problem, follow these steps:
  1. Apply the hotfix that is described in this article.
  2. Configure Microsoft Dynamics NAV to use the REPEATABLE READ isolation level in Microsoft SQL Server. You can do this by enabling the 4194304 flag in the diagnostics field of the $ndo$dbproperty table in the Microsoft Dynamics NAV database. To enable the 4194304 flag, run the following TSQL statement in the Microsoft Dynamics NAV SQL database:
    update [$ndo$dbproperty] set diagnostics = diagnostics | 4194304
    For more information about Microsoft SQL Server transaction isolation level, visit the topic "Isolation Levels in the Database Engine" on Microsoft MSDN.
Enabling the REPEATABLE READ isolation level in Microsoft Dynamics NAV will improve general performance in situations where multiple users are experiencing blocking when they are entering journal entries, sales order entries, purchase order entries and similar tasks.

The difference between the SERIALIZABLE transaction isolation level and the REPEATABLE READ transaction isolation level is that SERIALIZABLE transaction isolation level protects against phantom reads. Therefore, enabling REPEATABLE READ transaction isolation level introduces a theoretical risk of phantom reads. The following example shows what this means from a C/AL perspective.


Note Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure. However, they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.
MYTABLE.LOCKTABLE;
MYTABLE.SETCURRENTKEY("Document No.", "Line No.");
MYTABLE.SETRANGE(MYTABLE."Document No.", '1');
MYTABLE.SETRANGE(MYTABLE."Line No.", 1, 10);
IF MYTABLE.FIND('-') THEN
REPEAT
UNTIL (MYTABLE.NEXT()=0);

IF MYTABLE.FIND('-') THEN
REPEAT
UNTIL (MYTABLE.NEXT()=0);
COMMIT;
With SERIALIZABLE transaction isolation level, all existing records will be locked during the first "REPEAT UNTIL" loop and other users will also be blocked from inserting new records within the specified range. The record that has Document No=2, Line No=1 will also be blocked. Therefore, the second loop will always read exactly the same result as the first loop. With REPEATABLE READ transaction isolation level, someone can theoretically insert a new record within the mentioned range which will then appear as an additional record in the second loop.

To disable the 4194304 flag, run the following TSQL statement:
update [$ndo$dbproperty] set diagnostics = diagnostics ^ 4194304
Microsoft recommends thorough testing before making any changes to a live environment to ensure that there are no unexpected results.

Hotfix information

A supported hotfix is available from Microsoft. There is a "Hotfix download available" section at the top of this Knowledge Base article. If you are encountering an issue downloading, installing this hotfix, or have other technical support questions, contact your partner or, if enrolled in a support plan directly with Microsoft, you can contact technical support for Microsoft Dynamics and create a new support request. To do this, visit the following Microsoft Web site: You can also contact technical support for Microsoft Dynamics by phone using these links for country specific phone numbers. To do this, visit one of the following Microsoft Web sites:

PartnersCustomersIn special cases, charges that are ordinarily incurred for support calls may be canceled if a Technical Support Professional for Microsoft Dynamics and related products determines that a specific update will resolve your problem. The usual support costs will apply to any additional support questions and issues that do not qualify for the specific update in question.




The e-mail will contain a hyperlink and a password. You can use the hyperlink to download the Microsoft Dynamics NAV hotfix or the update files. When you click the hyperlink, the File Download – Security Warning dialog box opens. Then, you are prompted to run, to save, or to cancel the download.


If you click Run, the files start the download and the extraction process. You must specify a folder for the new files, and then provide the password.


If you click Save, you must specify a path for saving the compressed file. When you open the file that you saved, you are prompted to specify a path for the files. Then, you must provide the password provided in the e-mail.


If you click Cancel, the download process stops.



How to install a Microsoft Dynamics NAV hotfix or an update file

The Microsoft Dynamics NAV platform hotfixes and updates are made available as single files. To install a Microsoft Dynamics NAV hotfix or an update, you must replace the existing Microsoft Dynamics NAV installation files with the hotfix or the update files. To do this, follow these steps.

Step 1: Replace the files in the Microsoft Dynamics NAV Classic Client installation

In the Microsoft Dynamics NAV Classic Client installation, replace the following files by using the hotfix or the update files.
File nameFile versionFile sizeDateTimePlatform
Dbm.dll6.0.30609.0427,84808-Feb-201015:31x86
Fin.exe6.0.30609.012,598,60008-Feb-201015:32x86
Finhlink.exe6.0.30609.0452,43208-Feb-201015:32x86
Finsql.exe6.0.30609.012,713,80808-Feb-201015:32x86
Nc_netb.dll6.0.30609.096,59208-Feb-201015:31x86
Nc_tcp.dll6.0.30609.098,64008-Feb-201015:31x86
Nc_tcps.dll6.0.30609.0141,13608-Feb-201015:31x86
Ndbcs.dll6.0.30609.01,348,94408-Feb-201015:31x86
Slave.exe6.0.30609.0152,40008-Feb-201015:31x86
To replace the existing Microsoft Dynamics NAV files, follow these steps:
  1. Close the Microsoft Dynamics NAV Classic Client.
  2. Locate the Microsoft Dynamics NAV Classic Client installation directory. The Microsoft Dynamics NAV Classic Client is usually installed in the following directory:
    C:\Program Files\Microsoft Dynamics NAV\60\Classic
  3. Copy the files that you downloaded.
  4. Paste the files that you downloaded into the Microsoft Dynamics NAV Classic Client installation directory.
  5. Click Yes to overwrite the files in the directory.

Step 2: Replace the files in the Microsoft Dynamics NAV RoleTailored Client installation

In the Microsoft Dynamics NAV RoleTailored Client installation, replace the following files by using the hotfix or the update files.
File nameFile versionFile sizeDateTimePlatform
Microsoft.dynamics.framework.patterns.dll1.3.10803.12071,65608-Feb-201006:30x86
Microsoft.dynamics.framework.ui.dll1.3.10803.120698,32808-Feb-201006:30x86
Microsoft.dynamics.framework.ui.mapping.dll1.3.10803.120104,42408-Feb-201006:30x86
Microsoft.dynamics.framework.ui.navigation.dll1.3.10803.12034,80008-Feb-201006:30x86
Microsoft.dynamics.framework.ui.ux2006.dll1.3.10803.12088,04008-Feb-201006:30x86
Microsoft.dynamics.framework.ui.ux2006.winforms.dll1.3.10803.12063,48008-Feb-201006:30x86
Microsoft.dynamics.framework.ui.windows.dll1.3.10803.12083,94408-Feb-201006:30x86
Microsoft.dynamics.framework.ui.winforms.controls.dll1.3.10803.1202,111,48808-Feb-201006:30x86
Microsoft.dynamics.framework.ui.winforms.dll1.3.10803.120690,15208-Feb-201006:30x86
Microsoft.dynamics.nav.client.builder.dll6.0.30609.0198,54408-Feb-201015:20x86
Microsoft.dynamics.nav.client.exe6.0.30609.0149,37608-Feb-201015:20x86
Microsoft.dynamics.nav.client.interop.communicator.dll1.0.559.18375,68808-Feb-201015:20x86
Microsoft.dynamics.nav.client.serviceconnection.dll6.0.30609.0104,35208-Feb-201015:20x86
Microsoft.dynamics.nav.client.ui.dll6.0.30609.0505,72808-Feb-201015:20x86
Microsoft.dynamics.nav.client.winforms.dll6.0.30609.0337,80808-Feb-201015:20x86
Microsoft.dynamics.nav.client.winforms.tlbNot Applicable2,64408-Feb-201012:14Not Applicable
Microsoft.dynamics.nav.language.dll6.0.30609.01,992,57608-Feb-201015:20x86
Microsoft.dynamics.nav.types.dll6.0.30609.0567,16008-Feb-201015:20x86
Microsoft.office.interop.outlook.dll10.0.4504.0395,13608-Feb-201015:32x86
To replace the existing Microsoft Dynamics NAV files, follow these steps:
  1. Close the Microsoft Dynamics NAV RoleTailored client.
  2. Locate the Microsoft Dynamics NAV RoleTailored Client installation directory.

    The Microsoft Dynamics NAV RoleTailored client is usually installed in the following directory:

    C:\Program Files\Microsoft Dynamics NAV\60\RoleTailored Client
  3. Copy the files that you downloaded.
  4. Paste the files that you downloaded into the Microsoft Dynamics NAV RoleTailored Client installation directory.
  5. Click Yes to overwrite the files in the directory.

Step 3: Replace the files in the Microsoft Dynamics NAV Application Server installation

If you have Microsoft Dynamics NAV Application Server installed, replace the following files in the Microsoft Dynamics NAV Application Server installation by using the hotfix or the update files.
File nameFile versionFile sizeDateTimePlatform
Dbm.dll6.0.30609.0427,84808-Feb-201015:31x86
Nas.exe6.0.30609.02,259,78408-Feb-201015:32x86
Nassql.exe6.0.30609.02,352,46408-Feb-201015:33x86
Ndbcs.dll6.0.30609.01,348,94408-Feb-201015:32x86
Slave.exe6.0.30609.0152,40008-Feb-201015:31x86
To replace the files, follow these steps.
  1. Stop the Microsoft Dynamics NAV Application Server.
  2. Locate the Microsoft Dynamics NAV Application Server installation directory. The Microsoft Dynamics NAV Application Server is usually installed in the following directory:
    C:\Program Files\Microsoft Dynamics NAV\60\Application Server
  3. Copy the files that you downloaded.
  4. Paste the files that you downloaded into the Microsoft Dynamics NAV Application Server installation directory.
  5. Click Yes to overwrite the files in the directory.
  6. Start the Microsoft Dynamics NAV Application Server.

Step 4: Replace the files in the Microsoft Dynamics NAV Server installation

In the Microsoft Dynamics NAV Server installation, replace the following files by using the hotfix or the update file.
File nameFile versionFile sizeDateTimePlatform
Httpcfg.exe5.2.3790.022,35208-Feb-201015:32x86
Microsoft.dynamics.nav.language.dll6.0.30609.01,992,57608-Feb-201015:20x86
Microsoft.dynamics.nav.ncl.dll6.0.30609.0604,02408-Feb-201015:20x86
Microsoft.dynamics.nav.server.exe6.0.30609.0141,18408-Feb-201015:20x86
Microsoft.dynamics.nav.service.dll6.0.30609.0145,28008-Feb-201015:20x86
Microsoft.dynamics.nav.service.runtime.dll6.0.30609.075,66408-Feb-201015:20x86
Microsoft.dynamics.nav.service.webservices.dll6.0.30609.0145,30408-Feb-201015:20x86
Microsoft.dynamics.nav.types.dll6.0.30609.0567,16008-Feb-201015:20x86
Microsoft.dynamics.nav.watson.dll6.0.30609.042,88008-Feb-201015:20x86
Nclcsrt.etxNot Applicable89,52508-Feb-201008:28Not Applicable
Nclcsrt.stxNot Applicable91,72408-Feb-201008:28Not Applicable
Nclcsrts.dll6.0.30609.01,462,60808-Feb-201015:32x86
Ndbcs.dll6.0.30609.01,348,94408-Feb-201015:32x86
To replace these files, follow these steps:
  1. Stop the Microsoft Dynamics NAV Server.
  2. Locate the Microsoft Dynamics NAV Server installation directory.

    The Microsoft Dynamics NAV Server is usually installed in the following directory:

    C:\Program Files\Microsoft Dynamics NAV\60\Service
  3. Copy the files that you downloaded.
  4. Paste the files that you downloaded into the Microsoft Dynamics NAV Server installation directory.
  5. Click Yes to overwrite the files in the directory.
  6. Start the Microsoft Dynamics NAV Server.

Prerequisites

You must have Microsoft Dynamics NAV 2009 Service Pack 1 installed to apply this hotfix.

Status


Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.

More Information


For more information, click the following article number to view the article in the Microsoft Knowledge Base:

824684 Description of the standard terminology that is used to describe Microsoft software updates

MICROSOFT AND/OR ITS SUPPLIERS MAKE NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY, THE RELIABILITY OR THE ACCURACY OF THE INFORMATION THAT IS CONTAINED IN THE DOCUMENTS AND THE RELATED GRAPHICS PUBLISHED ON THIS WEB SITE (THE “MATERIALS”) FOR ANY PURPOSE.

THE MATERIALS MAY INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL ERRORS AND MAY BE REVISED AT ANY TIME WITHOUT NOTICE. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, MICROSOFT AND/OR ITS SUPPLIERS DISCLAIM AND EXCLUDE ALL REPRESENTATIONS, WARRANTIES, AND CONDITIONS WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO REPRESENTATIONS, WARRANTIES, OR CONDITIONS OF TITLE, NON-INFRINGEMENT, SATISFACTORY CONDITION OR QUALITY, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, WITH RESPECT TO THE MATERIALS.