Aracılığıyla paylaş


Linux kapsayıcısında SQL Server veritabanını geri yükleme

Şunlar için geçerlidir:Linux üzerinde SQL Server

Bu öğreticide, BIR SQL Server yedekleme dosyasının Docker üzerinde çalışan bir SQL Server 2017 (14.x) Linux kapsayıcı görüntüsüne nasıl taşınıp geri yükleneceği gösterilmektedir.

Bu öğreticide, SQL Server yedekleme dosyasının Docker üzerinde çalışan bir SQL Server 2019 (15.x) Linux kapsayıcı görüntüsüne nasıl taşınıp geri yükleneceği gösterilmektedir.

Bu öğreticide, SQL Server yedekleme dosyasının Docker üzerinde çalışan bir SQL Server 2022 (16.x) Linux kapsayıcı görüntüsüne nasıl taşınıp geri yükleneceği gösterilmektedir.

Bu öğreticide, SQL Server yedekleme dosyasının Docker üzerinde çalışan bir SQL Server 2025 (17.x) Linux kapsayıcı görüntüsüne nasıl taşınıp geri yükleneceği gösterilmektedir.

  • En son SQL Server Linux kapsayıcı görüntüsünü çekin ve çalıştırın.
  • Wide World Importers veritabanı dosyasını kapsayıcıya kopyalayın.
  • Kapsayıcıdaki veritabanını geri yükleyin.
  • Veritabanını görüntülemek ve değiştirmek için Transact-SQL deyimlerini çalıştırın.
  • Değiştirilen veritabanını yedekleyin.

Önkoşullar

Dağıtım seçenekleri

Bu bölümde ortamınız için dağıtım seçenekleri sağlanır.

sqlcmd şu anda kapsayıcı oluştururken MSSQL_PID parametresini desteklemez. Bu öğreticide sqlcmd yönergelerini kullanırsanız, SQL Server'ın Developer sürümüyle bir kapsayıcı oluşturursunuz. Seçtiğiniz lisansı kullanarak kapsayıcı oluşturmak için komut satırı arabirimi (CLI) yönergelerini kullanın. Daha fazla bilgi için bkz. SQL Server Linux kapsayıcılarını dağıtma ve bağlama.

Kapsayıcı görüntüsünü indirme ve çalıştırma

  1. Linux üzerinde bir bash terminali açın.

  2. Microsoft Container Registry'den SQL Server 2017 (14.x) Linux kapsayıcı görüntüsünü çekin.

    sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
    
  3. Kapsayıcı görüntüsünü Docker ile çalıştırmak için aşağıdaki komutu kullanabilirsiniz:

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql1' -p 1401:1433 \
       -v sql1data:/var/opt/mssql \
       -d mcr.microsoft.com/mssql/server:2017-latest
    

    Dikkat

    Parolanız, SQL Server varsayılanparola ilkesine uygun olmalıdır. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.

    Bu komut, Developer sürümü (varsayılan) ile bir SQL Server 2017 (14.x) kapsayıcısı oluşturur. SQL Server bağlantı noktası 1433, ana bilgisayarda 1401bağlantı noktası olarak gösterilir. İsteğe bağlı -v sql1data:/var/opt/mssql parametresi, sql1dataadlı bir veri birimi kapsayıcısı oluşturur. Bu, SQL Server tarafından oluşturulan verileri kalıcı hale getirmek için kullanılır.

    Önemli

    Bu örnekte Docker içinde bir veri birimi kapsayıcısı kullanılır. Daha fazla bilgi için bkz. Docker üzerinde SQL Server kapsayıcı görüntülerini yapılandırma.

  4. Kapsayıcılarınızı görüntülemek için docker ps komutunu kullanın.

    sudo docker ps -a
    
  5. STATUS sütununda Updurumu gösteriliyorsa, SQL Server kapsayıcıda çalışır ve PORTS sütununda belirtilen bağlantı noktasını dinler. SQL Server kapsayıcınızın STATUS sütunu Exitedgösteriyorsa bkz. SQL Server Docker kapsayıcılarının sorunlarını giderme.

$ sudo docker ps -a

CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                    NAMES
941e1bdf8e1d        mcr.microsoft.com/mssql/server/mssql-server-linux   "/bin/sh -c /opt/m..."   About an hour ago   Up About an hour    0.0.0.0:1401->1433/tcp   sql1
  1. Linux üzerinde bir bash terminali açın.

  2. Microsoft Container Registry'den SQL Server 2019 (15.x) Linux kapsayıcı görüntüsünü çekin.

    sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
    
  3. Kapsayıcı görüntüsünü Docker ile çalıştırmak için aşağıdaki komutu kullanabilirsiniz:

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql1' -p 1401:1433 \
       -v sql1data:/var/opt/mssql \
       -d mcr.microsoft.com/mssql/server:2019-latest
    

    Dikkat

    Parolanız, SQL Server varsayılanparola ilkesine uygun olmalıdır. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.

    Bu komut, Developer sürümü (varsayılan) ile bir SQL Server 2019 (15.x) kapsayıcısı oluşturur. SQL Server bağlantı noktası 1433, ana bilgisayarda 1401bağlantı noktası olarak gösterilir. İsteğe bağlı -v sql1data:/var/opt/mssql parametresi, sql1dataadlı bir veri birimi kapsayıcısı oluşturur. Bu, SQL Server tarafından oluşturulan verileri kalıcı hale getirmek için kullanılır.

    Önemli

    Bu örnekte Docker içinde bir veri birimi kapsayıcısı kullanılır. Daha fazla bilgi için bkz. Docker üzerinde SQL Server kapsayıcı görüntülerini yapılandırma.

  4. Kapsayıcılarınızı görüntülemek için docker ps komutunu kullanın.

    sudo docker ps -a
    
  5. STATUS sütununda Updurumu gösteriliyorsa, SQL Server kapsayıcıda çalışır ve PORTS sütununda belirtilen bağlantı noktasını dinler. SQL Server kapsayıcınızın STATUS sütunu Exitedgösteriyorsa bkz. SQL Server Docker kapsayıcılarının sorunlarını giderme.

    $ sudo docker ps -a
    
    CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                    NAMES
    941e1bdf8e1d        mcr.microsoft.com/mssql/server/mssql-server-linux   "/bin/sh -c /opt/m..."   About an hour ago   Up About an hour    0.0.0.0:1401->1433/tcp   sql1
    
  1. Linux üzerinde bir bash terminali açın.

  2. MICROSOFT Container Registry'den SQL Server 2022 (16.x) Linux kapsayıcı görüntüsünü çekin.

    sudo docker pull mcr.microsoft.com/mssql/server:2022-latest
    
  3. Kapsayıcı görüntüsünü Docker ile çalıştırmak için aşağıdaki komutu kullanabilirsiniz:

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql1' -p 1401:1433 \
       -v sql1data:/var/opt/mssql \
       -d mcr.microsoft.com/mssql/server:2022-latest
    

    Dikkat

    Parolanız, SQL Server varsayılanparola ilkesine uygun olmalıdır. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.

    Bu komut, Developer sürümü (varsayılan) ile bir SQL Server 2022 (16.x) kapsayıcısı oluşturur. SQL Server bağlantı noktası 1433, ana bilgisayarda 1401bağlantı noktası olarak gösterilir. İsteğe bağlı -v sql1data:/var/opt/mssql parametresi, sql1dataadlı bir veri birimi kapsayıcısı oluşturur. Bu, SQL Server tarafından oluşturulan verileri kalıcı hale getirmek için kullanılır.

    Önemli

    Bu örnekte Docker içinde bir veri birimi kapsayıcısı kullanılır. Daha fazla bilgi için bkz. Docker üzerinde SQL Server kapsayıcı görüntülerini yapılandırma.

  4. Kapsayıcılarınızı görüntülemek için docker ps komutunu kullanın.

    sudo docker ps -a
    
  5. STATUS sütununda Updurumu gösteriliyorsa, SQL Server kapsayıcıda çalışır ve PORTS sütununda belirtilen bağlantı noktasını dinler. SQL Server kapsayıcınızın STATUS sütunu Exitedgösteriyorsa bkz. SQL Server Docker kapsayıcılarının sorunlarını giderme.

    $ sudo docker ps -a
    
    CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                    NAMES
    941e1bdf8e1d        mcr.microsoft.com/mssql/server/mssql-server-linux   "/bin/sh -c /opt/m..."   About an hour ago   Up About an hour    0.0.0.0:1401->1433/tcp   sql1
    
  1. Linux üzerinde bir bash terminali açın.

  2. MICROSOFT Container Registry'den SQL Server 2025 (17.x) Linux kapsayıcı görüntüsünü çekin.

    sudo docker pull mcr.microsoft.com/mssql/server:2025-latest
    
  3. Kapsayıcı görüntüsünü Docker ile çalıştırmak için aşağıdaki komutu kullanabilirsiniz:

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql1' -p 1401:1433 \
       -v sql1data:/var/opt/mssql \
       -d mcr.microsoft.com/mssql/server:2025-latest
    

    Dikkat

    Parolanız, SQL Server varsayılanparola ilkesine uygun olmalıdır. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.

    Bu komut, Developer sürümü (varsayılan) ile bir SQL Server 2025 (17.x) kapsayıcısı oluşturur. SQL Server bağlantı noktası 1433, ana bilgisayarda 1401bağlantı noktası olarak gösterilir. İsteğe bağlı -v sql1data:/var/opt/mssql parametresi, sql1dataadlı bir veri birimi kapsayıcısı oluşturur. Bu, SQL Server tarafından oluşturulan verileri kalıcı hale getirmek için kullanılır.

    Önemli

    Bu örnekte Docker içinde bir veri birimi kapsayıcısı kullanılır. Daha fazla bilgi için bkz. Docker üzerinde SQL Server kapsayıcı görüntülerini yapılandırma.

  4. Kapsayıcılarınızı görüntülemek için docker ps komutunu kullanın.

    sudo docker ps -a
    
  5. STATUS sütununda Updurumu gösteriliyorsa, SQL Server kapsayıcıda çalışır ve PORTS sütununda belirtilen bağlantı noktasını dinler. SQL Server kapsayıcınızın STATUS sütunu Exitedgösteriyorsa bkz. SQL Server Docker kapsayıcılarının sorunlarını giderme.

    $ sudo docker ps -a
    
    CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                    NAMES
    941e1bdf8e1d        mcr.microsoft.com/mssql/server/mssql-server-linux   "/bin/sh -c /opt/m..."   About an hour ago   Up About an hour    0.0.0.0:1401->1433/tcp   sql1
    

Sistem yöneticisi (SA) parolasını değiştirme

sa hesabı, kurulum sırasında oluşturulan SQL Server örneğinde bir sistem yöneticisidir. SQL Server kapsayıcınızı oluşturduktan sonra, belirttiğiniz MSSQL_SA_PASSWORD ortam değişkeni kapsayıcıda echo $MSSQL_SA_PASSWORD çalıştırılarak bulunabilir. Güvenlik amacıyla sa parolanızı değiştirin:

  1. sa hesabı için kullanılacak güçlü bir parola seçin. Parolanız, SQL Server varsayılanparola ilkesine uygun olmalıdır. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.

  2. parolayı bir Transact-SQL deyimi aracılığıyla değiştirmek üzere docker exec yardımcı programını çalıştırmak için kullanın. <old-password> ve <new-password> kendi parola değerlerinizle değiştirin:

    Önemli

    SA_PASSWORD ortam değişkeni kullanım dışıdır. Bunun yerine MSSQL_SA_PASSWORD kullanın.

    sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
       -S localhost -U sa -P '<old-password>' \
       -Q 'ALTER LOGIN sa WITH PASSWORD="<new-password>"'
    
    docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
       -S localhost -U sa -P "<old-password>" `
       -Q "ALTER LOGIN sa WITH PASSWORD='<new-password>'"
    

Kapsayıcıya yedekleme dosyası kopyalama

Bu öğreticide Microsoft SQL içinWide World Importers örnek veritabanları kullanılır. Wide World Importers veritabanı yedekleme dosyasını indirmek ve SQL Server kapsayıcınıza kopyalamak için aşağıdaki adımları kullanın.

  1. İlk olarak, yedekleme klasörü oluşturmak için docker exec kullanın. Aşağıdaki komut, SQL Server kapsayıcısının içinde bir /var/opt/mssql/backup dizini oluşturur.

    sudo docker exec -it sql1 mkdir /var/opt/mssql/backup
    
  2. Ardından, WideWorldImporters-Full.bak dosyasını konak makinenize indirin. Aşağıdaki komutlar giriş/kullanıcı dizinine gider ve yedekleme dosyasını wwi.bakolarak indirir.

    cd ~
    curl -L -o wwi.bak 'https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak'
    
  3. yedekleme dosyasını docker cp dizinindeki kapsayıcıya kopyalamak için /var/opt/mssql/backup kullanın.

    sudo docker cp wwi.bak sql1:/var/opt/mssql/backup
    

Veritabanını geri yükleme

Yedekleme dosyası artık kapsayıcının içinde bulunur. Yedeklemeyi geri yüklemeden önce, yedeklemenin içindeki mantıksal dosya adlarını ve dosya türlerini bilmek önemlidir. Aşağıdaki Transact-SQL komutları yedeklemeyi inceler ve kapsayıcıdaki sqlcmd kullanarak geri yüklemeyi gerçekleştirir.

Bahşiş

Bu öğreticide kapsayıcının içinde sqlcmd kullanılır çünkü kapsayıcı bu araç önceden yüklenmiş olarak gelir. Ancak, Visual Studio Code için sql server uzantısı gibi kapsayıcı dışındaki diğer istemci araçlarıyla Transact-SQL deyimleri de çalıştırabilir veya Linuxüzerinde SQL Server'ı yönetmek için Windows'ta SQL Server Management Studio kullanma . Bağlanmak için kapsayıcıda 1433 numaralı bağlantı noktasına eşlenen ana bilgisayar bağlantı noktasını kullanın. Bu örnekte, konak ve bağlantı noktası, konak makinesinde localhost,1401'dir ve uzaktaki Host_IP_Address,1401'dir.

  1. Yedeklemenin içindeki mantıksal dosya adlarını ve yollarını listelemek için kapsayıcının içinde sqlcmd çalıştırın. Bu işlem RESTORE FILELISTONLY Transact-SQL deyimiyle yapılır.

    sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd -S localhost \
       -U sa -P '<new-password>' \
       -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/wwi.bak"' \
       | tr -s ' ' | cut -d ' ' -f 1-2
    

    Sonuçlar aşağıdaki çıkışa benzer görünmelidir:

    LogicalName   PhysicalName
    ------------------------------------------
    WWI_Primary   D:\Data\WideWorldImporters.mdf
    WWI_UserData   D:\Data\WideWorldImporters_UserData.ndf
    WWI_Log   E:\Log\WideWorldImporters.ldf
    WWI_InMemory_Data_1   D:\Data\WideWorldImporters_InMemory_Data_1
    
  2. Kapsayıcı içindeki veritabanını geri yüklemek için RESTORE DATABASE komutunu çağırın. Önceki adımda dosyaların her biri için yeni yollar belirtin.

    sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -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"'
    

    Sonuçlar aşağıdaki çıkışa benzer görünmelidir:

    Processed 1464 pages for database 'WideWorldImporters', file 'WWI_Primary' on file 1.
    Processed 53096 pages for database 'WideWorldImporters', file 'WWI_UserData' on file 1.
    Processed 33 pages for database 'WideWorldImporters', file 'WWI_Log' on file 1.
    Processed 3862 pages for database 'WideWorldImporters', file 'WWI_InMemory_Data_1' on file 1.
    Converting database 'WideWorldImporters' from version 852 to the current version 869.
    Database 'WideWorldImporters' running the upgrade step from version 852 to version 853.
    Database 'WideWorldImporters' running the upgrade step from version 853 to version 854.
    Database 'WideWorldImporters' running the upgrade step from version 854 to version 855.
    Database 'WideWorldImporters' running the upgrade step from version 855 to version 856.
    Database 'WideWorldImporters' running the upgrade step from version 856 to version 857.
    Database 'WideWorldImporters' running the upgrade step from version 857 to version 858.
    Database 'WideWorldImporters' running the upgrade step from version 858 to version 859.
    Database 'WideWorldImporters' running the upgrade step from version 859 to version 860.
    Database 'WideWorldImporters' running the upgrade step from version 860 to version 861.
    Database 'WideWorldImporters' running the upgrade step from version 861 to version 862.
    Database 'WideWorldImporters' running the upgrade step from version 862 to version 863.
    Database 'WideWorldImporters' running the upgrade step from version 863 to version 864.
    Database 'WideWorldImporters' running the upgrade step from version 864 to version 865.
    Database 'WideWorldImporters' running the upgrade step from version 865 to version 866.
    Database 'WideWorldImporters' running the upgrade step from version 866 to version 867.
    Database 'WideWorldImporters' running the upgrade step from version 867 to version 868.
    Database 'WideWorldImporters' running the upgrade step from version 868 to version 869.
    RESTORE DATABASE successfully processed 58455 pages in 18.069 seconds (25.273 MB/sec).
    

Geri yüklenen veritabanını doğrulama

Kapsayıcınızdaki veritabanı adlarının listesini görüntülemek için aşağıdaki sorguyu çalıştırın:

sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
   -S localhost -U sa -P '<new-password>' \
   -Q 'SELECT name FROM sys.databases'

Veritabanları listesinde WideWorldImporters görmeniz gerekir.

Değişiklik yapma

Veritabanında değişiklik yapmak için bu adımları izleyin.

  1. Warehouse.StockItems tablosundaki ilk 10 öğeyi görüntülemek için bir sorgu çalıştırın.

    sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -Q 'SELECT TOP 10 StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems ORDER BY StockItemID'
    

    Öğe tanımlayıcılarının ve adlarının listesini görmeniz gerekir:

    StockItemID StockItemName
    ----------- -----------------
              1 USB missile launcher (Green)
              2 USB rocket launcher (Gray)
              3 Office cube periscope (Black)
              4 USB food flash drive - sushi roll
              5 USB food flash drive - hamburger
              6 USB food flash drive - hot dog
              7 USB food flash drive - pizza slice
              8 USB food flash drive - dim sum 10 drive variety pack
              9 USB food flash drive - banana
             10 USB food flash drive - chocolate bar
    
  2. İlk öğenin açıklamasını aşağıdaki UPDATE deyimiyle güncelleştirin:

    sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -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'
    

    Aşağıdaki metne benzer bir çıkış görmeniz gerekir:

    (1 rows affected)
    StockItemID StockItemName
    ----------- ------------------------------------
              1 USB missile launcher (Dark Green)
    

Yeni yedekleme oluşturma

Veritabanınızı bir kapsayıcıya geri yükledikten sonra, çalışan kapsayıcı içinde düzenli olarak veritabanı yedeklemeleri de oluşturmak isteyebilirsiniz. Adımlar, önceki adımlara benzer ancak tersten bir desen izler.

  1. kapsayıcısında veritabanı yedeklemesi oluşturmak için BACKUP DATABASE Transact-SQL komutunu kullanın. Bu öğretici, daha önce oluşturulan wwi_2.bak dizininde /var/opt/mssql/backupyeni bir yedekleme dosyası oluşturur.

    sudo docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -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"
    

    Sonuçlar aşağıdaki çıkışa benzer görünmelidir:

    10 percent processed.
    20 percent processed.
    30 percent processed.
    40 percent processed.
    50 percent processed.
    60 percent processed.
    70 percent processed.
    Processed 1200 pages for database 'WideWorldImporters', file 'WWI_Primary' on file 1.
    Processed 53096 pages for database 'WideWorldImporters', file 'WWI_UserData' on file 1.
    80 percent processed.
    Processed 3865 pages for database 'WideWorldImporters', file 'WWI_InMemory_Data_1' on file 1.
    Processed 938 pages for database 'WideWorldImporters', file 'WWI_Log' on file 1.
    100 percent processed.
    BACKUP DATABASE successfully processed 59099 pages in 25.056 seconds (18.427 MB/sec).
    
  2. Ardından, yedekleme dosyasını kapsayıcının dışına ve konak makinenize kopyalayın.

    cd ~
    sudo docker cp sql1:/var/opt/mssql/backup/wwi_2.bak wwi_2.bak
    ls -l wwi*
    

Kalıcı verileri kullanma

Verilerinizi korumak için veritabanı yedekleri almanın yanı sıra, veri birimi kapsayıcılarını da kullanabilirsiniz. Bu öğreticinin başlangıcı, sql1 parametresiyle -v sql1data:/var/opt/mssql kapsayıcısını oluşturdu. sql1data veri birimi kapsayıcısı, kapsayıcı kaldırıldıktan sonra bile /var/opt/mssql verilerini kalıcı hale döndürür. Aşağıdaki adımlar sql1 kapsayıcısını tamamen kaldırır ve kalıcı verilerle sql2yeni bir kapsayıcı oluşturur.

  1. sql1 kapsayıcısını durdurun.

    sudo docker stop sql1
    
  2. Kapsayıcıyı kaldırın. Bu işlem, daha önce oluşturulan sql1data veri birimi kapsayıcısını ve içindeki kalıcı verileri silmez.

    sudo docker rm sql1
    
  3. sql2yeni bir kapsayıcı oluşturun ve sql1data veri birimi kapsayıcısını yeniden kullanabilirsiniz.

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql2' -e 'MSSQL_PID=Developer' -p 1401:1433 \
       -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
    
  4. Wide World Importers veritabanı artık yeni kapsayıcıdadır. Yaptığınız önceki değişikliği doğrulamak için bir sorgu çalıştırın.

    sudo docker exec -it sql2 /opt/mssql-tools/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -Q 'SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'
    

    sa parolası, sql2 kapsayıcısı için belirttiğiniz MSSQL_SA_PASSWORD=<password>parolası değildir. Eğitimin daha önceki bir bölümünde değiştirilen parola da dahil olmak üzere, tüm SQL Server verileri sql1'dan geri yüklendi. Sonuç olarak, /var/opt/mssql içindeki verilerin geri yüklenmesinden dolayı, bunun gibi bazı seçenekler yoksayılır. Bu nedenle, parola burada gösterildiği gibi <new-password>.

  1. sql1 kapsayıcısını durdurun.

    sudo docker stop sql1
    
  2. Kapsayıcıyı kaldırın. Bu işlem, daha önce oluşturulan sql1data veri birimi kapsayıcısını ve içindeki kalıcı verileri silmez.

    sudo docker rm sql1
    
  3. sql2yeni bir kapsayıcı oluşturun ve sql1data veri birimi kapsayıcısını yeniden kullanabilirsiniz.

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql2' -e 'MSSQL_PID=Developer' -p 1401:1433 \
       -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest
    
  4. Wide World Importers veritabanı artık yeni kapsayıcıdadır. Yaptığınız önceki değişikliği doğrulamak için bir sorgu çalıştırın.

    sudo docker exec -it sql2 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -Q 'SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'
    

    sa parolası, sql2 kapsayıcısı için belirttiğiniz MSSQL_SA_PASSWORD=<password>parolası değildir. Eğitimin daha önceki bir bölümünde değiştirilen parola da dahil olmak üzere, tüm SQL Server verileri sql1'dan geri yüklendi. Sonuç olarak, /var/opt/mssql içindeki verilerin geri yüklenmesinden dolayı, bunun gibi bazı seçenekler yoksayılır. Bu nedenle, parola burada gösterildiği gibi <new-password>.

  1. sql1 kapsayıcısını durdurun.

    sudo docker stop sql1
    
  2. Kapsayıcıyı kaldırın. Bu işlem, daha önce oluşturulan sql1data veri birimi kapsayıcısını ve içindeki kalıcı verileri silmez.

    sudo docker rm sql1
    
  3. sql2yeni bir kapsayıcı oluşturun ve sql1data veri birimi kapsayıcısını yeniden kullanabilirsiniz.

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql2' -e 'MSSQL_PID=Developer' -p 1401:1433 \
       -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2022-latest
    
  4. Wide World Importers veritabanı artık yeni kapsayıcıdadır. Yaptığınız önceki değişikliği doğrulamak için bir sorgu çalıştırın.

    sudo docker exec -it sql2 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -Q 'SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'
    

    sa parolası, sql2 kapsayıcısı için belirttiğiniz MSSQL_SA_PASSWORD=<password>parolası değildir. Eğitimin daha önceki bir bölümünde değiştirilen parola da dahil olmak üzere, tüm SQL Server verileri sql1'dan geri yüklendi. Aslında, /var/opt/mssqliçindeki veriler geri yükleniyorsa, bunun gibi bazı seçenekler yoksayılır. Bu nedenle, parola burada gösterildiği gibi <new-password>.

  1. sql1 kapsayıcısını durdurun.

    sudo docker stop sql1
    
  2. Kapsayıcıyı kaldırın. Bu işlem, daha önce oluşturulan sql1data veri birimi kapsayıcısını ve içindeki kalıcı verileri silmez.

    sudo docker rm sql1
    
  3. sql2yeni bir kapsayıcı oluşturun ve sql1data veri birimi kapsayıcısını yeniden kullanabilirsiniz.

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
       --name 'sql2' -e 'MSSQL_PID=Developer' -p 1401:1433 \
       -v sql1data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2025-latest
    
  4. Wide World Importers veritabanı artık yeni kapsayıcıdadır. Yaptığınız önceki değişikliği doğrulamak için bir sorgu çalıştırın.

    sudo docker exec -it sql2 /opt/mssql-tools18/bin/sqlcmd \
       -S localhost -U sa -P '<new-password>' \
       -Q 'SELECT StockItemID, StockItemName FROM WideWorldImporters.Warehouse.StockItems WHERE StockItemID=1'
    

    sa parolası, sql2 kapsayıcısı için belirttiğiniz MSSQL_SA_PASSWORD=<password>parolası değildir. Eğitimin daha önceki bir bölümünde değiştirilen parola da dahil olmak üzere, tüm SQL Server verileri sql1'dan geri yüklendi. Aslında, /var/opt/mssqliçindeki veriler geri yükleniyorsa, bunun gibi bazı seçenekler yoksayılır. Bu nedenle, parola burada gösterildiği gibi <new-password>.

Dikkat

Parolanız, SQL Server varsayılanparola ilkesine uygun olmalıdır. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.

Sonraki adım

Bu öğreticide, Windows'da bir veritabanını yedeklemeyi ve bir kapsayıcıda SQL Server 2017 (14.x) çalıştıran bir Linux sunucusuna taşımayı öğrendiniz. Nasıl yapılacağını öğrendinsiniz:

Bu öğreticide, Windows'ta bir veritabanını yedeklemeyi ve bir kapsayıcıda SQL Server 2019 (15.x) çalıştıran bir Linux sunucusuna taşımayı öğrendiniz. Nasıl yapılacağını öğrendinsiniz:

Bu öğreticide, Windows'da bir veritabanını yedeklemeyi ve bir kapsayıcıda SQL Server 2022 (16.x) çalıştıran bir Linux sunucusuna taşımayı öğrendiniz. Nasıl yapılacağını öğrendinsiniz:

Bu öğreticide, Windows'ta bir veritabanını yedeklemeyi ve bir kapsayıcıda SQL Server 2025 (17.x) çalıştıran bir Linux sunucusuna taşımayı öğrendiniz. Nasıl yapılacağını öğrendinsiniz:

  • SQL Server Linux kapsayıcı görüntüleri oluşturun.
  • SQL Server veritabanı yedeklemelerini bir kapsayıcıya kopyalayın.
  • Transact-SQL deyimlerini sqlcmdile çalıştırın.
  • Bir kapsayıcıdan yedek dosyaları oluşturun ve çıkarın.
  • SQL Server üretim verilerini kalıcı hale getirmek için veri birimi kapsayıcılarını kullanın.

Ardından diğer kapsayıcı yapılandırmasını ve sorun giderme senaryolarını gözden geçirin:

SQL belgelerine katkıda bulunma

SQL içeriğini kendiniz düzenleyebildiğinizi biliyor muydunuz? Bunu yaparsanız, belgelerimizin geliştirilmesine yardımcı olmakla kalmaz, aynı zamanda sayfaya katkıda bulunan olarak da kabul edilirsiniz.

Daha fazla bilgi için Bkz. Microsoft Learn belgelerini düzenleme.