Aracılığıyla paylaş


Sistem veritabanlarını yeniden oluşturma

Şunlar için geçerlidir: SQL Server

Ana, model, msdb veya kaynak sistem veritabanlarındaki bozulma sorunlarını düzeltmek veya varsayılan sunucu düzeyinde harmanlamayı değiştirmek için sistem veritabanları yeniden oluşturulmalıdır. Bu makalede, SQL Server'da sistem veritabanlarını yeniden oluşturmak için adım adım yönergeler sağlanır.

Bu makalenin dizinleri yeniden oluşturmayla ilgisi yok.

Sınırlamalar

master, model, msdbve tempdb sistem veritabanları yeniden oluşturulduğunda, veritabanları özgün konumlarında bırakılır ve yeniden oluşturulur. Rebuild deyiminde yeni bir harmanlama belirtilirse, sistem veritabanları bu harmanlama ayarı kullanılarak oluşturulur. Bu veritabanlarında yapılan tüm kullanıcı değişiklikleri kaybolur. Örneğin, master veritabanında kullanıcı tanımlı nesneleriniz, msdb içinde zamanlanmış işler veya model veritabanındaki varsayılan ayarlarında değişiklik yapmış olabilirsiniz.

Önkoşullar

Sistem veritabanlarını geçerli ayarlarına geri yükleyebilmek için sistem veritabanlarını yeniden oluşturmadan önce aşağıdaki görevleri gerçekleştirin.

  1. Sunucu genelindeki tüm yapılandırma değerlerini kaydedin.

    SELECT * FROM sys.configurations;
    
  2. SQL Server örneğine uygulanan tüm acil düzeltmeleri ve geçerli sıralama düzenini kaydedin. Sistem veritabanlarını yeniden derledikten sonra bu düzeltmeleri yeniden uygulamanız gerekir.

    SELECT
    SERVERPROPERTY('ProductVersion ') AS ProductVersion,
    SERVERPROPERTY('ProductLevel') AS ProductLevel,
    SERVERPROPERTY('ResourceVersion') AS ResourceVersion,
    SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,
    SERVERPROPERTY('Collation') AS Collation;
    
  3. Sistem veritabanları için tüm verilerin ve günlük dosyalarının geçerli konumunu kaydedin. Sistem veritabanlarını yeniden oluşturmak, tüm sistem veritabanlarını özgün konumlarına yükler. Sistem veritabanı verilerini veya günlük dosyalarını farklı bir konuma taşıdıysanız, dosyaları yeniden taşımanız gerekir.

    SELECT name, physical_name AS current_file_location
    FROM sys.master_files
    WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
    
  4. Mevcut master, model ve msdb veritabanlarının yedeklemesini bulun.

  5. SQL Server örneği çoğaltma dağıtımcısı olarak yapılandırılmışsa, distribution veritabanının geçerli yedeğini bulun.

  6. Sistem veritabanlarını yeniden oluşturmak için uygun izinlere sahip olduğunuzdan emin olun. Bu işlemi gerçekleştirmek için sysadmin sabit sunucu rolünün üyesi olmanız gerekir. Daha fazla bilgi için bkz. Server-Level Rolleri.

  7. , , mastermodel veri ve günlük şablonu dosyalarının msdbkopyalarının yerel sunucuda mevcut olduğunu doğrulayın. Şablon dosyalarının varsayılan konumudur C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\Binn\Templates ( <xx> burada yüklediğiniz sürümdür). Bu dosyalar yeniden oluşturma işlemi sırasında kullanılır ve Kurulumun başarılı olması için mevcut olması gerekir. Bunlar eksikse, Kurulum'un Onar özelliğini çalıştırın veya dosyaları yükleme medyanızdan el ile kopyalayın. Yükleme medyası üzerindeki dosyaları bulmak için uygun platform dizinine (x86 veya x64) gidin ve ardından adresine setup\sql_engine_core_inst_msi\Pfiles\SqlServr\MSSQL.X\MSSQL\Binn\Templatesgidin.

Sistem veritabanlarını yeniden oluşturma

Aşağıdaki yordam , , mastermodelve msdb sistem veritabanlarını tempdbyeniden oluşturur. Yeniden oluşturulacak sistem veritabanlarını belirtemezsiniz. Kümelenmiş örnekler için bu yordam etkin düğümde gerçekleştirilmelidir ve yordamı gerçekleştirmeden önce ilgili küme uygulama grubundaki SQL Server kaynağı çevrimdışına alınmalıdır.

Bu yordam veritabanını yeniden oluşturmaz resource . Bu makalenin devamında kaynak sistemi veritabanını yeniden oluşturma bölümüne bakın.

SQL Server örneği için sistem veritabanlarını yeniden oluşturma

  1. SQL Server yükleme medyasını disk sürücüsüne yerleştirin veya bir komut isteminden dizinleri dosyanın yerel sunucudaki konumuna setup.exe değiştirin. SQL Server 2022 (16.x) için, sunucudaki varsayılan konum şeklindedir C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\SQLServer2022.

  2. Komut istemi penceresinde aşağıdaki komutu girin. İsteğe bağlı parametreleri göstermek için köşeli ayraçlar kullanılır. Köşeli ayraçları girmeyin. Kullanıcı Hesabı Denetimi (UAC) etkinleştirilmiş bir Windows işletim sistemi kullanırken, Kurulum'u çalıştırmak için yükseltilmiş ayrıcalıklar gerekir. Komut istemi Yönetici olarak çalıştırılmalıdır.

    setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName /SQLSYSADMINACCOUNTS=accounts [ /SAPWD= StrongPassword ] [ /SQLCOLLATION=CollationName ]
    
    Parametre adı Description
    /QUIET veya /Q Kurulumun herhangi bir kullanıcı arabirimi olmadan çalıştırılması gerektiğini belirtir.
    /ACTION=REBUILDDATABASE Kurulum'un sistem veritabanlarını yeniden oluşturması gerektiğini belirtir.
    /INSTANCENAME=InstanceName SQL Server örneğinin adı. Varsayılan örnek için MSSQLSERVER girin.
    /SQLSYSADMINACCOUNTS=hesaplar Sysadmin sabit sunucu rolüne eklenecek Windows gruplarını veya tek tek hesapları belirtir. Birden fazla hesap belirtirken, hesapları boş bir alanla ayırın. Örneğin, BUILTIN\Administrators MyDomain\MyUser girin. Hesap adı içinde boş alan içeren bir hesap belirtirken, hesabı çift tırnak içine alın. Örneğin , NT AUTHORITY\SYSTEM girin.
    [ /SAPWD=StrongPassword ] SQL Server sa hesabının parolasını belirtir. Örnek Karma Kimlik Doğrulaması (SQL Server ve Windows Kimlik Doğrulaması) modunu kullanıyorsa bu parametre gereklidir.

    Güvenlik notu:sa hesabı iyi bilinen bir SQL Server hesabıdır ve genellikle kötü amaçlı kullanıcılar tarafından hedeflenmiştir. Sa oturum açma bilgileri için güçlü bir parola kullanmanız kritik önem taşır.

    Windows Kimlik Doğrulama modu için bu parametreyi belirtmeyin.
    [ /SQLCOLLATION=CollationName ] Yeni bir sunucu düzeyinde sıralama düzenini belirtir. Bu parametre isteğe bağlıdır. Belirtilmediğinde, geçerli sunucu harmanlaması kullanılır.

    Önemli: Sunucu düzeyinde harmanlamanın değiştirilmesi, mevcut kullanıcı veritabanlarının harmanlamasını değiştirmez. Yeni oluşturulan tüm kullanıcı veritabanları varsayılan olarak yeni harmanlamayı kullanır.

    Daha fazla bilgi için bkz. Sunucu Harmanlamasını Ayarlama veya Değiştirme.
    [ /SQLTEMPDBFILECOUNT=DosyaSayısı (NumberOfFiles) ] Veri dosyalarının tempdb sayısını belirtir. Bu değer 8'e veya çekirdek sayısı (hangisi daha yüksekse) artırılabilir.

    Varsayılan değer: 8 veya çekirdek sayısı (hangisi daha düşükse).
    [ /SQLTEMPDBFILESIZE=FileSizeInMB ] Her tempdb veri dosyasının başlangıç boyutunu MB cinsinden belirtir. Kurulum, boyutun 1024 MB'a kadar olmasını sağlar.

    Varsayılan değer: 8
    [ /SQLTEMPDBFILEGROWTH=FileSizeInMB ] Her tempdb veri dosyasının dosya büyüme artışını MB cinsinden belirtir. 0 değeri, otomatik büyümenin kapalı olduğunu ve ek alan olmadığını gösterir. Kurulum, boyutun 1024 MB'a kadar olmasını sağlar.

    Varsayılan değer: 64
    [ /SQLTEMPDBLOGFILESIZE=FileSizeInMB ] Günlük dosyasının ilk boyutunu tempdb MB cinsinden belirtir. Kurulum, boyutun 1024 MB'a kadar olmasını sağlar.

    Varsayılan değer: 8.

    İzin verilen aralık: Min = 8, max = 1024.
    [ /SQLTEMPDBLOGFILEGROWTH=FileSizeInMB ] tempdb günlüğü dosya boyutunun büyüme miktarını MB cinsinden belirtir. 0 değeri, otomatik büyümenin kapalı olduğunu ve ek alan olmadığını gösterir. Kurulum, boyutun 1024 MB'a kadar olmasını sağlar.

    Varsayılan değer: 64

    İzin verilen aralık: Min = 8, max = 1024.
    [ /SQLTEMPDBDIR=Dizinler ] Veri dosyalarının dizinlerini tempdb belirtir. Birden fazla dizin belirtirken, dizinleri boş bir boşlukla ayırın. Birden çok dizin belirtilirse, tempdb veri dosyaları dizinler arasında dönüşümlü olarak dağıtılır.

    Varsayılan değer: Sistem Veri Dizini
    [ /SQLTEMPDBLOGDIR=Dizin ] tempdb log dosyasının dizinini belirtir.

    Varsayılan değer: Sistem Veri Dizini
  3. Kurulum sistem veritabanlarını yeniden derlemeyi tamamladığında, ileti olmadan komut istemine döner. İşlemin başarıyla tamamlandığını doğrulamak için Summary.txt günlük dosyasını inceleyin. Bu dosya konumunda C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logsbulunur.

  4. RebuildDatabase senaryosu sistem veritabanlarını siler ve temiz bir durumda yeniden yükler. Dosya sayısı ayarı tempdb kalıcı olmadığından, kurulum sırasında dosya sayısı tempdb değeri bilinmez. Bu nedenle, ebuildDatabase senaryosu okunacak dosyaların sayısını tempdb bilmez. SQLTEMPDBFILECOUNT parametresiyle dosya sayısının tempdb değerini yeniden sağlayabilirsiniz. Parametre sağlanmazsa, RebuildDatabase varsayılan bir sayıdaki tempdb dosyasını ekler. Bu, CPU sayısı veya 8 (hangisi daha düşükse) kadar tempdb dosyadır.

Yeniden oluşturma sonrası görevler

Veritabanını yeniden derledikten sonra aşağıdaki ek görevleri gerçekleştirmeniz gerekebilir:

  • , masterve model veritabanlarının msdben son tam yedeklemelerini geri yükleyin. Daha fazla bilgi için bkz. Sistem Veritabanlarını (SQL Server) Yedekleme ve Geri Yükleme.

    Önemli

    Sunucu harmanlamasını değiştirdiyseniz sistem veritabanlarını geri yüklemeyin. Bunun yapılması, yeni harmanlamayı önceki harmanlama ayarıyla değiştirir.

    Yedekleme kullanılamıyorsa veya geri yüklenen yedekleme geçerli değilse eksik girdileri yeniden oluşturun. Örneğin, kullanıcı veritabanlarınız, yedekleme cihazlarınız, SQL Server oturum açma bilgileriniz, bitiş noktalarınız vb. için tüm eksik girişleri yeniden oluşturun. Girdileri yeniden oluşturmanın en iyi yolu, bunları oluşturan özgün betikleri çalıştırmaktır.

    Önemli

    Betiklerinizin kişiler tarafından yetkisiz olarak değiştirilmesini önlemek için bunların güvenliğini sağlamanızı öneririz.

  • SQL Server örneği çoğaltma dağıtımcısı olarak yapılandırılmışsa veritabanını geri yüklemeniz distribution gerekir. Daha fazla bilgi için bkz. Çoğaltılan Veritabanlarını Yedekleme ve Geri Yükleme.

  • Sistem veritabanlarını daha önce kaydettiğiniz konumlara taşıyın. Daha fazla bilgi için bkz. Sistem Veritabanlarını Taşıma.

  • Sunucu genelindeki yapılandırma değerlerinin daha önce kaydettiğiniz değerlerle eşleştiğinden emin olun.

Kaynak veritabanını yeniden oluşturma

Aşağıdaki yordam sistem veritabanını yeniden oluşturur resource . Veritabanını yeniden resource oluşturduğunuzda, tüm hızlı düzeltmeler kaybolur ve bu nedenle yeniden uygulanması gerekir.

Kaynak sistemi veritabanını yeniden oluşturma

  1. Dağıtım medyasından SQL Server Kurulum programını (setup.exe) başlatın.

  2. Sol gezinti alanında Bakım'ı ve ardından Onar'ı seçin.

  3. Sisteminizde önkoşulların yüklü olduğundan ve bilgisayarın Kurulum doğrulama kurallarını geçtiğinden emin olmak için kurulum destek kuralı ve dosya yordamları çalıştırılır. Devam etmek için Tamam'ı veya Yükle'yi seçin.

  4. Örnek Seç sayfasında, onaracak örneği seçin ve ardından İleri'yi seçin.

  5. Onarım kuralları, işlemi doğrulamak için çalışır. Devam etmek için İleri’yi seçin.

  6. Onarıma Hazır sayfasında Onar'ı seçin. Tamamlandı sayfası işlemin tamamlandığını gösterir.

Yeni bir msdb veritabanı oluşturma

msdb veritabanı zarar görmüş veya şüpheliyse ve veritabanının msdb bir yedeğine sahip değilseniz, betiği kullanarak msdb, yeni bir instmsdb oluşturabilirsiniz.

Uyarı

instmsdb.sql betiğini kullanarak msdb veritabanını yeniden oluşturmak, msdb'de depolanan işler, uyarılar, operatörler, bakım planları, yedekleme geçmişi, Politika Tabanlı Yönetim ayarları, Veritabanı Postası, Performans Veri Ambarı gibi tüm bilgileri ortadan kaldıracaktır.

  1. SQL Server Aracısı, SSRS, SSIS ve veri deposu olarak SQL Server kullanan tüm uygulamalar dahil olmak üzere Veritabanı Altyapısı'na bağlanan tüm hizmetleri durdurun.

  2. komutunu kullanarak SQL Server'ı komut satırından başlatın:

    NET START MSSQLSERVER /T3608
    

    Daha fazla bilgi için bkz. Başlat, Durdur, Duraklat, Sürdür, Veritabanı Altyapısını Yeniden Başlat, SQL Server Aracısı veya SQL Server Tarayıcı Hizmeti. İzleme bayrağı 3608 hakkında bilgi için bkz. TF3608.

  3. Başka bir komut satırı penceresinde aşağıdaki komutu yürüterek veritabanını ayırın msdb ve yerine SQL Server örneğini yazın <servername> :

    SQLCMD -E -S<servername> -dmaster -Q"EXEC sp_detach_db msdb"
    
  4. Windows Gezgini'ni kullanarak veritabanı dosyalarını yeniden adlandırın msdb . Varsayılan olarak bunlar SQL Server örneğinin VERİ alt klasöründedir.

  5. SQL Server Configuration Manager'ı kullanarak Veritabanı Altyapısı hizmetini ek izleme bayrakları olmadan normal şekilde durdurun ve yeniden başlatın.

  6. Komut istemi penceresinde SQL Server'a bağlanın ve komutunu yürütebilirsiniz:

    SQLCMD -E -S<servername> -i"C:\Program Files\Microsoft SQL Server\MSSQLXX.INSTANCE_NAME\MSSQL\Install\instmsdb.sql" -o"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Install\instmsdb.out"
    

    <servername> değerini Veritabanı Altyapısı örneği ile değiştirin. SQL Server örneğinin dosya sistemi yolunu kullanın. Ayrıca MSSQLXX.INSTANCE_NAME değerini, sürümünüze ve örneğinize karşılık gelen dizinle değiştirin.

  7. Windows Not Defteri'ni instmsdb.out kullanarak dosyayı açın ve çıkışta hata olup olmadığını denetleyin.

  8. Örnekte yüklü olan tüm CU'ları yeniden uygulayın; bu da veritabanınızı msdb geçerli CU düzeyine yükseltecektir.

  9. İş, uyarı ve diğer öğeler gibi veritabanında depolanan msdb kullanıcı içeriğini yeniden oluşturun.

  10. Veritabanını yedekleyin msdb .

Tempdb veritabanını yeniden oluşturma

tempdb Veritabanı zarar görmüş veya şüpheliyse ve veritabanı altyapısı başlatılamıyorsa, tüm sistem veritabanlarını yeniden tempdb oluşturmanıza gerek kalmadan yeniden oluşturabilirsiniz.

  1. Eksik değilse geçerli tempdb.mdf ve templog.ldf dosyaları yeniden adlandırın.

  2. sqlservr uygulamasını kullanarak SQL Server'ı komut isteminden başlatın.

    sqlservr -c -f -T3608 -T4022 -s <instance> -mSQLCMD
    

    Varsayılan örnek adı için MSSQLSERVER kullanın, adlandırılmış örnek için MSSQL$<instance_name> kullanın. İz sürme bayrağı 4022, başlangıç saklı yordamlarının yürütülmesini devre dışı bırakır. yalnızca -mSQLCMDsqlcmd.exe sunucuya bağlanmasına izin verir. Daha fazla bilgi için bkz. Diğer Başlangıç Seçenekleri.

    Uyarı

    SQL Server başlatıldıktan sonra komut istemi penceresinin açık kaldığından emin olun. Komut istemi penceresinin kapatılması işlemi sonlandırır.

  3. sqlcmd kullanarak sunucuya bağlanın ve veritabanının durumunu tempdb sıfırlamak için aşağıdaki saklı yordamı kullanın.

    exec master..sp_resetstatus tempdb
    
  4. Komut istemi penceresine basarak Ctrl+C sunucuyu kapatın.

  5. SQL Server hizmetini yeniden başlatın. Bu, yeni bir veritabanı dosyaları kümesi tempdb oluşturur ve veritabanını kurtarır tempdb .

Yeniden oluşturma hatalarını giderme

Komut istemi penceresinde söz dizimi ve diğer çalışma zamanı hataları görüntülenir. Aşağıdaki söz dizimi hataları için Kurulum deyimini inceleyin:

  • Her parametre adının önünde eğik çizgi işareti (/) eksik.

  • Parametre adı ile parametre değeri arasında eşittir işareti (=) eksik.

  • Parametre adı ile eşittir işareti arasında boş boşluklar olması.

  • Söz diziminde belirtilmeyen virgül (,) veya diğer karakterlerin varlığı.

Yeniden oluşturma işlemi tamamlandıktan sonra, SQL Server günlüklerini olası hatalar için kontrol edin. Varsayılan günlük konumu şeklindedir C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Logs. Yeniden oluşturma işleminin sonuçlarını içeren günlük dosyasını bulmak için, komut isteminden dizinleri Günlükler klasörüne değiştirin ve komutunu çalıştırın findstr /s RebuildDatabase summary*.*. Bu arama, sistem veritabanlarını yeniden oluşturma sonuçlarını içeren tüm log dosyalarını gösterir. Günlük dosyalarını açın ve ilgili hata iletileri için inceleyin.