You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/linux/tutorial-restore-backup-in-sql-server-container.md
+42-17Lines changed: 42 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -73,7 +73,7 @@ This tutorial demonstrates how to move and restore a SQL Server backup file into
73
73
74
74
1. If the **STATUS** column shows a status of **Up**, then SQL Server is running in the container and listening on the port specified in the **PORTS** column. If the **STATUS** column for your SQL Server container shows **Exited**, see the [Troubleshooting section of the configuration guide](sql-server-linux-configure-docker.md#troubleshooting).
75
75
76
-
```output
76
+
```text
77
77
$ sudo docker ps -a
78
78
79
79
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
@@ -129,16 +129,21 @@ The backup file is now located inside the container. Before restoring the backup
129
129
1. Run **sqlcmd** inside the container to list out logical file names and paths inside the backup. This is done with the **RESTORE FILELISTONLY** Transact-SQL statement.
130
130
131
131
```bash
132
-
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>' -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/wwi.bak"'| tr -s ''| cut -d '' -f 1
-Q "RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/wwi.bak'"
137
142
```
138
143
139
144
You should see output similar to the following:
140
145
141
-
```output
146
+
```text
142
147
LogicalName PhysicalName
143
148
------------------------------------------
144
149
WWI_Primary D:\Data\WideWorldImporters.mdf
@@ -150,16 +155,20 @@ The backup file is now located inside the container. Before restoring the backup
150
155
1. Call the **RESTORE DATABASE**command to restore the database inside the container. Specify new paths foreach of the filesin the previous step.
151
156
152
157
```bash
153
-
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>' -Q 'RESTORE DATABASE WideWorldImporters FROM DISK = "/var/opt/mssql/backup/wwi.bak" WITH MOVE "WWI_Primary" TO "/var/opt/mssql/data/WideWorldImporters.mdf", MOVE "WWI_UserData" TO "/var/opt/mssql/data/WideWorldImporters_userdata.ndf", MOVE "WWI_Log" TO "/var/opt/mssql/data/WideWorldImporters.ldf", MOVE "WWI_InMemory_Data_1" TO "/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1"'
-S localhost -U SA -P '<YourNewStrong!Passw0rd>' \
160
+
-Q 'RESTORE DATABASE WideWorldImporters FROM DISK = "/var/opt/mssql/backup/wwi.bak" WITH MOVE "WWI_Primary" TO "/var/opt/mssql/data/WideWorldImporters.mdf", MOVE "WWI_UserData" TO "/var/opt/mssql/data/WideWorldImporters_userdata.ndf", MOVE "WWI_Log" TO "/var/opt/mssql/data/WideWorldImporters.ldf", MOVE "WWI_InMemory_Data_1" TO "/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1"'
154
161
```
155
162
156
163
```PowerShell
157
-
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong!Passw0rd>" -Q "RESTORE DATABASE WideWorldImporters FROM DISK = '/var/opt/mssql/backup/wwi.bak' WITH MOVE 'WWI_Primary' TO '/var/opt/mssql/data/WideWorldImporters.mdf', MOVE 'WWI_UserData' TO '/var/opt/mssql/data/WideWorldImporters_userdata.ndf', MOVE 'WWI_Log' TO '/var/opt/mssql/data/WideWorldImporters.ldf', MOVE 'WWI_InMemory_Data_1' TO '/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1'"
-Q "RESTORE DATABASE WideWorldImporters FROM DISK = '/var/opt/mssql/backup/wwi.bak' WITH MOVE 'WWI_Primary' TO '/var/opt/mssql/data/WideWorldImporters.mdf', MOVE 'WWI_UserData' TO '/var/opt/mssql/data/WideWorldImporters_userdata.ndf', MOVE 'WWI_Log' TO '/var/opt/mssql/data/WideWorldImporters.ldf', MOVE 'WWI_InMemory_Data_1' TO '/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1'"
158
167
```
159
168
160
169
You should see output similar to the following:
161
170
162
-
```output
171
+
```text
163
172
Processed 1464 pages for database 'WideWorldImporters', file 'WWI_Primary' on file 1.
164
173
Processed 53096 pages for database 'WideWorldImporters', file 'WWI_UserData' on file 1.
165
174
Processed 33 pages for database 'WideWorldImporters', file 'WWI_Log' on file 1.
@@ -215,7 +224,7 @@ The following steps make a change in the database.
215
224
216
225
You should see a list of item identifiers and names:
217
226
218
-
```output
227
+
```text
219
228
StockItemID StockItemName
220
229
----------- -----------------
221
230
1 USB missile launcher (Green)
@@ -233,11 +242,15 @@ The following steps make a change in the database.
233
242
1. Update the description of the first item with the following **UPDATE** statement:
234
243
235
244
```bash
236
-
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>' -Q 'UPDATE WideWorldImporters.Warehouse.StockItems SET StockItemName="USB missile launcher (Dark Green)" WHERE StockItemID=1; SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'
-S localhost -U SA -P '<YourNewStrong!Passw0rd>' \
247
+
-Q 'UPDATE WideWorldImporters.Warehouse.StockItems SET StockItemName="USB missile launcher (Dark Green)" WHERE StockItemID=1; SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'
237
248
```
238
249
239
250
```PowerShell
240
-
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong!Passw0rd>" -Q "UPDATE WideWorldImporters.Warehouse.StockItems SET StockItemName='USB missile launcher (Dark Green)' WHERE StockItemID=1; SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1"
-Q "UPDATE WideWorldImporters.Warehouse.StockItems SET StockItemName='USB missile launcher (Dark Green)' WHERE StockItemID=1; SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1"
241
254
```
242
255
243
256
## Create a new backup
@@ -247,16 +260,20 @@ After you've restored your database into a container, you might also want to reg
247
260
1. Use the **BACKUP DATABASE** Transact-SQL command to create a database backup in the container. This tutorial creates a new backup file, **wwi_2.bak**, in the previously created **/var/opt/mssql/backup** directory.
248
261
249
262
```bash
250
-
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>' -Q "BACKUP DATABASE [WideWorldImporters] TO DISK = N'/var/opt/mssql/backup/wwi_2.bak' WITH NOFORMAT, NOINIT, NAME = 'WideWorldImporters-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
-S localhost -U SA -P '<YourNewStrong!Passw0rd>' \
265
+
-Q "BACKUP DATABASE [WideWorldImporters] TO DISK = N'/var/opt/mssql/backup/wwi_2.bak' WITH NOFORMAT, NOINIT, NAME = 'WideWorldImporters-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
251
266
```
252
267
253
268
```PowerShell
254
-
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong!Passw0rd>" -Q "BACKUP DATABASE [WideWorldImporters] TO DISK = N'/var/opt/mssql/backup/wwi_2.bak' WITH NOFORMAT, NOINIT, NAME = 'WideWorldImporters-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
-S localhost -U SA -P "<YourNewStrong!Passw0rd>" `
271
+
-Q "BACKUP DATABASE [WideWorldImporters] TO DISK = N'/var/opt/mssql/backup/wwi_2.bak' WITH NOFORMAT, NOINIT, NAME = 'WideWorldImporters-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
255
272
```
256
273
257
274
You should see output similar to the following:
258
275
259
-
```output
276
+
```text
260
277
10 percent processed.
261
278
20 percent processed.
262
279
30 percent processed.
@@ -314,21 +331,29 @@ In addition to taking database backups for protecting your data, you can also us
314
331
1. Create a new container, **sql2**, and reuse the **sql1data** data volume container.
0 commit comments