Do you have a comment or suggestion to improve SQL Server? We’d love to hear it!

UTF-8 in SQL 2019: Install fails with "Could not find the Database Engine startup handle." if a Unicode-only Collation is selected

In SQL Server 2019 CTP 2.1 it became possible to select a UTF-8 Collation to be the Instance-level Collation. While the Installer UI does a good job of preventing one from selecting an invalid combination of Collation properties, it does allow one to select a Unicode-only Collation (i.e. a Collation that does not have a non-Unicode 8-bit Code Page, hence it reports that the Code Page for such a Collation is "0"). When selecting a Unicode-only Collation, the UI does properly indicate that both the "Supplementary characters" and "UTF-8" options are assumed to be selected (see attached image). These two assumptions are reasonable because: a) UTF-8 is required such that data can be stored in CHAR / VARCHAR columns since, and b) Supplementary Character-support is required for UTF-8 Collations.

HOWEVER, even though "Maltese_100_CI_AS_SC_UTF8" is a valid UTF-8 Collation, it is NOT valid to use it as the Instance-level Collation. Attempting to do so will result in the final step of the installation process hanging for a while, and then ultimately failing with the following (extremely UNhelpful) error message:

TITLE: Microsoft SQL Server 2019 Community Technology Preview 2.1 Setup
------------------------------

The following error has occurred:

Could not find the Database Engine startup handle.

For help, click: https://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft%20SQL%20Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=15.0.1100.94&EvtType=0xD15B4EB2%25400x4BDAF9BA%25401306%254025

------------------------------
BUTTONS:

OK
------------------------------

The end result is that the install will finish, successfully installing client connectivity, etc, but failing to install the Database Engine. The install will not be rolled-back; you will need to remove the Instance via "Add / Remove programs" / "Apps".

The several lines of the "C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\Log\{date_time}\Detail.txt" file, just prior (and including) the error, are:

-----------------------------------------------------------------------
(01) 2018-11-26 16:44:14 SQLEngine: : Checking Engine checkpoint 'GetSqlServerProcessHandle'
(01) 2018-11-26 16:44:14 SQLEngine: --SqlServerServiceSCM: Waiting for nt event 'Global\sqlserverRecComplete$SQL2019' to be created
(01) 2018-11-26 16:47:16 SQLEngine: --SqlServerServiceSCM: Wait for creation of event handle 'Global\sqlserverRecComplete$SQL2019' has timed out
(01) 2018-11-26 16:47:16 SQLEngine: Copying 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\Log\ERRORLOG' to 'C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\Log\20181126_163849\SQLServer_ERRORLOG_2018-11-26T16.47.16.txt' ...
(01) 2018-11-26 16:47:16 Slp: Sco: File 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\Log\ERRORLOG' does not exist
(01) 2018-11-26 16:47:16 SQLEngine: Could not copy non-existant SQL Server Error Log: C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\Log\ERRORLOG
(01) 2018-11-26 16:47:16 Slp: Sco: Attempting to get files for directory C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\Log, search pattern SQLDump*.mdmp
(01) 2018-11-26 16:47:16 SQLEngine: Copy '0' mdmp files from 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\Log' to 'C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\Log\20181126_163849' ...
(01) 2018-11-26 16:47:16 Slp: Sco: Attempting to get files for directory C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\Log, search pattern *.xel
(01) 2018-11-26 16:47:16 SQLEngine: Copy '0' xel files from 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\Log' to 'C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\Log\20181126_163849' ...
(01) 2018-11-26 16:47:16 SQLEngine: --SqlServerServiceSCM: Exception happens at start SQL Engine attempt 1. Exception: Could not find the Database Engine startup handle.
-----------------------------------------------------------------------

The contents of the "C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\Log\{date_time}\ALBRIGHT_20181126_163849_Watson.txt" file are:
-----------------------------------------------------------------------
Watson bucket data:
Bucket param 1: SQL Server 2019 CTP2.1@CTP@
Bucket param 2: 0xD15B4EB2
Bucket param 3: 0xD15B4EB2
Bucket param 4: 0x4BDAF9BA@1306@25
Bucket param 5: 0x4BDAF9BA@1306@25
Bucket param 6: SqlEngineDBStartConfigAction_install_configrc
Bucket param 7: 0x9C5770A6
Bucket param 8:
Bucket param 9:
Bucket param 10:
-----------------------------------------------------------------------

Please note that while I was able to successfully change the Instance Collation to "Hebrew_100_CS_AS_SC_UTF8" using the 'sqlservr.exe -q "{new_collation_name}' method (for details, please see: https://sqlquantumleap.com/2018/06/11/changing-the-collation-of-the-instance-and-all-columns-across-all-user-databases-what-could-possibly-go-wrong/ ), I received the following error when attempting to change the Collation to "Maltese_100_CI_AS_SC_UTF8":

An invalid startup option 'qMaltese_100_CI_AS_SC_UTF8' was supplied, either from the registry or the command prompt. Correct or remove the option.
SQL Server shutdown has been initiated

P.S. Please see "Native UTF-8 Support in SQL Server 2019: Savior or False Prophet?" ( https://sqlquantumleap.com/2018/09/28/native-utf-8-support-in-sql-server-2019-savior-false-prophet-or-both/ ) for a detailed analysis of the new UTF-8 feature.

1 vote
Sign in
(thinking…)
Sign in with: Microsoft
Signed in as (Sign out)

We’ll send you updates on this idea

Solomon Rutzky shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

4 comments

Sign in
(thinking…)
Sign in with: Microsoft
Signed in as (Sign out)
Submitting...
  • Solomon Rutzky commented  ·   ·  Flag as inappropriate

    This appears to be fixed in CTP 2.5 as far as I can tell. I was able to successfully install a new instance using "Maltese_100_CI_AS_SC_UTF8".

  • Solomon Rutzky commented  ·   ·  Flag as inappropriate

    This is still a problem in CTP 2.3, though not as much of a problem. The installer still fails, but the installation itself completes, leaving the instance running but in single user mode. If the instance is stopped and started again, you can actually log in, and the instance-level collation is reported as being Maltese_100_CI_AI_SC_UTF8. So at least 95% of the way fixed.

    The new installation error is:

    ------------------------------------------------------------------------
    Action required:
    Use the following information to resolve the error, uninstall this feature, and then run the setup process again.

    Feature failure reason:
    An error occurred during the setup process of the feature.

    Error details:
    § Error installing SQL Server Database Engine Services Instance Features
    Usage: EXECUTE xp_sqlagent_notify <operation type>, <job id>, <schedule id>, <alert id>, <action type> [, <login name>] [, <error flag>]Usage: EXECUTE xp_sqlagent_notify <operation type>, <job id>, <schedule id>, <alert id>, <action type> [, <login name>] [, <error flag>]
    Error code: 0x80131904
    Visithttps://go.microsoft.com/fwlink?LinkId=20476&ProdName=Microsoft+SQL+Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=15.0.1300.359&EvtType=0x7590AFD6%400x9A41B222&EvtType=0x7590AFD6%400x9A41B222 to get help on troubleshooting.
    ------------------------------------------------------------------------

  • Solomon Rutzky commented  ·   ·  Flag as inappropriate

    This is still an issue in CTP 2.2. Well, the installer still lets you select a Unicode-only UTF-8 Collation. And, attempting to change the instance's Collation to "Maltese_100_CI_AS_SC_UTF8" using the "'sqlservr.exe -q" method still reports the same error.

Feedback and Knowledge Base