Przenoszenie bazy danych użytkownika

W SQL Server, można przenieść dane, dziennik, a wykaz pełnotekstowy pliki baza danych użytkownika do nowej lokalizacji przez podanie nowej lokalizacji pliku w klauzula FILENAME ZMIENIANIE BAZY DANYCH instrukcja.Tę 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 na innym serwerze, za pomocą Tworzenie kopii zapasowych i przywracanie or Odłączanie i dołączanie operacji.

Uwaga

Niektóre funkcje SQL Server Database Engine Zmienianie sposobu, w których Database Engine informacje są przechowywane 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 wydania SQL Server który nie obsługuje ich. dynamiczny widok zarządzania sys.dm_db_persisted_sku_features służy do wyświetlania listy wszystkie funkcje specyficzne dla wersji, które są włączone w bieżącej bazie danych.

Procedury opisane w tym temacie wymagają logiczne nazwy plików bazy danych.Aby uzyskać nazwę, kwerendy Nazwa kolumnasys.master_files Służy do wyświetlania katalogu.

Uwaga

Po przeniesieniu bazy danych do innego wystąpienie serwera, do zapewnienia spójnego doświadczenie użytkowników i aplikacji, trzeba odtworzyć niektórych lub wszystkich metadane dla bazy danych.Aby uzyskać więcej informacji zobaczManaging Metadata When Making a Database Available on Another Server Instance.

Procedura relokacja planowanych

Aby przenieść danych lub pliku dziennika jako część planowane przeniesienie, wykonaj następujące kroki:

  1. Uruchom następujące instrukcja.

    ALTER DATABASE database_name SET OFFLINE
    
  2. Przenieś plik lub pliki do nowej lokalizacji.

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

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

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

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

Przeniesienie do konserwacji dysków zaplanowanych

Aby przenieść plik jako część procesu konserwacji dysków zaplanowanych, wykonaj następujące kroki:

  1. Każdy plik ma być przeniesiony należy wykonać następującą instrukcję.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
    
  2. Zatrzymać wystąpienie SQL Server lub zamknięcia systemu w celu wykonania konserwacji. Aby uzyskać więcej informacji zobaczStopping Services.

  3. Przenieś plik lub pliki do nowej lokalizacji.

  4. Ponownie uruchom wystąpienie SQL Server lub na serwerze. Aby uzyskać więcej informacji zobaczStarting and Restarting Services.

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

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

Niepowodzenie procedury odzyskiwanie

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

Important noteImportant Note:

Jeżeli nie można uruchomić w bazie danych, który jest znajduje się w trybie podejrzanych lub w stanie unrecovered, tylko członkowie sysadmin ustalić roli można przenieść plik.

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

  2. Uruchom wystąpienie z SQL Server w trybie tylko do wzorca odzyskiwanie wprowadzając jedną z następujących poleceń w wiersz polecenia.

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

      NET START MSSQLSERVER /f /T3608
      
    • wystąpienie nazwane uruchom następujące polecenie.

      NET START MSSQL$instancename /f /T3608
      

    Aby uzyskać więcej informacji zobaczHow to: Start an Instance of SQL Server (net Commands).

  3. Dla każdego pliku ma być przeniesiony za pomocą SQLCMD poleceń lub SQL Server Management Studio Aby uruchomić następującą instrukcję.

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

    Aby uzyskać więcej informacji na temat używania SQLCMD patrz narzędzieZa pomocą narzędzia sqlcmd.

  4. Zakończ SQLCMD Narzędzie lub SQL Server Management Studio.

  5. Zatrzymać wystąpienie SQL Server.

  6. Przenieś plik lub pliki do nowej lokalizacji.

  7. Uruchamianie programu SQL Server. Na przykład uruchomić: NET START MSSQLSERVER.

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

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

Przenoszenie katalogi Full-Text

Aby przenieść wykaz pełnotekstowy, wykonaj następujące kroki.Należy zauważyć, że w przypadku określenia nowego katalogu lokalizacji, tylko new_path określono zamiast new_path/os_file_name.

  1. Uruchom następujące instrukcja.

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

  3. Uruchom następującą instrukcję gdzie logical_name jest wartością w Nazwa kolumnasys.database_files and new_path jest to lokalizacja nowego katalogu.

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

    ALTER DATABASE database_name SET ONLINE
    

Można także klauzula O DOŁĄCZENIE instrukcja CREATE DATABASE umożliwia przenoszenie wykaz pełnotekstowy.Poniższy przykład tworzy wykaz pełnotekstowy w AdventureWorks Baza danych. Aby przenieść wykaz pełnotekstowy do nowej lokalizacji, AdventureWorks Baza danych jest odłączony i wykaz pełnotekstowy fizycznie zostanie przeniesiony do nowej lokalizacji. Następnie baza danych jest dołączony, określając nową lokalizację katalogu pełnego tekstu.

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

Przykłady

W poniższym przykładzie przenosi AdventureWorks plik dziennika w nowe miejsce, w ramach planowane przeniesienie.

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