Ayırma ve ekleme kullanarak veritabanını yükseltme (Transact-SQL)

Şunlar için geçerlidir: SQL Server

Bu konuda, SQL Server'da veritabanını yükseltmek için ayırma ve ekleme işlemlerinin nasıl kullanılacağı açıklanmaktadır. SQL Server eklendikten sonra veritabanı hemen kullanılabilir ve otomatik olarak yükseltilir. Bu, veritabanının Database Engine eski bir sürümüyle kullanılmasını engeller. Ancak meta veri yükseltmesi, veritabanının veritabanı uyumluluk düzeyi ayarını etkilemez. Bu konunun devamında, Yükseltmeden Sonra Veritabanı Uyumluluk Düzeyi bölümünde daha fazla bilgi bulabilirsiniz.

Sınırlamalar ve Kısıtlamalar

  • Sistem veritabanları eklenemez.

  • veritabanları arası sahiplik zincirleme seçeneğini 0 olarak ayarlayarak, ekleme ve ayırma işlemleri veritabanı için veritabanları arası sahiplik zincirlemeyi devre dışı bırakır. Zincirleme özelliğini etkinleştirme hakkında bilgi için bkz. Çapraz veritabanı sahipliği zincirleme Sunucusu Yapılandırma Seçeneği.

  • Ayrılmış yerine kopyalanan çoğaltılmış veritabanını eklerken:

    • Veritabanını aynı sunucu örneğinin yükseltilmiş bir sürümüne eklerseniz, ekleme işlemi tamamlandıktan sonra çoğaltmayı yükseltmek için sp_vupgrade_replication yürütmeniz gerekir. Daha fazla bilgi için bkz. sp_vupgrade_replication (Transact-SQL).

    • Veritabanını farklı bir sunucu örneğine (sürümden bağımsız olarak) eklerseniz, ekleme işlemi tamamlandıktan sonra çoğaltmayı kaldırmak için sp_removedbreplication yürütmeniz gerekir. Daha fazla bilgi için bkz. sp_removedbreplication (Transact-SQL).

Recommendations

Bilinmeyen veya güvenilmeyen kaynaklardan veritabanları eklememenizi veya geri yüklememenizi öneririz. Bu tür veritabanları, istenmeyen Transact-SQL kodu yürütebilecek veya şemayı veya fiziksel veritabanı yapısını değiştirerek hatalara neden olabilecek kötü amaçlı kod içerebilir. Bilinmeyen veya güvenilmeyen bir kaynaktan veritabanı kullanmadan önce, veritabanında üretim dışı bir sunucuda DBCC CHECKDB'yi çalıştırın ve ayrıca veritabanında saklı yordamlar veya diğer kullanıcı tanımlı kodlar gibi kodu inceleyin.

Ayırma ve Ekleme Kullanarak Veritabanını Yükseltme

  1. Veritabanını ayır. Daha fazla bilgi için bkz. Veritabanını Ayırma.

  2. İsteğe bağlı olarak, ayrılmış veritabanı dosyasını veya dosyalarını ve günlük dosyasını veya dosyaları taşıyın.

    Yeni günlük dosyaları oluşturmayı amaçlasanız bile günlük dosyalarını veri dosyalarıyla birlikte taşımanız gerekir. Bazı durumlarda veritabanının yeniden bağlanması için mevcut günlük dosyaları gerekir. Bu nedenle, veritabanı bunlar olmadan başarıyla eklenene kadar tüm ayrılmış günlük dosyalarını her zaman saklayın.

    Note

    Günlük dosyasını belirtmeden veritabanını eklemeye kalkarsanız, ekleme işlemi günlük dosyasını orijinal konumunda arar. Günlüğün özgün kopyası bu konumda hala varsa, bu kopya eklenir. Özgün günlük dosyasını kullanmaktan kaçınmak için, yeni günlük dosyasının yolunu belirtin veya günlük dosyasının özgün kopyasını kaldırın (yeni konuma kopyaladıktan sonra).

  3. Kopyalanan dosyaları SQL Server örneğine ekleyin. Daha fazla bilgi için bkz. Veritabanı Ekleme.

Example

Aşağıdaki örnek, veritabanının bir kopyasını SQL Server önceki bir sürümünden yükseltmektedir. Transact-SQL deyimleri, bağlı olduğu sunucu örneğine bağlı bir Sorgu Düzenleyicisi penceresinde yürütülür.

  1. Aşağıdaki Transact-SQL deyimlerini yürüterek veritabanını ayırın:

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'MyDatabase';  
    GO  
    
  2. Seçtiğiniz yöntemi kullanarak verileri ve günlük dosyalarını yeni konuma kopyalayın.

    Important

    Üretim veritabanı için tercihen veritabanını ve işlem günlüğünü ayrı disklere yerleştirin. Bunlar farklı G/Ç ve dosya büyüme gereksinimlerini destekler ve bunları ayrı tutmak en iyi uygulama olarak kabul edilir.

    Ağ üzerinden uzak bilgisayardaki bir diske dosya kopyalamak için uzak konumun evrensel adlandırma kuralı (UNC) adını kullanın. UNC adı biçimindedir \\Servername\Sharename\Path\Filename. Yerel sabit diske dosya yazarken olduğu gibi, uzak disk üzerindeki bir dosyayı okumak veya yazmak için gereken uygun izinler SQL Server örneği tarafından kullanılan kullanıcı hesabına verilmelidir.

  3. Aşağıdaki Transact-SQL deyimini yürüterek taşınan veritabanını ve isteğe bağlı olarak günlüğünü ekleyin:

    USE master;  
    GO  
    CREATE DATABASE MyDatabase   
        ON (FILENAME = 'C:\MySQLServer\MyDatabase.mdf'),  
        (FILENAME = 'C:\MySQLServer\Database.ldf')  
        FOR ATTACH;  
    GO  
    

    SQL Server Management Studio'da, yeni eklenen bir veritabanı Nesne Gezgini'nde hemen görünmez. Veritabanını görüntülemek için Nesne Gezgini'nde Görünüm'e ve ardından Yenile'ye tıklayın. Veritabanları düğümü Nesne Gezgini'nde genişletildiğinde, yeni eklenen veritabanı artık veritabanları listesinde görünür.

İzleme: SQL Server Veritabanını Yükselttikten Sonra

Veritabanında tam metin dizinleri varsa, yükseltme işlemi upgrade_option sunucu özelliğinin ayarına bağlı olarak bunları içeri aktarır, sıfırlar veya yeniden oluşturur. Yükseltme seçeneği içe aktar (upgrade_option = 2) veya yeniden oluştur (upgrade_option = 0) olarak ayarlanmışsa, tam metin dizinleri yükseltme sırasında kullanılamayacaktır. Dizine alınan veri miktarına bağlı olarak içeri aktarma işlemi birkaç saat sürebilir ve yeniden derleme on kat daha uzun sürebilir. Ayrıca, yükseltme seçeneği içe aktarma olarak ayarlandığında, tam metin kataloğu kullanılamıyorsa ilişkili tam metin dizinlerinin yeniden oluşturulduğunu da unutmayın. upgrade_option sunucusu özelliğinin ayarını değiştirmek için sp_fulltext_service kullanın.

Yükseltmeden Sonra Veritabanı Uyumluluk Düzeyi

Yükseltmeden sonra, önceki uyumluluk düzeyi yeni sürümde desteklenmediği sürece, veritabanı uyumluluk düzeyi yükseltmeden önceki uyumluluk düzeyinde kalır. Bu durumda, yükseltilen veritabanı uyumluluk düzeyi desteklenen en düşük uyumluluk düzeyine ayarlanır.

Örneğin, bir SQL Server 2019 (15.x) örneğine eklemeden önce uyumluluk düzeyi 90 olan bir veritabanı eklerseniz, yükseltmeden sonra uyumluluk düzeyi 100 olarak ayarlanır ve bu, SQL Server 2019'da desteklenen en düşük uyumluluk düzeyidir (15.x). Daha fazla bilgi için bkz ALTER DATABASE . Uyumluluk Düzeyi (Transact-SQL).

Yükseltilen Sunucu Örneğinde Meta Verileri Yönetme

Kullanıcılara ve uygulamalara tutarlı bir deneyim sağlamak için başka bir sunucu örneğine veritabanı eklediğinizde, diğer sunucu örneğinde oturum açma bilgileri, işler ve izinler gibi veritabanı meta verilerinin bazılarını veya tümünü yeniden oluşturmanız gerekebilir. Daha fazla bilgi için bkz. Veritabanını Başka Bir Sunucu Örneğinde (SQL Server) Kullanılabilir Hale Getirirken Meta Verileri Yönetme.

Hizmet Ana Anahtarı ve Veritabanı Ana Anahtar Şifrelemesi 3DES'ten AES'ye değişir

SQL Server 2012 (11.x) ve üzeri sürümler, hizmet ana anahtarını (SMK) ve veritabanı ana anahtarını (DMK) korumak için AES şifreleme algoritmasını kullanır. AES, önceki sürümlerde kullanılan 3DES'ten daha yeni bir şifreleme algoritmasıdır. Bir veritabanı sql server'ın yeni bir örneğine ilk kez eklendiğinde veya geri yüklendiğinde, veritabanı ana anahtarının bir kopyası (hizmet ana anahtarı tarafından şifrelenir) henüz sunucuda depolanmaz. Veritabanı ana anahtarının (DMK) şifresini çözmek için OPEN MASTER KEY deyimini kullanmanız gerekir. DMK'nin şifresi çözüldükten sonra, sunucuya hizmet ana anahtarı (SMK) ile şifrelenmiş bir DMK kopyası sağlamak için ALTER MASTER KEY REGENERATE deyimini kullanarak gelecekte otomatik şifre çözmeyi etkinleştirme seçeneğiniz vardır. Bir veritabanı önceki bir sürümden yükseltildiğinde, DMK daha yeni AES algoritmasını kullanacak şekilde yeniden oluşturulmalıdır. DMK'yi yeniden oluşturma hakkında daha fazla bilgi için bkz ALTER MASTER KEY . (Transact-SQL). AES'ye yükseltmek için DMK anahtarını yeniden oluşturmak için gereken süre, DMK tarafından korunan nesne sayısına bağlıdır. AES'ye yükseltmek için DMK anahtarını yeniden oluşturmak yalnızca bir kez gereklidir ve anahtar döndürme stratejisinin bir parçası olarak gelecekteki yenilemeleri etkilemez.