SAPInst May Run Slowly on Windows 2012 or Windows 2012 R2
Almost all SAP products are now supported on Windows 2012 and SAP are in the process of certifying Windows 2012 R2. Windows 2012 introduced a new feature called SMB 3.0. Windows 2012 R2 introduces SMB 3.02 with support for running SQL Server over SMB. SMB 3.0 features may cause SAPInst to run slowly. There is a SAP Note and a Microsoft KB article that describes the issue and how to resolve it.
1. How to Resolve the Issue?
Before running SAPInst on Windows 2012 or Windows 2012 R2 read SAP Note 1823833 - Accessing shares via SMB3.0 can result in long waiting times and Microsoft “Delayed error message when you try to access a shared folder that no longer exists in Windows Server 2012”.
2. What is SMB 3.0 and Why Can This Cause SAPInst to Become Slow?
Server Message Block (SMB) was a protocol first developed by IBM and has been greatly enhanced by Microsoft. SMB 3.0 protocol released with Windows 2012 is a major enhancement over previous SMB implementations. One of the major enhancements in SMB 3.0 is Transparent Failover and node fault tolerance. Transparent failover allows SMB 3.0 sessions to preserve file handles and other attributes even when a SMB share fails over from one host to another. SMB 3.0 uses retry and reroute logic to allow a SMB 3.0 client to reconnect to a SMB 3.0 share. This can lead to up to 30-60 seconds per retry. SAPInst does many calls to the \<local hostname>SAPMNT or SAPLOC during installation in order to test if an SAP application instance is installed.
3. Exact Details of the Change?
The change required is a simple registry change.
1. Swipe in from the right edge of the screen, and then tap Search. Or, if you are using a mouse, point to the lower-right corner of the screen, and then click Search.
2. In the search box, type regedit, and then tap or click regedit. lapse this imageExpand this
If you are prompted to enter an administrator password, type the password. If you are prompted to provide confirmation, provide confirmation.
3. Locate and then tap or click the following registry subkey:
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanWorkStationParameters
4. On the Edit menu, point to New, and then tap or click DWORD Value.
5. Type DisableCARetryOnInitialConnect.
6. Press and hold or right-click DisableCARetryOnInitialConnect, and then tap or click Modify.
7. In the Value data box, type 0, and then tap or click OK.
Exit Registry Editor.
4. Can the Registry Change Be Automated?
Yes, it is possible to make the change into a .REG file and merge this with the registry on each server.
1. Open Notepad
2. Paste in the following text
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanWorkstationParameters]
"DisableCARetryOnInitialConnect"=dword:00000000
3. Save file as “KB 2820470 Reg Change.REG”
4. Copy “KB 2820470 Reg Change.REG” to each server
5. Right click on file and select “Merge”
Another option is to use PowerShell commands
1. Open Powershell
2. Paste the following command
New-ItemProperty -Path HKLM:SYSTEMCurrentControlSetServicesLanmanWorkstationParameters -Name DisableCARetryOnInitialConnect -PropertyType dword -value "0"
Another option is to use a Group Policy as explained in this blog.
Important Notes, Blogs, Whitepapers and Links
https://blogs.technet.com/b/josebda/
https://blogs.technet.com/b/windowsserver/archive/2012/04/19/smb-2-2-is-now-smb-3-0.aspx
https://blog.nigelpoulton.com/smb-3-0-best-feature-of-windows-server-2012/
https://technet.microsoft.com/en-us/library/dd315394.aspx
Links and content in this blog are used under Fair Use guidelines
Comments
Anonymous
December 05, 2013
The SAP note indicates that this may be a problem on systems with failover clustering. Does this also apply to 2012 systems without failover clustering?Anonymous
July 09, 2015
The DWORD should be "1" otherwise SAPInst still fails .reg file:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanWorkstationParameters] "DisableCARetryOnInitialConnect"=dword:00000001
PowerShell:
New-ItemProperty -Path HKLM:SYSTEMCurrentControlSetServicesLanmanWorkstationParameters -Name DisableCARetryOnInitialConnect -PropertyType dword -value "0"
See support.microsoft.com/.../2820470 as well N.B. Windows 2012 R2: There is no automated fix for Windows 2012 R2. So Regedit, .reg file or PS command is the only way to go for now on 2012 R2.