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
Check!
(thinking…)
Reset
or sign in with
  • facebook
  • google
    Password icon
    Signed in as (Sign out)

    We’ll send you updates on this idea

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

    1 comment

    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      Signed in as (Sign out)
      Submitting...
      • 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