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

De SQL Server, tam metin kataloğu dosyaları, bir kullanıcı veritabanı veri ve günlük yeni bir konuma dosya adı yan tümce tümce tümcesinde yeni dosya konumunu belirterek taşıma alter database deyim.Bu yöntem içinde aynı veritabanı dosyalarını taşıma için geçerlidir örnek SQL Server.Bir veritabanı başka bir yere taşımak için örnek , SQL Server veya başka bir sunucuya yedek ve geri yükleme veya Ayır ve iliştir işlemleri.

Not

Bazı özellikleri, SQL Server Veritabanı Altyapısı şeklini değiştirmek, Veritabanı Altyapısı depolar bilgilerini veritabanı dosyaları.Bu özellikler belirli sürümleri için Yasak SQL Server.Bu özellikler içeren bir veritabanı bir sürüme taşınamaz SQL Server , bunları desteklemeyen.Use sys.dm_db_persisted_sku_features Dinamik yönetim görünümü edition özgü tüm özellikleri geçerli veritabanı etkin listelemek için

Bu konudaki yordamlarda, iste mantıksal ad veritabanı dosyaları.Sorgu adı almak için name sütun , sys.master_files Katalog görünümü.

Not

Bir veritabanı başka bir sunucu örnek üzerine taşıdığınızda, kullanıcılar ve uygulamalar, tutarlı bir deneyim sağlamak için bazıları veya tümü için meta veriler veritabanına yeniden oluşturmanız gerekebilir.Daha fazla bilgi için bkz: Bir veritabanı başka bir sunucu örneği üzerinde kullanılabilir yapma olduğunda meta veri yönetme.

Planlı yerleştirme yordam

Planlı yerleştirme bir parçası olarak günlük dosyası ya da bir veri taşımak için aşağıdaki adımları izleyin:

  1. Aşağıdaki komutu çalıştırın deyim.

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

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

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );
    
  4. Aşağıdaki komutu çalıştırın 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ış Disk bakım için yerleştirme

Zamanlanmış disk bakım işleminin bir parçası bir dosya konumunu değiştirmek için aşağıdaki adımları izleyin:

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

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );
    
  2. Stop örnek , SQL Server ya da gerçekleştirilecek sistemi KapatBakım. Daha fazla bilgi için bkz: Hizmetleri durdurma.

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

  4. Yeniden örnek , SQL Server veya sunucu.Daha fazla bilgi için bkz: Başlangıç ve hizmetlerini yeniden başlatma.

  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şınması, yeni bir konuma dosya konumunu değiştirmek için aşağıdaki adımları kullanın.

Önemli notÖnemli

Veritabanı başlatılamıyor, yani şüpheli modunda ya da kurtarılmamış durumda, yalnızca üyesi olduğu sysadmin sabit rolü taşıyabilirsiniz dosya.

  1. Stop örnek , SQL Server onu başlarsa.

  2. Başlat örnek , SQL Server komut istemi 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.

  3. Taşınacak her dosya için kullanmak sqlcmd komutları veya SQL Server Management Studio çalışacak aşağıdaki deyim.

    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 yardımcı programı Bkz: SQLcmd yardımcı programını kullanma.

  4. Çıkış sqlcmd yardımcı programını veya SQL Server Management Studio.

  5. Stop the örnek of SQL Server.

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

  7. Başlat örnek , 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 taşıma

Tam metin kataloğu taşımak için aşağıdaki adımları kullanın.Yeni katalog konumu, yalnızca belirttiğiniz zaman dikkat new_path yerine belirtilen new_path/os_file_name.

  1. Aşağıdaki komutu çalıştırın deyim.

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

  3. Aşağıdaki komutu çalıştırın deyim burada logical_name değeri name sütununda sys.database_files ve new_path olan yeni konumunu katalog.

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

    ALTER DATABASE database_name SET ONLINE;
    

Alternatif olarak, for attach kullanabilirsiniz yan tümce tam metin kataloğu taşımak için create database deyim.Aşağıdaki örnek, bir tam metin Kataloğu'ndaki oluşturur AdventureWorks2008R2 veritabanı.Tam metin kataloğu yeni bir konuma taşımak için AdventureWorks2008R2 veritabanı ilişkisi kesildi ve tam metin kataloğu fiziksel olarak taşınır için yeni bir konum.Sonra veritabanı tam metin kataloğu yeni konumunu belirten takılmış olması gerekir.

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

Örnekler

Aşağıdaki örnek taşır AdventureWorks2008R2 günlük dosyasına yeni bir konuma bir parçası olarak planlı bir yerleştirme.

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'AdventureWorks2008R2')
    AND type_desc = N'LOG';
GO
ALTER DATABASE AdventureWorks2008R2 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 AdventureWorks2008R2 
    MODIFY FILE ( NAME = AdventureWorks2008R2_Log, 
                  FILENAME = 'C:\NewLoc\AdventureWorks2008R2_Log.ldf');
GO
ALTER DATABASE AdventureWorks2008R2 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'AdventureWorks2008R2')
    AND type_desc = N'LOG';