Quickstart: Install SQL Server and create a database on SUSE Linux Enterprise Server

Applies to: SQL Server - Linux

In this quickstart, you install SQL Server 2017 (14.x) on SUSE Linux Enterprise Server (SLES) v12. Then you can connect with sqlcmd to create your first database and run queries.

For more information on supported platforms, see Release notes for SQL Server 2017 on Linux.

In this quickstart, you install SQL Server 2019 (15.x) on SUSE Linux Enterprise Server (SLES) v15 (SP3). Then you can connect with sqlcmd to create your first database and run queries.

For more information on supported platforms, see Release notes for SQL Server 2019 on Linux.

In this quickstart, you install SQL Server 2022 (16.x) on SUSE Linux Enterprise Server (SLES) v15 (SP3). Then you can connect with sqlcmd to create your first database and run queries.

For more information on supported platforms, see Release notes for SQL Server 2022 on Linux.

Tip

This tutorial requires user input and an internet connection. If you're interested in the unattended or offline installation procedures, see Installation guidance for SQL Server on Linux.

Prerequisites

You must have a SLES v12 SP5 machine with at least 2 GB of memory. The file system must be XFS or EXT4. Other file systems, such as BTRFS, are unsupported.

You must have a SLES v15 (SP1 - SP4) machine with at least 2 GB of memory. The file system must be XFS or EXT4. Other file systems, such as BTRFS, are unsupported.

You must have a SLES v15 (SP1 - SP4) machine with at least 2 GB of memory. The file system must be XFS or EXT4. Other file systems, such as BTRFS, are unsupported.

To install SUSE Linux Enterprise Server on your own machine, go to https://www.suse.com/products/server. You can also create SLES virtual machines in Azure. See Create and Manage Linux VMs with the Azure CLI, and use --image SLES in the call to az vm create.

If you've previously installed a community technology preview (CTP) or release candidate (RC) of SQL Server, you must first remove the old repository before following these steps. For more information, see Configure repositories for installing and upgrading SQL Server on Linux.

Note

At this time, the Windows Subsystem for Linux for Windows 10 or Windows 11 isn't supported as an installation target.

For other system requirements, see System requirements for SQL Server on Linux.

Install SQL Server

To configure SQL Server on SLES, run the following commands in a terminal to install the mssql-server package:

  1. Download the SQL Server 2017 (14.x) SLES repository configuration file:

    sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/12/mssql-server-2017.repo
    

    Tip

    If you want to install a different version of SQL Server, see the SQL Server 2019 (15.x) or SQL Server 2022 (16.x) version of this article.

  2. Refresh your repositories.

    sudo zypper --gpg-auto-import-keys refresh
    

    To ensure that the Microsoft package signing key is installed on your system, you can import it using the command below:

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    
  3. Before you install SQL Server, and after you have registered and activated your SUSE Linux Enterprise Server with SUSE Customer Center, you must activate both the Desktop Applications module and Development Tools module. These modules are required for some of the SQL Server package dependencies.

  4. Now, you're ready to install SQL Server. Run the following commands to install SQL Server:

    sudo zypper install -y mssql-server
    
  5. After the package installation finishes, run mssql-conf setup and follow the prompts to set the sa password and choose your edition. As a reminder, the following SQL Server editions are freely licensed: Evaluation, Developer, and Express.

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

    Caution

    Your password should follow the SQL Server default password policy. By default, the password must be at least eight characters long and contain characters from three of the following four sets: uppercase letters, lowercase letters, base-10 digits, and symbols. Passwords can be up to 128 characters long. Use passwords that are as long and complex as possible.

  6. Once the configuration is done, verify that the service is running:

    systemctl status mssql-server
    
  7. If you plan to connect remotely, you might also need to open the SQL Server TCP port (default 1433) on your firewall. If you're using the SUSE firewall, you need to edit the /etc/sysconfig/SuSEfirewall2 configuration file. Modify the FW_SERVICES_EXT_TCP entry to include the SQL Server port number.

    FW_SERVICES_EXT_TCP="1433"
    

At this point, SQL Server is running on your SLES machine and is ready to use!

  1. Download the SQL Server 2019 (15.x) SLES repository configuration file:

    sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/mssql-server-2019.repo
    

    Tip

    If you want to install a different version of SQL Server, see the SQL Server 2017 (14.x) or SQL Server 2022 (16.x) version of this article.

  2. Refresh your repositories.

    sudo zypper --gpg-auto-import-keys refresh
    

    To ensure that the Microsoft package signing key is installed on your system, you can import it using the command below:

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    
  3. Before you install SQL Server, and after you have registered and activated your SUSE Linux Enterprise Server with SUSE Customer Center, you must activate both the Desktop Applications module and Development Tools module. These modules are required for some of the SQL Server package dependencies.

  4. Now, you're ready to install SQL Server. Run the following commands to install SQL Server:

    sudo zypper install -y mssql-server
    
  5. After the package installation finishes, run mssql-conf setup and follow the prompts to set the sa password and choose your edition. As a reminder, the following SQL Server editions are freely licensed: Evaluation, Developer, and Express.

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

    Caution

    Your password should follow the SQL Server default password policy. By default, the password must be at least eight characters long and contain characters from three of the following four sets: uppercase letters, lowercase letters, base-10 digits, and symbols. Passwords can be up to 128 characters long. Use passwords that are as long and complex as possible.

  6. Once the configuration is done, verify that the service is running:

    systemctl status mssql-server
    
  7. If you plan to connect remotely, you might need to open the SQL Server TCP port (default 1433) on your firewall.

    Note

    On SLES, you can manage your firewall using firewalld for example. Install it using sudo zypper install firewalld, and then start it up with sudo systemctl start firewalld. Add the firewall rule with sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent, and then reload the firewall with sudo firewall-cmd --reload for the settings to take effect.

At this point, SQL Server is running on your SLES machine and is ready to use!

  1. Download the SQL Server 2022 (16.x) SLES repository configuration file:

    sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/mssql-server-2022.repo
    

    Tip

    If you want to install a different version of SQL Server, see the SQL Server 2017 (14.x) or SQL Server 2019 (15.x) version of this article.

  2. Refresh your repositories.

    sudo zypper --gpg-auto-import-keys refresh
    

    To ensure that the Microsoft package signing key is installed on your system, you can import it using the command below:

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    
  3. Before you install SQL Server, and after you have registered and activated your SUSE Linux Enterprise Server with SUSE Customer Center, you must activate both the Desktop Applications module and Development Tools module. These modules are required for some of the SQL Server package dependencies.

  4. Now, you're ready to install SQL Server. Run the following commands to install SQL Server:

    sudo zypper install -y mssql-server
    
  5. After the package installation finishes, run mssql-conf setup and follow the prompts to set the sa password and choose your edition. As a reminder, the following SQL Server editions are freely licensed: Evaluation, Developer, and Express.

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

    Caution

    Your password should follow the SQL Server default password policy. By default, the password must be at least eight characters long and contain characters from three of the following four sets: uppercase letters, lowercase letters, base-10 digits, and symbols. Passwords can be up to 128 characters long. Use passwords that are as long and complex as possible.

  6. Once the configuration is done, verify that the service is running:

    systemctl status mssql-server
    
  7. If you plan to connect remotely, you might need to open the SQL Server TCP port (default 1433) on your firewall.

    Note

    On SLES, you can manage your firewall using firewalld for example. Install it using sudo zypper install firewalld, and then start it up with sudo systemctl start firewalld. Add the firewall rule with sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent, and then reload the firewall with sudo firewall-cmd --reload for the settings to take effect.

At this point, SQL Server is running on your SLES machine and is ready to use!

Disable the SA account as a best practice

When you connect to your SQL Server instance using the system administrator (sa) account for the first time after installation, it's important for you to follow these steps, and then immediately disable the sa account as a security best practice.

  1. Create a new login, and make it a member of the sysadmin server role.

  2. Connect to the SQL Server instance using the new login you created.

  3. Disable the sa account, as recommended for security best practice.

Install the SQL Server command-line tools

To create a database, you need to connect with a tool that can run Transact-SQL statements on SQL Server. The following steps install the SQL Server command-line tools: sqlcmd utility and bcp utility.

Use the following steps to install the mssql-tools18 on SUSE Linux Enterprise Server.

  1. Import the Microsoft package signing key.

    curl -O https://packages.microsoft.com/keys/microsoft.asc
    sudo rpm --import microsoft.asc
    
  2. Add the SQL Server repository to Zypper.

    • For SLES 15, use the following command:

      sudo zypper ar https://packages.microsoft.com/config/sles/15/prod.repo
      
    • For SLES 12, use the following command:

      sudo zypper ar https://packages.microsoft.com/config/sles/12/prod.repo
      
  3. Install mssql-tools18 with the unixODBC developer package.

    • For SLES 15, use the following command:
    sudo zypper install -y mssql-tools18 unixODBC-devel glibc-locale-base
    
    • For SLES 12, use the following command:
    sudo zypper install -y mssql-tools18 unixODBC-devel
    

    To update to the latest version of mssql-tools18, run the following commands:

    sudo zypper refresh
    sudo zypper update mssql-tools18
    
  4. Optional: Add /opt/mssql-tools18/bin/ to your PATH environment variable in a bash shell.

    To make sqlcmd and bcp accessible from the bash shell for login sessions, modify your PATH in the ~/.bash_profile file with the following command:

    echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
    source ~/.bash_profile
    

    To make sqlcmd or bcp accessible from the bash shell for interactive/non-login sessions, modify the PATH in the ~/.bashrc file with the following command:

    echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
    source ~/.bashrc
    

Connect locally

The following steps use sqlcmd to locally connect to your new SQL Server instance.

Caution

Your password should follow the SQL Server default password policy. By default, the password must be at least eight characters long and contain characters from three of the following four sets: uppercase letters, lowercase letters, base-10 digits, and symbols. Passwords can be up to 128 characters long. Use passwords that are as long and complex as possible.

  1. Run sqlcmd with parameters for your SQL Server name (-S), the user name (-U), and the password (-P). In this tutorial, you connect locally, so the server name is localhost. The user name is sa and the password is the one you provided for the sa account during setup.

    sqlcmd -S localhost -U sa -P '<password>'
    

    Note

    Newer versions of sqlcmd are secure by default. For more information about connection encryption, see sqlcmd utility for Windows, and Connecting with sqlcmd for Linux and macOS. If the connection doesn't succeed, you can add the -No option to sqlcmd to specify that encryption is optional, not mandatory.

    You can omit the password on the command line to be prompted to enter it.

    If you later decide to connect remotely, specify the machine name or IP address for the -S parameter, and make sure port 1433 is open on your firewall.

  2. If successful, you should get to a sqlcmd command prompt: 1>.

  3. If you get a connection failure, first attempt to diagnose the problem from the error message. Then review the connection troubleshooting recommendations.

Create and query data

The following sections walk you through using sqlcmd to create a new database, add data, and run a simple query.

For more information about writing Transact-SQL statements and queries, see Tutorial: Write Transact-SQL statements.

Create a new database

The following steps create a new database named TestDB.

  1. From the sqlcmd command prompt, paste the following Transact-SQL command to create a test database:

    CREATE DATABASE TestDB;
    
  2. On the next line, write a query to return the name of all of the databases on your server:

    SELECT Name
    FROM sys.databases;
    
  3. The previous two commands aren't executed immediately. You must type GO on a new line to execute the previous commands:

    GO
    

Insert data

Next create a new table, dbo.Inventory, and insert two new rows.

  1. From the sqlcmd command prompt, switch context to the new TestDB database:

    USE TestDB;
    
  2. Create new table named dbo.Inventory:

    CREATE TABLE dbo.Inventory
    (
        id INT,
        name NVARCHAR (50),
        quantity INT,
        PRIMARY KEY (id)
    );
    
  3. Insert data into the new table:

    INSERT INTO dbo.Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO dbo.Inventory
    VALUES (2, 'orange', 154);
    
  4. Type GO to execute the previous commands:

    GO
    

Select data

Now, run a query to return data from the dbo.Inventory table.

  1. From the sqlcmd command prompt, enter a query that returns rows from the dbo.Inventory table where the quantity is greater than 152:

    SELECT *
    FROM dbo.Inventory
    WHERE quantity > 152;
    
  2. Execute the command:

    GO
    

Exit the sqlcmd command prompt

To end your sqlcmd session, type QUIT:

QUIT

Performance best practices

After installing SQL Server on Linux, review the best practices for configuring Linux and SQL Server to improve performance for production scenarios. For more information, see Performance best practices and configuration guidelines for SQL Server on Linux.

Cross-platform data tools

In addition to sqlcmd, you can use the following cross-platform tools to manage SQL Server:

Tool Description
Azure Data Studio A cross-platform GUI database management utility.
Visual Studio Code A cross-platform GUI code editor that run Transact-SQL statements with the mssql extension.
PowerShell Core A cross-platform automation and configuration tool based on cmdlets.
mssql-cli A cross-platform command-line interface for running Transact-SQL commands.

Connect from Windows

SQL Server tools on Windows connect to SQL Server instances on Linux in the same way they would connect to any remote SQL Server instance.

If you have a Windows machine that can connect to your Linux machine, try the same steps in this topic from a Windows command-prompt running sqlcmd. You must use the target Linux machine name or IP address rather than localhost, and make sure that TCP port 1433 is open on the SQL Server machine. If you have any problems connecting from Windows, see connection troubleshooting recommendations.

For other tools that run on Windows but connect to SQL Server on Linux, see:

Other deployment scenarios

For other installation scenarios, see the following resources:

  • Upgrade: Learn how to upgrade an existing installation of SQL Server on Linux
  • Uninstall: Uninstall SQL Server on Linux
  • Unattended install: Learn how to script the installation without prompts
  • Offline install: Learn how to manually download the packages for offline installation

For answers to frequently asked questions, see the SQL Server on Linux FAQ.

Contribute to SQL documentation

Did you know that you can edit SQL content yourself? If you do so, not only do you help improve our documentation, but you also get credited as a contributor to the page.

For more information, see How to contribute to SQL Server documentation