Initial impressions of SQL Server v.Next Public Preview

Microsoft announced its SQL Server on Linux public preview yesterday. I’m really excited to check it out. Here are some interesting things I found during my testing. I’ll write more as I play with it further.

  • If you want to play it on Ubuntu, it needs to be 16.04 or above. I didn’t pay attention to that initially, and started installing on Ubuntu 14. Below is a typical message you would get:

    [code language=”text”]
    The following packages have unmet dependencies:
    mssql-server : Depends: openssl (>= 1.0.2) but 1.0.1f-1ubuntu2.21 is to be installed
    E: Unable to correct problems, you have held broken packages.
    [/code]

    Running sudo apt-get dist-upgrade brought my Ubuntu to 16.04. The install was smooth afterwards.

  • Instruction for Red Hat Enterprise Linux also works for Fedora. I tested it on Fedora 23. I think it should also work on CentOS, although I didn’t test it myself.
  • The machine needs to have at least 3.25 GB of memory. On Ubuntu, install won’t continue if that condition is not satisfied:
    [code language=”text”]
    Preparing to unpack …/mssql-server_14.0.1.246-6_amd64.deb …
    ERROR: This machine must have at least 3.25 gigabytes of memory to install Microsoft(R) SQL Server(R).
    dpkg: error processing archive /var/cache/apt/archives/mssql-server_14.0.1.246-6_amd64.deb (–unpack):
    subprocess new pre-installation script returned error exit status 1
    Processing triggers for libc-bin (2.21-0ubuntu4.3) …
    Errors were encountered while processing:
    /var/cache/apt/archives/mssql-server_14.0.1.246-6_amd64.deb
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    [/code]
    On Fedora, installation finishes, but you won’t be able to start the service:
    [code language=”text”]
    [hji@localhost ~]$ sudo /opt/mssql/bin/sqlservr-setup
    Microsoft(R) SQL Server(R) Setup

    You can abort setup at anytime by pressing Ctrl-C. Start this program
    with the –help option for information about running it in unattended
    mode.

    The license terms for this product can be downloaded from
    http://go.microsoft.com/fwlink/?LinkId=746388 and found
    in /usr/share/doc/mssql-server/LICENSE.TXT.

    Do you accept the license terms? If so, please type “YES”: YES

    Please enter a password for the system administrator (SA) account:
    Please confirm the password for the system administrator (SA) account:

    Setting system administrator (SA) account password…
    sqlservr: This program requires a machine with at least 3250 megabytes of memory.
    Microsoft(R) SQL Server(R) setup failed with error code 1.
    Please check the setup log in /var/opt/mssql/log/setup-20161117-122619.log
    for more information.
    [/code]

  • Some simple testing 🙂 From the output below, we learn that: 1)in sys.sysfiles, full file name is presented like “C:\var\opt\mssql\data\TestDb.mdf”; 2) Database name, at least inside sqlcmd, is not case-sensitive. By the way, login is also case-insensitive: SA is sA.
    [code language=”text”]
    1> create database TestDb;
    2> go

    Network packet size (bytes): 4096
    1 xact[s]:
    Clock Time (ms.): total 447 avg 447.0 (2.2 xacts per sec.)
    1> use testdb;
    2> go
    Changed database context to ‘TestDb’.

    Network packet size (bytes): 4096
    1 xact[s]:
    Clock Time (ms.): total 3 avg 3.0 (333.3 xacts per sec.)
    1> select filename from sys.sysfiles
    2> go
    filename
    ——————————————————————————————————————————————————————————————————————————————————————–
    C:\var\opt\mssql\data\TestDb.mdf
    C:\var\opt\mssql\data\TestDb_log.ldf
    [/code]

  • I then did a quick testing of advanced feature, like Clustered Columnstore Index (CCI). Yes, it’s available in SQL Server for Linux!
    [code language=”text”]
    1> create table Person (PersonID int, LastName nvarchar(255), FirstName nvarchar(255))
    2> go

    Network packet size (bytes): 4096
    1 xact[s]:
    Clock Time (ms.): total 28 avg 28.0 (35.7 xacts per sec.)
    1> create clustered columnstore index Person_CCI on Person;
    2> go

    Network packet size (bytes): 4096
    1 xact[s]:
    Clock Time (ms.): total 25 avg 25.0 (40.0 xacts per sec.)
    1>

    Network packet size (bytes): 4096
    1 xact[s]:
    Clock Time (ms.): total 1 avg 1.0 (1000.0 xacts per sec.)

    [/code]

Overall, it looks pretty nice! I’ve got to say, I’m really impressed with Microsoft’s embrace of Linux. By the way, if you use Windows 10, I recommend Bash on Ubuntu on Windows. It’s in beta, but it works for me pretty well so far.

Stay tuned for more. I’ll definitely write more as I play with this new toy!

2 thoughts on “Initial impressions of SQL Server v.Next Public Preview”

  1. Hello this is a very useful post however I got the same error since I am using ubuntu 14.04 LTS, 64-bit, I performed the command: sudo apt-get dist-upgrade, but getting the same result after try again, could you please help me to overcome this situation,

  2. Adolf,

    I suggest you get a VM with the 16.04 and test it there.

    Cheers!

Leave a Reply

Your email address will not be published. Required fields are marked *