Search code examples
sql-serverubuntu-16.04

Configuring MSSQL Server on ubuntu - Cannot open or read the persistent registry: \SystemRoot\security.hiv


I'm using the following guide to install MSSQL server on my ubuntu 16.04 machine https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-2017

when I'm running:

sudo /opt/mssql/bin/mssql-conf setup

no matter what kind of SQL Server edition I choose, I'm getting the following error:

    Confirm the SQL Server system administrator password: 
Configuring SQL Server...

This program has encountered a fatal error and cannot continue running at Mon Apr  1 16:06:07 2019
The following diagnostic information is available:

       Reason: 0x00000007
      Message: Cannot open or read the persistent registry: \SystemRoot\security.hiv.
      Process: 19600 - sqlservr
       Thread: 19604 (application thread 0x4)
  Instance Id: 7ebfcf27-db60-460d-afd3-6d852b70069e
     Crash Id: d99ba388-d323-43f3-b758-e116f42bb2e8
  Build stamp: 70437f6583b8ef39b1ef70539ef84690980315dc7a4436c9c40015f28610e4aa
 Distribution: Ubuntu 16.04.6 LTS
   Processors: 8
 Total Memory: 16673366016 bytes
    Timestamp: Mon Apr  1 16:06:07 2019

Ubuntu 16.04.6 LTS
Capturing core dump and information to /var/opt/mssql/log...
Hint: You are currently not seeing messages from other users and the system.
      Users in the 'systemd-journal' group can see all messages. Pass -q to
      turn off this notice.
No journal files were opened due to insufficient permissions.
Hint: You are currently not seeing messages from other users and the system.
      Users in the 'systemd-journal' group can see all messages. Pass -q to
      turn off this notice.
No journal files were opened due to insufficient permissions.
/usr/bin/tail: cannot open '/var/log/syslog' for reading: Permission denied
Attempting to capture a dump with paldumper
Captured a dump with paldumper
Core dump and information are being compressed in the background. When
complete, they can be found in the following location:
  /var/opt/mssql/log/core.sqlservr.04_01_2019_16_06_07.19600.tbz2
Initial setup of Microsoft SQL Server failed. Please consult the ERRORLOG
in /var/opt/mssql/log for more information.

also I found this post, which look like this guy had a similar problem, but sadly no solution

does any one knows how to solve my problem?

Thank you

Edit: after implementing the answer I got another error:

Confirm the SQL Server system administrator password: 
Configuring SQL Server...

Initial setup of Microsoft SQL Server failed. Please consult the ERRORLOG in /var/opt/mssql/log for more information

To make some clean in the mess that I had in the log folder I decided to delete it completely using

sudo rm -rf /var/opt/mssql/log

and re-run the setup, Apparently that solved my last problem and finally: Setup has completed successfully. SQL Server is now starting.


Solution

  • You'll find further information in

    /var/opt/mssql/log
    

    Mine said:

    {
        "reason": "0x00000007",
        "processName": "sqlservr",
        "pid": "5773",
        "instanceId": "d7df749c-50e6-4f3b-b894-2aa7c743f33d",
        "crashId": "281e772a-5946-4349-aa9e-671cd0a3772c",
        "threadId": "5777",
        "libosThreadId": "0x4",
        "buildStamp": "70437f6583b8ef39b1ef70539ef84690980315dc7a4436c9c40015f28610e4aa",
        "message": "Cannot open or read the persistent registry: \\SystemRoot\\lsa.hiv.",
        "last_errno": "13",
        "last_errno_text": "Permission denied",
        "distribution": "Ubuntu 16.04.6 LTS",
        "processors": "4",
        "total_memory": "16732037120",
        "timestamp": "Fri Apr 12 22:02:44 2019"
    }
    

    So I ran locate to see where "systemroot" is located:

    locate security.hiv
    /var/opt/mssql/.system/system/security.hiv

    I didn't know which permissions should be applied, so I just gave read&write to "others".

    then the same with

    lsa.hiv
    licensing.hiv
    

    re-run

    sudo /opt/mssql/bin/mssql-conf setup
    

    and then, sql-server starts, plus the permissions for others are gone again.

    By the way, you can run sql-server without service, then it works even if the service fails:

    /opt/mssql/bin/sqlservr