Aracılığıyla paylaş


Kullanıcı veritabanlarını taşıma

Şunlar için geçerlidir: SQL Server

SQL Server'da, FILENAME deyiminin yan tümcesinde yeni dosya konumunu belirterek kullanıcı veritabanının veri, günlük ve tam metin katalog dosyalarını yeni bir konuma taşıyabilirsiniz. Bu yöntem, veritabanı dosyalarını aynı örnek SQL Server içinde taşımak için geçerlidir. Veritabanını başka bir SQL Server örneğine veya başka bir sunucuya taşımak için yedekleme ve geri yükleme ya da ayırma ve ekleme işlemlerini kullanın.

Uyarı

Bu makale, kullanıcı veritabanı dosyalarını taşımayı kapsar. Sistem veritabanı dosyalarını taşımak için bkz. Sistem veritabanlarını taşıma.

Değerlendirmeler

Bir veritabanını başka bir sunucu örneğine taşıdığınızda, kullanıcılara ve uygulamalara tutarlı bir deneyim sağlamak için veritabanının meta verilerinin bir kısmını veya tümünü yeniden oluşturmanız gerekebilir. Daha fazla bilgi için bkz. Veritabanını Başka Bir Sunucuda Kullanılabilir Hale Getirirken Meta Verileri Yönetme.

SQL Server Veritabanı Altyapısı'nın bazı özellikleri, Veritabanı Altyapısı'nın bilgileri veritabanı dosyalarında depolama biçimini değiştirir. Bu özellikler SQL Server'ın belirli sürümleriyle sınırlıdır. Bu özellikleri içeren bir veritabanı, bunları desteklemeyen bir SQL Server sürümüne taşınamaz. sys.dm_db_persisted_sku_features Geçerli veritabanında etkinleştirilen sürüme özgü tüm özellikleri listelemek için dinamik yönetim görünümünü kullanın.

Bu makaledeki yordamlar, veritabanı dosyalarının mantıksal adını gerektirir. Adı almak için , sys.master_files katalog görünümünde ad sütununu sorgular.

Tam metin katalogları, dosya sisteminde depolanmak yerine veritabanıyla tümleştirilir. Veritabanını taşıdığınızda tam metin katalogları otomatik olarak taşınır.

Uyarı

Windows hizmet hesaplarını ve izinlerini yapılandırma için hizmet hesabının dosya sistemindeki yeni dosya konumuna yönelik izinlere sahip olduğundan emin olun. Daha fazla bilgi için bkz. Veritabanı Altyapısı erişimi için dosya sistemi izinlerini yapılandırma.

Planlı yeniden konumlandırma prosedürü

Bir verileri veya günlük dosyasını planlı bir yeniden konumlandırmanın parçası olarak taşımak için şu adımları izleyin:

  1. Taşınacak her dosya için aşağıdaki deyimi çalıştırın.

    ALTER DATABASE database_name
        MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
    
  2. Veritabanını çevrimdışına almak için aşağıdaki deyimi çalıştırın.

    ALTER DATABASE database_name
        SET OFFLINE;
    

    Bu eylem veritabanına özel erişim gerektirir. Veritabanına başka bir bağlantı açıksa, tüm bağlantılar kapatılana kadar ALTER DATABASE ifadesi engellenir. Bu davranışı geçersiz kılmak için yan tümcesiniWITH <termination> kullanın. Örneğin, otomatik olarak geri almak ve veritabanına diğer tüm bağlantıları kesmek için şunu kullanın:

    ALTER DATABASE database_name
         SET OFFLINE
         WITH ROLLBACK IMMEDIATE;
    
  3. Dosyayı veya dosyaları yeni konuma taşıyın.

  4. Aşağıdaki deyimi çalıştırın.

    ALTER DATABASE database_name
        SET ONLINE;
    
  5. Aşağıdaki sorguyu çalıştırarak dosya değişikliğini doğrulayın.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    

Zamanlanmış disk bakımı için yeniden konumlandırma

Zamanlanmış disk bakım işleminin bir parçası olarak dosyayı yeniden dağıtmak için şu adımları izleyin:

  1. Taşınacak her dosya için aşağıdaki deyimi çalıştırın.

    ALTER DATABASE database_name
        MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
    
  2. Bakım yapmak için SQL Server örneğini durdurun veya sistemi kapatın. Daha fazla bilgi için bkz. SQL Server hizmetlerini başlatma, durdurma, duraklatma, sürdürme ve yeniden başlatma.

  3. Dosyayı veya dosyaları yeni konuma taşıyın.

  4. SQL Server örneğini veya sunucuyu yeniden başlatın. Daha fazla bilgi için bkz. SQL Server hizmetlerini başlatma, durdurma, duraklatma, sürdürme ve yeniden başlatma

  5. Aşağıdaki sorguyu çalıştırarak dosya değişikliğini doğrulayın.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    

Hata kurtarma prosedürü

Donanım hatası nedeniyle bir dosyanın taşınması gerekiyorsa, dosyayı yeni bir konuma değiştirmek için aşağıdaki adımları kullanın.

Önemli

Veritabanı başlatılamıyorsa, yani şüpheli modda veya kurtarılmamış bir durumdaysa, dosyayı yalnızca sysadmin sabit rol tanımı üyeleri taşıyabilir.

  1. Zaten başlatıldıysa SQL Server örneğini durdurun.

  2. Komut istemine masteraşağıdaki komutlardan birini girerek SQL Server örneğini yalnızca kurtarma modunda başlatın.

  3. Taşınacak her dosya için sqlcmd komutlarını veya SQL Server Management Studio'yu kullanarak aşağıdaki deyimi çalıştırın.

    ALTER DATABASE database_name
        MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');
    

    sqlcmd yardımcı programını kullanma hakkında daha fazla bilgi için bkz. sqlcmd - yardımcı programını kullanma.

  4. sqlcmd yardımcı programı veya SQL Server Management Studio'dan çıkın.

  5. SQL Server örneğini durdurun.

  6. Dosyayı veya dosyaları yeni konuma taşıyın.

  7. SQL Server örneğini başlatın. Örneğin şunu çalıştırın: NET START MSSQLSERVER.

  8. Aşağıdaki sorguyu çalıştırarak dosya değişikliğini doğrulayın.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'<database_name>');
    

Örnekler

Aşağıdaki örnek, AdventureWorks2025 günlük dosyasını planlanan yeniden konumlandırmanın bir parçası olarak yeni bir konuma taşır.

  1. master Veritabanı bağlamında olduğunuzdan emin olun.

    USE master;
    GO
    
  2. Mantıksal dosya adını döndürür.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'AdventureWorks2022')
          AND type_desc = N'LOG';
    GO
    
  3. Veritabanını çevrimdışı olarak ayarlayın.

    ALTER DATABASE AdventureWorks2022
        SET OFFLINE;
    GO
    
  4. Dosyayı fiziksel olarak yeni bir konuma taşıyın. Aşağıdaki deyimde, içinde FILENAME belirtilen yolu sunucunuzdaki dosyanın yeni konumuna değiştirin.

    ALTER DATABASE AdventureWorks2022
        MODIFY FILE (NAME = AdventureWorks2022_Log, FILENAME = 'C:\NewLoc\AdventureWorks2022_Log.ldf');
    GO
    
    ALTER DATABASE AdventureWorks2022
        SET ONLINE;
    GO
    
  5. Yeni konumu doğrulayın.

    SELECT name,
           physical_name AS CurrentLocation,
           state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'AdventureWorks2022')
          AND type_desc = N'LOG';