Blog Post

Error -2068643839 / 1602 Installing msoledbsql.msi and msodbcsql.msi for SQL Server 2019 CTP 2.5

,

(last updated: 2019-05-05 @ 11:55 EST / 2019-05-05 @ 15:55 UTC )

I had gone through the process of uninstalling the now obsolete SQL Server 2019 CTP, and then installing the new CTP, for the four previous updates and did not encounter any problems. But this time, something was different. (how’s that for a click-baity tag line)

The other day, I was <sarcasm>blessed / honored / delighted</sarcasm> to waste several hours attempting to install SQL Server 2019 CTP 2.5 over and over again. Each time it would get through the first several steps of the installation process, but then encounter some condition causing it to rollback and finally end with the <sarcasm>super helpful</sarcasm> error message of:

An error occurred for a dependency of the feature causing the setup process for the feature to fail.

Use the following information to resolve the error, and then try the setup process again.

That might have been ok had there actually been any information that followed. But no, there was none, not even a small piece of unhelpful information.

TL; DR You can skip to the solution, if you don’t want the details (but seriously, who doesn’t want all of the exciting details?)

Had I done anything differently this time? The only thing I can think of is that, after uninstalling the SQL Server 2019 CTP 2.4 instance, I checked the list of installed apps and noticed that “SQL Browser”, “VSS Writer”, and “T-SQL Language Service” were still installed. I couldn’t remove “SQL Browser” or “VSS Writer” due to dependencies: SQL Server 2017 was still using them. But, I was allowed to uninstall “T-SQL Language Service”. I don’t know if this was a factor in the install failing (seems unlikely), but it was something that I had not done when uninstalling previous CTPs.

First: reduce custom install configuration

With no other information to go on, I thought that maybe it was a permissions issue with the account I specified as the service account for the “Database Engine” and “SQL Server Agent” services. I was using the “SQL Server” account that I was already using for SQL Server 2017 Developer Edition, so I figured it would work and so was not using the default service accounts. And I had found a few posts / articles mentioning possible install issues due to permissions. But using the default accounts didn’t help.

I couldn’t reduce the components / features that I was installing because I was only installing the “Database Engine Services”. The first time I attempted the install I had selected “Client Tools Connectivity”, “Client Tools SDK”, and “SQL Client Connectivity SDK”. And one of those, can’t remember which one, is always pre-checked and disabled such that it can’t be unchecked, so I only really added two of them. Those components installed successfully during the first install attempt, and for the subsequent attempts all three were pre-checked and disabled such that they couldn’t be unchecked.

I thought that perhaps my choice of default collation was too extravegent: first series of attempts were using UTF8_BIN2, second series of attempts were using Japanese_XJIS_140_CI_AS_UTF8. But then I noticed that the folder for the instance — C:Program FilesMicrosoft SQL ServerMSSQL15.SQL2019 — had not been created, so I figured that the installation process had never even gotten far enough to care about the collation.

So far there is absolutely no useful information to help determine the source of the problem!!

Second: check the “Summary” log file

C:Program FilesMicrosoft SQL Server150Setup BootstrapLogYYYYMMDD_HHMMSSSummary_{MachineName}_YYYYMMDD_HHMMSS.txt

At the top of the file:

Overall summary:
  Final result:            Failed: see details below
  Exit code (Decimal):     -2068643839

And, towards the bottom of the file:

Detailed results:      
  Feature:             Database Engine Services
  Status:              Failed
  Reason for failure:  An error occurred for a dependency of the feature causing the setup process for the feature to fail.
  Next Step:           Use the following information to resolve the error, and then try the setup process again.

There was no information that followed. The “Rules report file” showed that all rules had passed.

So far there is absolutely no useful information to help determine the source of the problem!!

Third: check the “Details” log file

C:Program FilesMicrosoft SQL Server150Setup BootstrapLogYYYYMMDD_HHMMSSDetail.txt

This was the first place where I actually found something useful. The following block of entries was towards the end of the file (line 23,527 out of 25,392):

(each of the following lines was prefixed with (01) 2019-04-29 20:57:28 Slp:, but I removed that prefix so the output would be more readable)

----------------------------------------------------------------------
Running Action: Install_msoledbsql_Cpu64_Action
SetFeaturePropsModifyInstallAction for msoledbsql_Cpu64 
Sco: Attempting to create base registry key HKEY_LOCAL_MACHINE, machine 
Sco: Attempting to open registry subkey 
Sco: Attempting to open registry subkey SOFTWAREMicrosoftVisualStudio14.0
Sco: Attempting to get registry value InstallDir
Checkpoint: PREINSTALL_MSOLEDBSQL_CPU64_ACTION
Sco: Waiting for service 'msiserver' to accept the stop request.
Sco: Attempting to open SC Manager
Sco: Attempting to open service handle for service msiserver
Invoking QueryServiceStatus Win32 API
Sco: Attempting to close service handle for service msiserver
Sco: Attempting to close SC Manager
Target package: "F:1033_ENU_LPx64setupx64msoledbsql.msi"
InstallPackage: MsiInstallProduct returned the result code 1602.
No retry-able MSI return code detected.
ExecuteActionWithRetryHelper.Failed actionToExecute is 'Install_msoledbsql_Cpu64_Action', stack trace    at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.c__DisplayClass2_0.b__0()
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionHelper(ActionWorker workerDelegate)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionWithRetryHelper(WorkflowObject metaDb, ActionKey action, ActionMetadata actionMetadata, TextWriter statusStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.InvokeAction(WorkflowObject metabase, TextWriter statusStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.PendingActions.InvokeActions(WorkflowObject metaDb, TextWriter loggingStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionEngine.RunActionQueue()
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.c__DisplayClass2_0.b__0()
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionHelper(ActionWorker workerDelegate)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionWithRetryHelper(WorkflowObject metaDb, ActionKey action, ActionMetadata actionMetadata, TextWriter statusStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.InvokeAction(WorkflowObject metabase, TextWriter statusStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.PendingActions.InvokeActions(WorkflowObject metaDb, TextWriter loggingStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionEngine.RunActionQueue()
   at Microsoft.SqlServer.Setup.Chainer.Workflow.Workflow.RunWorkflow(WorkflowObject workflowObject, HandleInternalException exceptionHandler)
   at Microsoft.SqlServer.Chainer.Infrastructure.Action.Execute(String actionId, TextWriter errorStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.c__DisplayClass2_0.b__0()
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionHelper(ActionWorker workerDelegate)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionWithRetryHelper(WorkflowObject metaDb, ActionKey action, ActionMetadata actionMetadata, TextWriter statusStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.InvokeAction(WorkflowObject metabase, TextWriter statusStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.PendingActions.InvokeActions(WorkflowObject metaDb, TextWriter loggingStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionEngine.RunActionQueue()
   at Microsoft.SqlServer.Setup.Chainer.Workflow.Workflow.RunWorkflow(WorkflowObject workflowObject, HandleInternalException exceptionHandler)
   at Microsoft.SqlServer.Chainer.Infrastructure.Action.Execute(String actionId, TextWriter errorStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.c__DisplayClass2_0.b__0()
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionHelper(ActionWorker workerDelegate)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionWithRetryHelper(WorkflowObject metaDb, ActionKey action, ActionMetadata actionMetadata, TextWriter statusStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.InvokeAction(WorkflowObject metabase, TextWriter statusStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.PendingActions.InvokeActions(WorkflowObject metaDb, TextWriter loggingStream)
   at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionEngine.RunActionQueue()
   at Microsoft.SqlServer.Setup.Chainer.Workflow.Workflow.RunWorkflow(WorkflowObject workflowObject, HandleInternalException exceptionHandler)
   at Microsoft.SqlServer.Chainer.Setup.Setup.RunRequestedWorkflow()
   at Microsoft.SqlServer.Chainer.Setup.Setup.Run(String[] args)
   at Microsoft.SqlServer.Chainer.Setup.Setup.Start(String[] args)
   at Microsoft.SqlServer.Chainer.Setup.Setup.Main()
Error: Action "Install_msoledbsql_Cpu64_Action" failed during execution.
Completed Action: Install_msoledbsql_Cpu64_Action, returned False

Ok, so there’s some problem with installing msoledbsql.msi. Unfortunately, error code “1602” means “User cancelled installation” according to the documentation for “MsiExec.exe and InstMsi.exe Error Messages” (just search for “1602”). And no, I did not cancel the install. There wasn’t even a dialog window asking if I wanted to cancel.

Searching the interwebs for “msoledbsql.msi” and “1602” did not find anything useful.

However, even though there is no specific error message here, I now have a clue, some direction to go in, at least.

Fourth: run “msoledbsql.msi” manually

Since there was no error message in the log file from this .msi, I figured that I could run it manually and if there was an error, I would be more likely to see it this way (as opposed to the installer process that might be swallowing / discarding the error).

So, I ran: F:1033_ENU_LPx64setupx64msoledbsql.msi (I had mounted the install ISO image on F: )

and I got a pop-up asking if I wanted to: “Modify”, “Repair”, or “Remove” the feature. I chose “Repair” and clicked the “Next >” button. It proceeeded and completed without error. I tried to install SQL Server again but no luck.

Fifth: run “msoledbsql.msi” manually (again)

So, I ran: F:1033_ENU_LPx64setupx64msoledbsql.msi again.

This time I chose “Modify” and clicked the “Next >” button. The top option, “Client Components”, was already installed. But the bottom option, “OLE DB Driver for SQL Server SDK”, was not installed (option drop-down had the red “X” on it). I selected “Will be installed on local hard drive” and clicked the “Next >” button. It copied some files (I think), but then strangely popped-up another modal dialog window with the message “Please insert the disk”, and I could either “Continue” (or maybe it was “Retry”) or “Exit”. I have no disk; I am installing from an ISO file. I have no idea what it was asking for or why, clicking “Continue” did not make the dialog go away, so I clicked the “Exit” button. Strange days indeed (most peculiar, Mama) 1

Sixth: check component-specific log file

At this point I noticed that there were log files for both msoledbsql and msodbcsql. I opened the following file:

C:Program FilesMicrosoft SQL Server150Setup BootstrapLogYYYYMMDD_HHMMSSmsoledbsql_Cpu64_1.log

and found the following entries that seemed relevant:

******* Product: F:1033_ENU_LPx64setupx64msoledbsql.msi
Client-side and UI is none or basic: Running entire install on the server.
Running installation inside multi-package transaction F:1033_ENU_LPx64setupx64msoledbsql.msi
Original package ==> F:1033_ENU_LPx64setupx64msoledbsql.msi
Package we're running from ==> C:WINDOWSInstaller26fed74a.msi
...
Action start 13:55:08: InstallFinalize.
(all following lines prefixed with "MSI (s) (C4:3C) [13:55:08:775]: ")
Executing op: ProductInfo(ProductKey={EE6D1BC2-277F-4841-8FC9-DE132F856BB8},ProductName=Microsoft OLE DB Driver for SQL Server,PackageName=msoledbsql.msi,Language=1033,Version=302120961,Assignment=1,ObsoleteArg=0,ProductIcon=ARPIco,,PackageCode={DC3E55C2-2EBF-44C7-9AA0-20F606EE52D9},,,InstanceType=0,LUASetting=0,RemoteURTInstalls=0,ProductDeploymentFlags=3)
...
Executing op: ActionStart(Name=InstallFiles,Description=Copying new files,Template=File: [1],  Directory: [9],  Size: [6])
Executing op: ProgressTotal(Total=261192,Type=0,ByteEquivalent=1)
Executing op: SetTargetFolder(Folder=C:Program Files (x86)Microsoft SQL ServerClient SDKOLEDB182SDKInclude)
Executing op: SetSourceFolder(Folder=1PFiles32SqlServrnpeqpcjkOLEDB182SDKInclude|Program Files (x86)Microsoft SQL ServerClient SDKOLEDB182SDKInclude)
Executing op: ChangeMedia(MediaVolumeLabel=MSOLEDBSQL,MediaPrompt=Please insert the disk: ,MediaCabinet=Redist.cab,BytesPerTick=65536,CopierType=2,ModuleFileName=1msoledbsql.msi,,,,,IsFirstPhysicalMedia=1)
Executing op: FileCopy(SourceName=ajgw2rxy.h|msoledbsql.h,SourceCabKey=DP_msoledbsql_h_32,DestName=msoledbsql.h,Attributes=0,FileSize=127016,PerTick=65536,,VerifyMedia=1,,,,,CheckCRC=0,,,InstallMode=58982400,HashOptions=0,HashPart1=-166821620,HashPart2=2086766155,HashPart3=-481314369,HashPart4=1222801502,,)
File: C:Program Files (x86)Microsoft SQL ServerClient SDKOLEDB182SDKIncludemsoledbsql.h;To be installed;Won't patch;No existing file
Source for file 'DP_msoledbsql_h_32' is compressed
Note: 1: 2203 2: F:msoledbsql.msi 3: -2147287038 
Source is incorrect. Unable to open or validate MSI package F:msoledbsql.msi.
Note: 1: 2203 2: F:msoledbsql.msi 3: -2147287038 
Source is incorrect. Unable to open or validate MSI package F:msoledbsql.msi.
Please insert the disk: 
Note: 1: 2265 2:  3: -2147287035 
...
Note: 1: 1729 
Product: Microsoft OLE DB Driver for SQL Server -- Configuration failed.
Windows Installer reconfigured the product. Product Name: Microsoft OLE DB Driver for SQL Server. Product Version: 18.2.1.0. Product Language: 1033. Manufacturer: Microsoft Corporation. Reconfiguration success or error status: 1602.
Deferring clean up of packages/files, if any exist
MainEngineThread is returning 1602

There were several places that noted the source package, F:1033_ENU_LPx64setupx64msoledbsql.msi, which was correct. But, towards the end of the entries shown above, it shows “Source is incorrect. Unable to open or validate MSI package F:msoledbsql.msi. Please insert the disk:“. Here we have not one, but two bits of useful info:

  1. an incorrect source location: F:msoledbsql.msi (most likely the problem)
  2. the message that I saw in the modal dialog when I ran the installer manually: “Please insert the disk” (if the background process installing this package received the same prompt that I saw in the modal dialog, then it looks like it tried to “Continue” twice and then gave up, which could explain the result code of 1602, meaning “User Cancelled”, as that was the only other option if “Continue” didn’t work).

Awesome. Now we’re cooking with gas! 2

Comparing the details from the current log file with the log file from the CTP 2.2 install (one of the few times it reinstalled the OLEDB package), I noticed that the log file for the CTP 2.2 install was longer. The extra lines were from uninstall steps, where the installed version of msoledb sql was being uninstalled before the new version was installed. That makes perfect sense. What does not make sense is why the CTP 2.5 log file was not showing any uninstall steps. MsOleDb was still installed as I found the DLL in C:WindowsSystem32. I’m not sure why it was not being uninstalled, but rather than argue about it, I figured I would just uninstall it myself.

Seventh: uninstall ODBC, install OLEDB manually

I went to “Add or Remove Programs” (“Apps & features” under “Settings” in Windows 10), searched for “odbc” (while I’ve been focusing on OLEDB, the exact same problem was happening with ODBC), and found “Microsoft ODBC Driver 17 for SQL Server”. I uninstalled it.

I then searched for “oledb”, and nothing came up. Hmm.

Idea:

  1. I know where the installer .msi file is,
  2. I know that, for some strange reason, the process looks in the root directory of the drive that the .msi file is on (how else would it know of F: ?)
  3. I know that I cannot copy F:1033_ENU_LPx64setupx64msoledbsql.msi to F: since the F: drive is a virtual drive based on the contents of the .iso file (hence: read-only).
  4. HOWEVER, I also know that I can copy the .msi file to the C: directory, which is the root directory of a writable drive.

So, I copied the .msi file, ran it, selected that the SDK option should run from the local hard drive, and this time it succeeded!

Eighth: try installing SQL Server 2019 CTP 2.5 (for the 10th time!)

This time it worked! It finally worked!!! Woo hoo! Hours and hours of my life gone, but it’s working now. And I’m posting this so that hopefully others don’t waste so much time trying to figure this out.

And, as luck would have it, looking back at the “Add or Remove Programs” / “Apps & features” list to get the specific name for ODBC for this post, I typed in “ole” and guess what showed up: “Microsoft OLE DB Driver for SQL Server”. And no, this is not new since I got it installed successfully. This had been there the whole time given that the install date is prior to when I was installing CTP 2.5. The issue was simply that I had typed “oledb” too quickly and the list didn’t apply the filter until I had typed the whole thing. Serves me right for not using the hunt-and-peck method of typing ;-).

STEPS TO FIX

Try this first

  1. Go to “Add or remove programs” (“Apps & features” in Windows 10). You can get there in any of the following ways:
    1. Open Control Panel
      1. Go to “Uninstall a program” (under “Programs”, but you should be able to click on it directly from the main Control Panel screen)
    2. In Windows 10, go to the “Start” menu (hit the “Windows” key), then type in “apps” and it should be the first option
    3. In Windows 10, go to “Settings” by hitting the “Windows” key + “i”, then go to “apps”
  2. Search for “odbc”
    1. Find the search box:
      1. In “Control PanelProgramsPrograms and Features”, it’s in the upper right-hand corner (and says “Search Programs and Features”)
      2. In “Apps & features”, it’s just above the program list on the right side (and says “Search this list”)
    2. Type in “odbc”. If you have multiple versions of SQL Server installed, you might have multiple versions of ODBC installed. I have versions 13 and 17 installed.
    3. Uninstall only “Microsoft ODBC Driver 17 for SQL Server”
      1. In “Control PanelProgramsPrograms and Features”, right-click on “Microsoft ODBC Driver 17 for SQL Server” and select “Uninstall”
      2. In “Apps & features”, select (i.e. left-click) “Microsoft ODBC Driver 17 for SQL Server” and click the “Uninstall” button
  3. Search for “ole”
    1. Find the search box
    2. Type in “ole”. Most likely there is only one entry in the list.
    3. Uninstall “Microsoft OLE DB Driver for SQL Server”
  4. Install SQL Server 2019 CTP 2.5

Try this if uninstalling “ODBC” and “OLE DB” drivers did not work (or were not installed)

  1. Copy F:1033_ENU_LPx64setupx64msodbcsql.msi and F:1033_ENU_LPx64setupx64msoledbsql.msi (I had mounted the install ISO image on F: ) to C:
  2. Run C:msodbcsql.msi
  3. Select “Modify” (default option) and then click the “Next >” button
  4. Change the selected option for “ODBC Driver for SQL Server SDK” to be “Will be installed on local hard drive”
  5. Click the “Next >” button
  6. Click the “Install” button
  7. Repeat steps 2 – 6 for C:msoledbsql.msi
  8. Install SQL Server 2019 CTP 2.5
  9. Delete C:msodbcsql.msi and C:msoledbsql.msi

  1. Lyric from “Nobody Told Me” by John Lennon. I don’t really like the song, but I was thinking “strange indeed” and the lyric just popped into my head. ?
  2. An idiom meaning “Do very well, make rapid progress”. Please see cook with gas (meaning) and Origin of the phrase “Now we’re cooking with _” on English.StackExchange (etymology). ?

Original post (opens in new tab)
View comments in original post (opens in new tab)

Rate

5 (2)

You rated this post out of 5. Change rating

Share

Share

Rate

5 (2)

You rated this post out of 5. Change rating