| title | Backup and restore SQL Server databases on Linux - SQL Server vNext | Microsoft Docs |
|---|---|
| description | |
| author | MikeRayMSFT |
| ms.author | mikeray |
| manager | jhubbard |
| ms.date | 11/16/2016 |
| ms.topic | article |
| ms.prod | sql-linux |
| ms.technology | database-engine |
| ms.assetid | d30090fb-889f-466e-b793-5f284fccc4e6 |
You can take backups of databases from SQL Server vNext CTP 1.1 on Linux with the same tools as other platforms. On a Linux server, you can use sqlcmd to connect to the SQL Server and take backups. From Windows, you can connect to SQL Server on Linux and take backups with the user interface. The backup functionality is the same across platforms. For example, you can backup databases locally, to remote drives, or to Microsoft Azure Blob storage service.
In the following example sqlcmd connects to the local SQL Server instance and takes a full backup of a user database called demodb.
sqlcmd -H localhost -U SA -Q "BACKUP DATABASE [demodb] TO DISK = N'var/opt/mssql/data/demodb.bak' WITH NOFORMAT, NOINIT, NAME = 'demodb-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"When you run the command, SQL Server will prompt for a password. After you enter the password, the shell will return the results of the backup progress. For example:
Password:
10 percent processed.
21 percent processed.
32 percent processed.
40 percent processed.
51 percent processed.
61 percent processed.
72 percent processed.
80 percent processed.
91 percent processed.
Processed 296 pages for database 'demodb', file 'demodb' on file 1.
100 percent processed.
Processed 2 pages for database 'demodb', file 'demodb_log' on file 1.
BACKUP DATABASE successfully processed 298 pages in 0.064 seconds (36.376 MB/sec).
In the following example, sqlcmd connects to the local SQL Server instance and takes a tail-log backup. After the tail-log backup completes, the database will be in a restoring state.
sqlcmd -H localhost -U SA -Q "BACKUP LOG [demodb] TO DISK = N'var/opt/mssql/data/demodb_LogBackup_2016-11-14_18-09-53.bak' WITH NOFORMAT, NOINIT, NAME = N'demodb_LogBackup_2016-11-14_18-09-53', NOSKIP, NOREWIND, NOUNLOAD, NORECOVERY , STATS = 5"In the following example sqlcmd connects to the local instance of SQL Server and restores a database.
sqlcmd -H localhost -U SA -Q "RESTORE DATABASE [demodb] FROM DISK = N'var/opt/mssql/data/demodb.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5"You can use SSMS from a Windows computer to connect to a Linux database and take a backup through the user-interface.
Note
Use the latest version of SSMS to connect to SQL Server. To download and install the latest version, see Download SSMS.
The following steps walk through taking a backup with SSMS.
-
Start SSMS and connect to your server in SQL Server vNext CTP 1.1 on Linux.
-
In Object Explorer, right-click on your database, Click Tasks, and then click Back Up....
-
In the Backup Up Database dialog, verify the parameters and options, and click OK.
SQL Server completes the database backup.
For more information, see Use SSMS to Manage SQL Server on Linux.
The following steps walk you through restoring a database with SSMS.
-
In SSMS right-click Databases and click Restore Databases....
-
Under Source click Device: and then click the ellipses (...).
-
Locate your database backup file and click OK.
-
Under Restore plan, verify the backup file and settings. Click OK.
-
SQL Server restores the database.