Aracılığıyla paylaş


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

Içinde SQL Server, FILENAME yan tümcesinde yeni dosya konumunu belirterek yeni bir konuma veri, günlük ve kullanıcı veritabanı dosyalarının tam metin kataloğu taşıyabilirsiniz alter VERİTABANI deyim.Bu yöntem aynı taşınma veritabanı dosyalarına uygulanır örnek SQL Server. Başka örnek için bir veritabanına taşımak için SQL Server veya başka bir sunucuya kullanın. yedek ve geri yükleme or ayırma ve operasyonlar ekleyebilirsiniz..

Not

Bazı özellikleri SQL Server Database Engine şeklini değiştirmek, Database Engine bilgileri veritabanı dosyaları depolar. Bu özellikleri belirli sürümleri için kısıtlanır SQL Server. Bu özellikler içeren BIR veritabanı için bir sürümünü taşınamıyor. SQL Server bunları desteklemiyor. Sys.dm_db_persisted_sku_features dinamik yönetimi görünüm, geçerli veritabanında etkin olan tüm sürümüne özgü özellikleri listelemek için kullanın.

Bu konudaki yordamlar, veritabanı dosyaları mantıksal adını gerektirir.Adı'nı edinmek için , query Ad sütunsys.master_files kataloğunu görüntüleyin.

Not

Bir veritabanı başka bir sunucuyu üzerine taşıdığınızda, kullanıcılar ve uygulamalar için tutarlı bir deneyim sağlamak için bazı veya tüm meta veritabanının yeniden gerekebilir.Daha fazla bilgi için bkz:Bir veritabanı başka bir sunucuda kullanılabilir yapma, meta veriler yönetme örnek.

Planlanan yerleştirme yordam

Bir veri taşımak veya planlı bir yeniden konumlandırma bir parçası olarak günlük dosyası hakkında bilgi için aşağıdaki adımları izleyin:

  1. Aşağıdaki çalıştırmak deyim.

    ALTER DATABASE database_name SET OFFLINE
    
  2. Dosya veya dosyaların yeni konuma taşıyın.

  3. Her dosya için aşağıdaki deyim çalışan taşındı.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' )
    
  4. Aşağıdaki çalıştırmak deyim.

    ALTER DATABASE database_name SET ONLINE
    
  5. Dosya değişikliği, aşağıdaki sorguyu çalıştırarak doğrulayın.

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

Zamanlanmış bir disk bakım için yerleştirme

Bir dosya, bir çizelgelenen disk bakım işleminin bir parçası yeniden konumlandırmak için , aşağıdaki adımları izleyin:

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

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
    
  2. örnek durdur SQL Server veya, bakım yapmak sistemi kapat. Daha fazla bilgi için bkz:Hizmetleri Durduruluyor.

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

  4. örnek yeniden başlatıldıktan SQL Server veya sunucu. Daha fazla bilgi için bkz:Başlangıç ve bu hizmetleri yeniden başlatılıyor.

  5. Dosya değişikliği, aşağıdaki sorguyu çalıştırarak 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 yordamı

Bir donanım hatası nedeniyle dosya taşınmış, dosyayı yeni bir konuma yeniden konumlandırmak için aşağıdaki adımları kullanın.

Important noteImportant Note:

Veritabanı başlatılamıyor, kuşkulu modunda veya unrecovered durumunda, yalnızca üyesi olduğu olan sysadmin sabit rolünün dosya taşıyabilirsiniz.

  1. örnek durdur SQL Server başlatılmışsa.

  2. örnek başlatın. SQL Server komut istemi isteminde aşağıdaki komutlardan birini girerek yalnızca ana kurtarma modunda.

    • Varsayılan (MSSQLSERVER) örnek için aşağıdaki komutu çalıştırın.

      NET START MSSQLSERVER /f /T3608
      
    • Adlandırılmış örnek için aşağıdaki komutu çalıştırın.

      NET START MSSQL$instancename /f /T3608
      

    Daha fazla bilgi için bkz:Nasıl Yapılır: Bir örnek, SQL Server (net komutları) başlatın..

  3. Taşınacak her dosya için kullanın. Sqlcmd komutları ya daSQL Server Management Studio aşağıdaki ifadeyi çalıştırmak için .

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

    Nasıl kullanılacağı hakkında daha fazla bilgi için Sqlcmd Bkz: programınıSqlcmd yardımcı programını kullanma.

  4. Çıkış Sqlcmd yardımcı programı ya daSQL Server Management Studio.

  5. örnek durdur SQL Server.

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

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

  8. Dosya değişikliği, aşağıdaki sorguyu çalıştırarak doğrulayın.

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

Tam metin kataloglarını taşıma

Bir tam metin kataloğu taşımak için aşağıdaki adımları kullanın.Yeni katalog konumu, yalnızca belirlediğiniz zaman, unutmayın. new_path yerine belirtildi new_path/os_file_name.

  1. Aşağıdaki çalıştırmak deyim.

    ALTER DATABASE database_name SET OFFLINE
    
  2. tam metin kataloğu yeni konuma taşıyın.

  3. Aşağıdaki çalıştırmak deyim yeri logical_name değer Ad sütunundasys.database_files and new_path Yeni katalog konumudur.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path')
    
  4. Aşağıdaki çalıştırmak deyim.

    ALTER DATABASE database_name SET ONLINE
    

Alternatif olarak, bir tam metin kataloğu taşımak için CREATE DATABASE ifadesinin FOR ATTACH yan tümce kullanabilirsiniz.Aşağıdaki örnek, bir tam metin kataloğu oluşturur AdventureWorks Veritabanı. tam metin kataloğu yeni bir konuma taşımak için AdventureWorks Veritabanı ilişkisi kesildi ve tam metin kataloğu fiziksel olarak yeni konuma taşınır. Daha sonra tam metin kataloğu yeni konumunu belirten veritabanına eklenir.

USE AdventureWorks;
CREATE FULLTEXT CATALOG AdvWksFtCat AS DEFAULT;
GO
USE master;
GO
--Detach the AdventureWorks database.
sp_detach_db AdventureWorks;
GO
--Physically move the full-text catalog to the new location.
--Attach the AdventureWorks database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks ON 
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\AdventureWorks_Data.mdf'), 
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\AdventureWorks_log.ldf'),
    (FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO

Örnekler

Aşağıdaki örnek taşır AdventureWorks Günlük dosyası için planlı bir yeniden konumlandırma bir parçası olarak yeni bir konum.

USE master;
GO
-- Return the logical file name.
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'AdventureWorks')
    AND type_desc = N'LOG';
GO
ALTER DATABASE AdventureWorks SET OFFLINE;
GO
-- Physically move the file to a new location.
-- In the following statement, modify the path specified in FILENAME to
-- the new location of the file on your server.
ALTER DATABASE AdventureWorks 
    MODIFY FILE ( NAME = AdventureWorks_Log, 
                  FILENAME = 'C:\NewLoc\AdventureWorks_Log.ldf');
GO
ALTER DATABASE AdventureWorks SET ONLINE;
GO
--Verify the new location.
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'AdventureWorks')
    AND type_desc = N'LOG';