Aracılığıyla paylaş


Linux'ta SQL Server sorunlarını giderme

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

Bu makalede, Linux'ta veya Linux kapsayıcısında çalışan SQL Server sorunlarının nasıl giderleneceği açıklanır. Linux'ta SQL Server sorunlarını giderirken desteklenen özellikleri ve bilinen sınırlamaları gözden geçirmeyi unutmayın:

  • Linux üzerinde SQL Server 2022 için Sürüm notları
  • Linux üzerinde SQL Server 2019 için Sürüm notları
  • Linux üzerinde SQL Server 2017 için Sürüm notları

Sıkça sorulan soruların yanıtları için Linux üzerinde SQL Server SSSbölümüne bakın.

Bağlantı hatalarını giderme

Linux SQL Server örneğine bağlanmakta güçlük çekiyorsanız denetlenecek birkaç şey vardır.

  • kullanarak localhostyerel olarak bağlanamıyorsanız bunun yerine 127.0.0.1 IP adresini kullanmayı deneyin. localhost öğesinin bu adresle düzgün bir şekilde eşlenmemiş olması mümkün.

  • Sunucu adının veya IP adresinin istemci makinenizden erişilebilir olduğunu doğrulayın.

    Ubuntu makinenizin IP adresini bulmak için aşağıdaki örnekte olduğu gibi komutunu çalıştırabilirsiniz ifconfig :

    sudo ifconfig eth0 | grep 'inet addr'
    

    Red Hat için komutunu aşağıdaki örnekte olduğu gibi kullanabilirsiniz ip addr :

    sudo ip addr show eth0 | grep "inet"
    

    Tavsiye

    Bu tekniğin bir özel durumu Azure VM'leriyle ilgilidir. Azure VM'leri için Azure portalında VM'nin genel IP'sini bulun.

  • Varsa, güvenlik duvarında SQL Server bağlantı noktasını (varsayılan 1433) açıp açmadığınızdan emin olun.

  • Azure VM'leri için, varsayılan SQL Server bağlantı noktası için bir ağ güvenlik grubu kuralına sahip olup olmadığınızı denetleyin.

  • Kullanıcı adının ve parolanın yazım hatası, ek boşluk veya yanlış büyük/küçük harf içermediğini doğrulayın.

  • Protokol ve bağlantı noktası numarasını aşağıdaki örnekte olduğu gibi sunucu adıyla açıkça ayarlamayı deneyin: tcp:servername,1433.

  • Ağ bağlantısı sorunları, bağlantı hatalarına ve zaman aşımlarına da neden olabilir. Bağlantı bilgilerinizi ve ağ bağlantınızı doğruladıktan sonra bağlantıyı yeniden deneyin.

SQL Server hizmetini yönetme

Aşağıdaki bölümde SQL Server Linux kapsayıcılarının yürütülmesinin nasıl yönetileceğini gösterilmektedir. Linux hizmetlerini yönetmek için bkz. Linux üzerinde SQL Server hizmetlerini başlatma, durdurma ve yeniden başlatma.

SQL Server Linux kapsayıcısının yürütülmesini yönetme

Aşağıdaki komutu çalıştırarak en son oluşturulan SQL Server Linux kapsayıcısının durumunu ve kapsayıcı kimliğini alabilirsiniz (Kimlik sütunun CONTAINER ID altındadır):

sudo docker ps -l

Aşağıdaki komutları kullanarak SQL Server hizmetini gerektiği gibi durdurabilir veya yeniden başlatabilirsiniz:

sudo docker stop <container ID>
sudo docker restart <container ID>

Tavsiye

Linux kapsayıcıları için daha fazla sorun giderme ipucu için bkz. SQL Server Docker kapsayıcıları sorunlarını giderme.

Günlük dosyalarına erişme

SQL Server Veritabanı Altyapısı, hem Linux hem de kapsayıcı yüklemelerindeki /var/opt/mssql/log/errorlog dosyasına günlük tutar. Bu dizine göz atmak için süper kullanıcı modunda olmanız gerekir.

Yükleyici burada günlüğe kaydeder: /var/opt/mssql/setup-<time stamp representing time of install>errorlog UTF-16 uyumlu herhangi bir araçla, örneğin vim veya cat ile dosyalara şöyle göz atabilirsiniz:

sudo cat errorlog

İsterseniz, aşağıdaki komutla dosyaları daha fazla veya daha az okumak için UTF-8'e dönüştürebilirsiniz:

sudo iconv -f UTF-16LE -t UTF-8 <errorlog> -o <output errorlog file>

Genişletilmiş olaylar

Genişletilmiş olaylar sql komutuyla sorgulanabilir. Daha fazla bilgi için bkz. genişletilmiş olaylar.

Çökme dökümleri

Linux'ta günlük dizininde dökümleri arayın. Linux Core dökümleri (/var/opt/mssql/log uzantı) veya SQL minidökmeler (.tar.gz2 uzantı) için .mdmp dizini altında kontrol edin.

Örneğin, çekirdek dökümlerini görüntülemek için:

sudo ls /var/opt/mssql/log | grep .tar.gz2

SQL dökümleri için şu betiği kullanın:

sudo ls /var/opt/mssql/log | grep .mdmp

SQL Server'ı en az yapılandırmada veya tek kullanıcı modunda başlatma

SQL Server'ı en az yapılandırma modunda başlatma

Yapılandırma değeri ayarı (örneğin, aşırı işleme belleği) sunucunun başlatılmasını engelliyorsa bu mod kullanışlıdır.

sudo -u mssql /opt/mssql/bin/sqlservr -f

SQL Server'ı tek kullanıcı modunda başlatma

Bazen başlangıç seçeneğini -mkullanarak sql server örneğini tek kullanıcı modunda başlatmanız gerekebilir. Daha fazla bilgi için bkz. başlangıç parametreleri. Örneğin, sunucu yapılandırma seçeneklerini değiştirmek veya bozuk master bir veritabanını veya başka bir sistem veritabanını kurtarmak isteyebilirsiniz.

Örneğin, SQL Server'ı tek kullanıcı modunda başlatmak için aşağıdaki betiği kullanın:

sudo -u mssql /opt/mssql/bin/sqlservr -m

Bu betik SQL Server'ı sqlcmd ile tek kullanıcı modunda başlatır:

sudo -u mssql /opt/mssql/bin/sqlservr -m sqlcmd

Gelecekteki başlatma sorunlarını önlemek için linux üzerinde SQL Server'ı her zaman kullanıcıyla mssql başlatmanız gerekir. Örneğin: sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]

SQL Server'ı yanlışlıkla başka bir kullanıcıyla başlatırsanız, SQL Server'ı mssql ile başlatmadan önce SQL Server veritabanı dosyalarının sahipliğini kullanıcıya geri değiştirmeniz gerekir. Örneğin, altındaki /var/opt/mssql tüm veritabanı dosyalarının sahipliğini kullanıcıya değiştirmek için mssql aşağıdaki komutu çalıştırın:

chown -R mssql:mssql /var/opt/mssql/

Sistem veritabanlarını yeniden oluşturma

Son çare olarak, master ve model veritabanlarını varsayılan sürümlere yeniden oluşturmayı seçebilirsiniz.

Uyarı

Bu işlem tehlikelidir, çünkü kullanıcı veritabanlarınız hakkında bilgiler de dahil yapılandırdığınız tüm SQL Server sistem verilerini silebilirsiniz (ancak kullanıcı veritabanlarının kendisi değil).

Kullanıcı veritabanlarını daha sonra örneğe eklemeniz gerekir. Ayrıca aşağıdakiler dahil olmak üzere sistem veritabanlarında depolanan diğer bilgileri de siler:

  • veritabanı ana anahtarı (DMK) bilgileri
  • Yüklenmiş tüm sertifikalar master içinde.
  • hesabın sa parolası
  • işle ilgili bilgiler msdb kaynağından
  • Veritabanı Posta bilgileri msdb
  • sp_configure Seçenekler

Sertifikalarınız ve özel anahtarlarınız da yedeklenmediği sürece saydam veri şifrelemesi (TDE) ile şifrelenmiş kullanıcı veritabanlarını yeniden ekleyemezsiniz.

Bu adımları yalnızca etkilerini anlıyorsanız kullanın.

  1. SQL Server Veritabanı Altyapısını Durdurma

    sudo systemctl stop mssql-server
    
  2. sqlservr'ıforce-setup parametresiyle çalıştırma

    sudo -u mssql /opt/mssql/bin/sqlservr --force-setup
    

    Gelecekteki başlatma sorunlarını önlemek için linux üzerinde SQL Server'ı her zaman kullanıcıyla mssql başlatmanız gerekir.

  3. "Kurtarma tamamlandı" iletisini gördükkten sonra Ctrl+C tuşlarına basın. Bu işlem SQL Server'ın kapatılmasını sağlar.

  4. Parolayı sa yeniden ayarlayın.

    sudo /opt/mssql/bin/mssql-conf set-sa-password
    

    Dikkat

    Parolanız,SQL Server varsayılan parola 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.

  5. SQL Server'ı başlatın ve tüm kullanıcı veritabanlarını geri yükleme veya yeniden ekleme dahil olmak üzere sunucuyu yeniden yapılandırın.

    sudo systemctl start mssql-server
    

Performansı geliştirme

Veritabanı tasarımı, donanım ve iş yükü talepleri dahil olmak üzere performansı etkileyen birçok faktör vardır. Performansı geliştirmek istiyorsanız linux üzerinde SQL Server için performans en iyi yöntemleri ve yapılandırma yönergeleri makalesindeki en iyi yöntemleri gözden geçirerek başlayın. Ardından performans sorunlarını gidermek için kullanılabilir araçlardan bazılarını keşfedin.

Yaygın sorunlar

  1. Uzak SQL Server örneğine bağlanamazsınız.

    Linux üzerinde SQL Server'a bağlanma makalesinin sorun giderme bölümüne bakın.

  2. Hata iletisiyle karşılaşırsınız: ERROR: Hostname must be 15 characters or less.

    Bu, SQL Server paketini yüklemeye çalışan makinenin adı 15 karakterden uzun olduğunda oluşan bilinen bir sorundur. Şu anda makinenin adını değiştirmek dışında bir geçici çözüm yoktur. Hem /etc/hostname hem de /etc/hosts düzenleyerek, ana bilgisayar adını değiştirerek, her dosyayı kaydederek ve bilgisayarı yeniden başlatarak bunu yapabilirsiniz.

  3. Sistem yöneticisi (sa) parolası sıfırlanmalıdır ve bu da SQL Server hizmetini geçici olarak durdurur.

    Parolayı sa unutursanız veya başka bir nedenle sıfırlamanız gerekirse aşağıdaki adımları izleyin.

    Konak terminalinde oturum açın, aşağıdaki komutları çalıştırın ve parolayı sıfırlamak sa için istemleri izleyin:

    sudo systemctl stop mssql-server
    sudo /opt/mssql/bin/mssql-conf setup
    

    Dikkat

    Parolanız,SQL Server varsayılan parola 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.

  4. Parolalardaki özel karakterler hatalara veya oturum açma hatalarına neden olabilir.

    SQL Server parolasında bazı karakterler kullanıyorsanız, Bunları Linux komut satırında kullanırken ters eğik çizgiyle kaçış yapmanız gerekebilir. Örneğin, bir terminal komutu/kabuk betiğinde kullandığınızda dolar işaretinden ($) kaçmalısınız:

    • Çalışmaz:

      sudo sqlcmd -S myserver -U sa -P Test$$
      
    • Çalışır mı:

      sqlcmd -S myserver -U sa -P Test\$\$
      

Yardım alın

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.