Aracılığıyla paylaş


Linux'ta ana veritabanını tek kullanıcılı modda geri yükleme

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

Belirli koşullar altında, Linux'ta tek kullanıcı modunda sql server örneğindeki master veritabanını geri yüklemeniz gerekebilir. Senaryolar arasında yeni bir örneğe geçiş veya tutarsızlıklardan kurtarma sayılabilir.

Not

Geri yükleme tamamlandıktan sonra SQL Server otomatik olarak kapatılır. Bu davranış tasarım gereğidir.

master veritabanını geri yüklemek için komut satırından -m başlangıç seçeneğini kullanarak SQL Server'ı tek kullanıcı modunda başlatmanız gerekir.

Bir SQL Server örneğini Windows'ta tek kullanıcı modunda başlatmak için bkz. SQL Server için tek kullanıcılı mod.

Önkoşullar

SQL Server'ı tek kullanıcı modunda başlatmak, yerel yönetici grubunun herhangi bir üyesinin SQL Server'a sysadmin sabit sunucu rolünün üyesi olarak bağlanmasına olanak tanır. Daha fazla bilgi için bkz. Sistem yöneticileri kilitlendiğinde SQL Server'a bağlanma.

SQL Server örneğini tek kullanıcı modunda başlattığınızda:

  • Sunucuya yalnızca bir kullanıcı bağlanabilir.
  • CHECKPOINT işlemi yürütülemez. Varsayılan olarak, başlangıçta otomatik olarak çalışır.

SQL Server hizmetini durdurma

  1. Şu anda çalışıyorsa aşağıdaki komut SQL Server örneğini durdurur:

    systemctl stop mssql-server
    

Geçerli kullanıcıyı mssql olarak değiştir

  1. Linux üzerinde SQL Server mssql kullanıcı altında çalıştığından önce bu kullanıcıya geçmeniz gerekir. Bu komutu çalıştırırken root parola girmeniz istenir.

    su mssql
    

SQL Server'ı tek kullanıcılı modda başlatma

  1. -mile SQLCMD seçeneğini kullandığınızda, belirtilen bir istemci uygulamasıyla bağlantıları sınırlayabilirsiniz (SQLCMD gösterildiği gibi büyük harfle yazılmalıdır):

    /opt/mssql/bin/sqlservr -m"SQLCMD"
    

    Önceki örnekte, -m"SQLCMD" bağlantıları tek bir bağlantıyla sınırlar ve bu bağlantının kendisini sqlcmd istemci programı olarak tanımlaması gerekir. master veritabanını geri yüklemek için SQL Server'ı tek kullanıcı modunda başlatırken bu seçeneği kullanın.

  2. SQL Server başlatıldığında, birkaç log kaydı oluşturur. Çıktıda aşağıdaki satırları arayarak tek kullanıcı modunda çalıştığını onaylayabilirsiniz:

    [...]
    2022-05-24 04:26:27.24 Server      Command Line Startup Parameters:
             -m "SQLCMD"
    [...]
    2022-05-24 04:26:28.20 spid8s      Warning ******************
    2022-05-24 04:26:28.21 spid8s      SQL Server started in single-user mode. This an informational message only. No user action is required.
    

SQL Server örneğine bağlanma

  1. SQL Server örneğine bağlanmak için sqlcmd kullanın. SQL Server'ı tek kullanıcı modunda başlatma bölümünde açıklanan adımları tamamladıktan sonra SQL Server'ın etkileşimli modunda çalıştığını görebilirsiniz. Bu nedenle, sqlcmd aşağıdaki gibi başlatmak için yeni bir terminal oturumu açmanız gerekir.

    /opt/mssql-tools/bin/sqlcmd -S <ServerName> -U sa -P <password>
    

    Önceki örnekte <ServerName>, uzaktan bağlanıyorsanız SQL Server çalıştıran konağın adıdır. Doğrudan SQL Server'ın çalıştığı konağa bağlanıyorsanız, bu parametreyi atlayabilir veya localhostkullanabilirsiniz. <StringPassword>, SA hesabının parolasıdır.

master veritabanını geri yükleme

  1. sqlcmd içinde aşağıdaki komutları çalıştırın. sqlcmd, betiğin sonunda GO olmasını bekler, bunu unutmayın.

    USE [master];
    GO
    
    RESTORE DATABASE [master] FROM DISK = N'/var/opt/mssql/data/master.bak'
        WITH FILE = 1,
        MOVE N'master' TO N'/var/opt/mssql/data/master.mdf',
        MOVE N'mastlog' TO N'/var/opt/mssql/data/mastlog.ldf',
        NOUNLOAD, REPLACE, STATS = 5;
    GO
    

    Önceki örnekte, master veritabanı yedekleme dosyasının yolu /var/opt/mssql/data/master.bak. Bu değeri, master veritabanı yedekleme dosyanızın doğru yoluna değiştirmelisiniz.

  2. Geri yükleme başarılı olursa aşağıdaki örneğe benzer bir çıktı görmeniz gerekir.

    Processed 456 pages for database 'master', file 'master' on file 1.
    Processed 5 pages for database 'master', file 'mastlog' on file 1.
    The master database has been successfully restored. Shutting down SQL Server.
    SQL Server is terminating this process.
    

SQL Server hizmetini yeniden başlatın

  1. SQL Server'ı yeniden başlatmak için aşağıdaki komutu çalıştırın.

    systemctl start mssql-server
    

Açıklamalar

bir master veritabanı yedeğini geri yüklerken, yedekleme alındıktan sonra örneğe eklenen mevcut kullanıcı veritabanları mastergeri yüklendikten sonra görünmez. Dosyalar hala depolama katmanında olmalıdır, bu nedenle bu veritabanlarını çevrimiçi hale getirmek için bu kullanıcı veritabanı dosyalarını el ile yeniden eklemeniz gerekir. Daha fazla bilgi için Veritabanı Eklemebölümüne bakın.