Udostępnij za pośrednictwem


Uaktualnianie bazy danych przy użyciu odłączania i dołączania (Transact-SQL)

Dotyczy:programu SQL Server

W tym temacie opisano sposób używania operacji odłączania i dołączania w celu uaktualnienia bazy danych w programie SQL Server. Po dołączeniu do programu SQL Server baza danych jest natychmiast dostępna i jest automatycznie uaktualniana. To zapobiega używaniu bazy danych ze starszą wersją silnika bazy danych. Jednak uaktualnienie metadanych nie ma wpływu na ustawienie poziomu zgodności bazy danych . Zobacz więcej informacji na temat poziomu zgodności bazy danych po uaktualnieniu w dalszej części tego tematu.

W tym temacie

Przed rozpoczęciem

Ograniczenia i ograniczenia

  • Nie można dołączyć systemowych baz danych.

  • Łącz i rozłącz łańcuch własności między bazami danych przez ustawienie opcji własności między bazami danych na wartość 0. Aby uzyskać informacje na temat włączania łańcuchów własności baz danych, zobacz opcję konfiguracji serwera łańcuchów własności między bazami danych.

  • Przy dołączaniu replikowanej bazy danych, która została skopiowana zamiast odłączona:

    • W przypadku dołączenia bazy danych do uaktualnionej wersji tego samego wystąpienia serwera należy wykonać sp_vupgrade_replication, aby uaktualnić replikację po zakończeniu operacji dołączania. Aby uzyskać więcej informacji, zobacz sp_vupgrade_replication (Transact-SQL).

    • Jeśli dołączysz bazę danych do innego wystąpienia serwera (niezależnie od wersji), musisz wykonać sp_removedbreplication, aby usunąć replikację po zakończeniu operacji dołączania. Aby uzyskać więcej informacji, odnieś się do sp_removedbreplication (Transact-SQL).

Zalecenia

Zalecamy, aby nie dołączać ani przywracać baz danych z nieznanych lub niezaufanych źródeł. Takie bazy danych mogą zawierać złośliwy kod, który może wykonywać niezamierzony kod Transact-SQL lub powodować błędy, modyfikując schemat lub fizyczną strukturę bazy danych. Przed użyciem bazy danych z nieznanego lub niezaufanego źródła uruchom DBCC CHECKDB w bazie danych na serwerze nieprodukcyjnym, a także sprawdź kod, taki jak procedury składowane lub inny kod zdefiniowany przez użytkownika, w bazie danych.

Aby uaktualnić bazę danych przy użyciu odłączania i dołączania

  1. Odłącz bazę danych. Aby uzyskać więcej informacji, zobacz Odłączanie bazy danych.

  2. Opcjonalnie przenieś odłączony plik lub pliki bazy danych oraz plik lub pliki dziennika.

    Pliki dziennika należy przenosić wraz z plikami danych, nawet jeśli zamierzasz utworzyć nowe pliki dziennika. W niektórych przypadkach ponowne dołączenie bazy danych wymaga istniejących plików dziennika. W związku z tym zawsze zachowaj wszystkie odłączone pliki dziennika do momentu pomyślnego dołączenia bazy danych bez nich.

    Notatka

    Jeśli spróbujesz dołączyć bazę danych bez określenia pliku dziennika, operacja dołączania będzie szukać pliku dziennika w oryginalnej lokalizacji. Jeśli oryginalna kopia dziennika nadal istnieje w tej lokalizacji, ta kopia jest dołączona. Aby uniknąć używania oryginalnego pliku dziennika, określ ścieżkę nowego pliku dziennika lub usuń oryginalną kopię pliku dziennika (po skopiowaniu go do nowej lokalizacji).

  3. Dołącz skopiowane pliki do wystąpienia programu SQL Server. Aby uzyskać więcej informacji, zobacz Dołącz bazę danych.

Przykład

Poniższy przykład uaktualnia kopię bazy danych z wcześniejszej wersji programu SQL Server. Instrukcje Transact-SQL są wykonywane w oknie Edytor zapytań połączonym z wystąpieniem serwera, do którego jest dołączony.

  1. Odłącz bazę danych, wykonując następujące instrukcje Transact-SQL:

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'MyDatabase';  
    GO  
    
  2. Korzystając z wybranej metody, skopiuj pliki danych i dziennika do nowej lokalizacji.

    Ważny

    W przypadku produkcyjnej bazy danych najlepiej umieścić bazę danych i dziennik transakcji na oddzielnych dyskach. Różnią się one wymaganiami dotyczącymi operacji we/wy oraz rozwoju plików, dlatego zaleca się ich rozdzielenie jako najlepszą praktykę.

    Aby skopiować pliki za pośrednictwem sieci do dysku na komputerze zdalnym, użyj nazwy uniwersalnej konwencji nazewnictwa (UNC) lokalizacji zdalnej. Nazwa UNC ma postać \\Servername\Sharename\Path\Filename. Podobnie jak w przypadku zapisywania plików na lokalnym dysku twardym, odpowiednie uprawnienia wymagane do odczytu lub zapisu w pliku na dysku zdalnym muszą zostać przyznane kontu użytkownika używanemu przez wystąpienie programu SQL Server.

  3. Dołącz przeniesioną bazę danych i, opcjonalnie, dziennik, wykonując następującą instrukcję Transact-SQL:

    USE master;  
    GO  
    CREATE DATABASE MyDatabase   
        ON (FILENAME = 'C:\MySQLServer\MyDatabase.mdf'),  
        (FILENAME = 'C:\MySQLServer\Database.ldf')  
        FOR ATTACH;  
    GO  
    

    W programie SQL Server Management Studio nowo dołączona baza danych nie jest natychmiast widoczna w Eksploratorze obiektów. Aby wyświetlić bazę danych, w Eksploratorze obiektów kliknij pozycję Widok,, a następnie Odśwież. Po rozwinięciu węzła Databases w Eksploratorze obiektów nowo dołączona baza danych jest teraz wyświetlana na liście baz danych.

Po zaktualizowaniu bazy danych SQL Server

Jeśli baza danych ma indeksy pełnotekstowe, proces uaktualniania importuje, resetuje lub ponownie kompiluje je, w zależności od ustawienia właściwości serwera upgrade_option. Jeśli opcja uaktualnienia zostanie ustawiona na import (upgrade_option = 2) lub odbudowa (upgrade_option = 0), indeksy pełnotekstowe będą niedostępne podczas uaktualniania. W zależności od ilości indeksowanych danych importowanie może potrwać kilka godzin, a ponowne kompilowanie może potrwać do dziesięciu razy dłużej. Należy również pamiętać, że po ustawieniu opcji uaktualnienia na import skojarzone indeksy pełnotekstowe zostaną ponownie skompilowane, jeśli wykaz pełnotekstowy jest niedostępny. Aby zmienić ustawienie właściwości serwera upgrade_option, użyj sp_fulltext_service.

Poziom zgodności bazy danych po uaktualnieniu

Po uaktualnieniu poziom zgodności bazy danych pozostaje na poziomie zgodności przed uaktualnieniem, chyba że poprzedni poziom zgodności nie jest obsługiwany w nowej wersji. W takim przypadku uaktualniony poziom zgodności bazy danych jest ustawiony na najniższy obsługiwany poziom zgodności.

Jeśli na przykład dołączysz bazę danych o poziomie zgodności 90 przed dołączeniem jej do wystąpienia programu SQL Server 2019 (15.x), po uaktualnieniu poziom zgodności zostanie ustawiony na 100, co jest najniższym obsługiwanym poziomem zgodności w programie SQL Server 2019 (15.x). Aby uzyskać więcej informacji, zobacz ALTER DATABASE Compatibility Level (Transact-SQL).

Zarządzanie metadanymi w zmodernizowanym wystąpieniu serwera

W przypadku dołączania bazy danych do innego wystąpienia serwera w celu zapewnienia spójnego środowiska dla użytkowników i aplikacji może być konieczne ponowne utworzenie niektórych lub wszystkich metadanych bazy danych, takich jak identyfikatory logowania, zadania i uprawnienia, w innym wystąpieniu serwera. Aby uzyskać więcej informacji, zobacz Zarządzanie metadanymi podczas udostępniania bazy danych w innym wystąpieniu serwera (SQL Server).

Zmiany klucza głównego usługi i szyfrowania klucza głównego bazy danych z 3DES na AES

Program SQL Server 2012 (11.x) i nowsze wersje używają algorytmu szyfrowania AES do ochrony klucza głównego usługi (SMK) i klucza głównego bazy danych (DMK). AES to nowszy algorytm szyfrowania niż 3DES używany we wcześniejszych wersjach. Gdy baza danych jest najpierw dołączona lub przywrócona do nowego wystąpienia programu SQL Server, kopia klucza głównego bazy danych (zaszyfrowana za pomocą klucza głównego usługi) nie jest jeszcze przechowywana na serwerze. Należy użyć instrukcji OPEN MASTER KEY, aby odszyfrować klucz główny bazy danych (DMK). Po odszyfrowaniu klucza DMK masz opcję włączenia automatycznego odszyfrowywania w przyszłości, używając instrukcji ALTER MASTER KEY REGENERATE do aprowizacji serwera kopią klucza DMK zaszyfrowaną przy użyciu klucza głównego usługi (SMK). Gdy baza danych została uaktualniona z wcześniejszej wersji, klucz DMK powinien zostać wygenerowany ponownie, aby użyć nowszego algorytmu AES. Aby uzyskać więcej informacji na temat regeneracji DMK, zobacz ALTER MASTER KEY (Transact-SQL). Czas wymagany do ponownego wygenerowania klucza DMK do uaktualnienia do usługi AES zależy od liczby obiektów chronionych przez klucz DMK. Ponowne generowanie klucza DMK w celu uaktualnienia do AES jest konieczne tylko raz i nie ma wpływu na przyszłe ponowne generowanie w ramach strategii rotacji kluczy.