Przenoszenie baz danych użytkowników

W SQL Server, można przenieść danych dziennika, a wykaz pełnotekstowy pliki baza danych użytkownika do nowej lokalizacji określając nową lokalizację plików w klauzula nazwa_pliku ALTER DATABASE instrukcja.metoda stosuje się do przenoszenia plików bazy danych w obrębie tego samego wystąpienie SQL Server.Aby przenieść bazę danych do innego wystąpienie programu SQL Server lub do innego serwera kopia zapasowa i przywracanie lub Odłączanie i dołączanie operacji.

Ostrzeżenie

Niektóre funkcje Aparat baz danych programu SQL Server zmienić sposób, Aparat baz danych przechowuje informacje w plikach bazy danych.Funkcje te są ograniczone do określonych wersji programu SQL Server.Baza danych zawierająca te funkcje nie mogą być przenoszone do wersji SQL Server , nie obsługuje.Użyj sys.dm_db_persisted_sku_features dynamiczny widok zarządzania, aby wyświetlić wszystkie funkcje specyficzne dla wersji, które są włączone w bieżącej bazie danych.

Procedury opisane w tym temacie wymagają nazwa logiczna plików bazy danych.Aby uzyskać nazwę, kwerenda name kolumna w sys.master_files wykazu widoku.

Ostrzeżenie

Podczas przenoszenia na inne wystąpienie serwera bazy danych, aby zapewnić spójny wygląd użytkowników i aplikacje, trzeba odtworzyć niektórych lub wszystkich metadane dla bazy danych.Aby uzyskać więcej informacji, zobacz Zarządzanie metadane podczas tworzenia bazy danych na inne wystąpienie serwera.

Planowane przeniesienie procedury

Aby przenieść danych lub plik dziennika jako część planowanego przemieszczenia, wykonaj następujące kroki:

  1. Uruchom następujące polecenie w instrukcja.

    ALTER DATABASE database_name SET OFFLINE;
    
  2. Plik lub pliki można przenieść do nowej lokalizacji.

  3. Dla każdego pliku przeniesione, uruchom następujące polecenie w instrukcja.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );
    
  4. Uruchom następujące polecenie w instrukcja.

    ALTER DATABASE database_name SET ONLINE;
    
  5. Sprawdź zmiany pliku, uruchamiając następujące kwerendy.

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

Przeniesienie dysku zaplanowanej konserwacji

Aby przenieść plik jako część procesu konserwacji dysku zaplanowane, wykonaj następujące kroki:

  1. Dla każdego pliku ma być przeniesiony, uruchom następujące polecenie w instrukcja.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );
    
  2. Zatrzymać wystąpienie SQL Server lub zamykanie niedziałający systemu, aby przeprowadzić konserwację.Aby uzyskać więcej informacji, zobacz Zatrzymywanie usług.

  3. Plik lub pliki można przenieść do nowej lokalizacji.

  4. Ponownie uruchom wystąpienie SQL Server lub serwera.Aby uzyskać więcej informacji, zobacz Uruchamianie i ponowne uruchamianie usługi.

  5. Sprawdź zmiany pliku, uruchamiając następujące kwerendy.

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

Niepowodzenie procedury odzyskiwania

Jeśli plik musi być przenoszone z powodu awarii sprzętu, wykonaj następujące kroki, aby przenieść plik do nowej lokalizacji.

Ważna informacjaWażne:

Jeśli nie można uruchomić bazę danych, który jest w trybie podejrzanych lub w Państwie nieodzyskanych, tylko członkowie sysadmin roli stałych można przenieść pliku.

  1. Zatrzymać wystąpienie SQL Server , jeśli jest uruchomiona.

  2. Uruchomić wystąpienie SQL Server w trybie tylko do wzorca odzyskiwanie, wpisując następujące polecenia w wiersz polecenia.

    • Dla wystąpienie domyślnego (MSSQLSERVER) uruchom następujące polecenie.

      NET START MSSQLSERVER /f /T3608
      
    • Dla wystąpienie nazwane polecenia.

      NET START MSSQL$instancename /f /T3608
      

    Aby uzyskać więcej informacji, zobacz Jak Uruchomić wystąpienie programu SQL Server (polecenia net).

  3. Dla każdego pliku ma być przeniesiony za pomocą polecenie sqlcmd polecenia lub SQL Server Management Studio do uruchomienia następującej instrukcja.

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

    Aby uzyskać więcej informacji na temat używania polecenie sqlcmd , narzędzie zobacz Przy użyciu polecenie sqlcmd, narzędzie.

  4. Zakończ polecenie sqlcmd narzędzie lub SQL Server Management Studio.

  5. Zatrzymać wystąpienie SQL Server.

  6. Plik lub pliki można przenieść do nowej lokalizacji.

  7. Uruchomić wystąpienie SQL Server.Na przykład uruchomić: NET START MSSQLSERVER.

  8. Sprawdź zmiany pliku, uruchamiając następujące kwerendy.

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

Przenoszenie katalogów pełnego tekstu

Aby przenieść wykaz pełnotekstowy, wykonaj następujące kroki.Należy zauważyć, że podczas określania nowej wykazu lokalizacji, tylko new_path określonych zamiast new_path/os_file_name.

  1. Uruchom następujące polecenie w instrukcja.

    ALTER DATABASE database_name SET OFFLINE
    
  2. wykaz pełnotekstowy przenieść do nowej lokalizacji.

  3. Uruchom następujące polecenie w instrukcja gdzie logical_name jest wartością w name kolumna w sys.database_files i new_path jest nową lokalizację katalogu.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path');
    
  4. Uruchom następujące polecenie w instrukcja.

    ALTER DATABASE database_name SET ONLINE;
    

Alternatywnie można użyć klauzula dla DOŁĄCZANIA instrukcja CREATE DATABASE przenieść wykaz pełnotekstowy.Poniższy przykład tworzy wykaz pełnotekstowy w AdventureWorks2008R2 bazy danych.Aby przenieść wykaz pełnotekstowy do nowej lokalizacji, AdventureWorks2008R2 bazy danych jest odłączana, a wykaz pełnotekstowy jest przenoszony do nowej lokalizacji.Następnie baza danych jest dołączony, określające nową lokalizację wykaz pełnotekstowy.

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

Przykłady

W następującym przykładzie przenoszona AdventureWorks2008R2 pliku dziennika do nowej lokalizacji jako część planowanego przemieszczenia.

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';