Dołączanie bazy danych
Dotyczy:programu SQL Server
W tym artykule opisano sposób dołączania bazy danych w programie SQL Server przy użyciu programu SQL Server Management Studio lub języka Transact-SQL. Tej funkcji można użyć do kopiowania, przenoszenia lub uaktualniania bazy danych programu SQL Server.
Ograniczenia i ograniczenia
Aby uzyskać listę ograniczeń i zastrzeżeń, zobacz Database Detach and Attach (SQL Server).
Warunki wstępne
Przed kontynuowaniem zapoznaj się ze wszystkimi następującymi wymaganiami wstępnymi:
W przypadku przenoszenia bazy danych z jednego wystąpienia do drugiego należy najpierw odłączyć bazę danych od dowolnego istniejącego wystąpienia SQL. Jeśli spróbujesz dołączyć bazę danych, która nie została odłączona, zwróci błąd. Aby uzyskać więcej informacji, zobacz Odłączanie bazy danych.
Po dołączeniu bazy danych wszystkie pliki danych dla bazy danych muszą być dostępne. Często te pliki mają rozszerzenia .mdf lub ndf (dla plików danych) i .ldf (dla plików dziennika transakcji). Ponadto wszystkie grupy plików dla danych FILESTREAM muszą być obecne i dostępne. Aby uzyskać więcej informacji na temat dołączania bazy danych z obsługą funkcji FILESTREAM, zobacz Move a FILESTREAM-Enabled Database.
Jeśli jakikolwiek plik danych ma inną ścieżkę od momentu utworzenia lub ostatniego dołączenia bazy danych, musisz określić bieżącą ścieżkę pliku.
Konto usługi Silnika bazy danych musi mieć uprawnienia do odczytywania plików w nowej lokalizacji.
Jeśli pliki MDF i LDF znajdują się w różnych katalogach, a jedna ze ścieżek zawiera
\\?\GlobalRoot
, podczas dołączania bazy danych operacja zakończy się niepowodzeniem.
Czy 'Attach' jest najlepszym wyborem?
Zalecamy, aby przy przenoszeniu plików bazy danych w ramach tej samej instancji używać procedury planowanej relokacji ALTER DATABASE
zamiast odłączać i dołączać pliki bazy danych. Aby uzyskać więcej informacji, zobacz Przenieś Bazy Danych Użytkowników.
Nie zaleca się używania odłączania i dołączania w kontekście kopii zapasowych i odzyskiwania. Nie ma dostępnych kopii zapasowych dziennika transakcji ani odzyskiwania do punktu w czasie podczas odłączania plików do utworzenia kopii zapasowej zewnętrznie z programu SQL Server.
Bezpieczeństwo
Uprawnienia dostępu do plików są ustawiane podczas wielu operacji bazy danych, w tym w przypadku odłączenia i dołączenia bazy danych. Gdy baza danych jest odłączona lub dołączona, silnik bazy danych próbuje naśladować konto systemu Windows połączenia wykonującego operację, aby zagwarantować, że konto ma uprawnienia dostępu do bazy danych i plików dziennika. W przypadku mieszanych kont zabezpieczeń korzystających z logowań SQL Server, podszywanie się może zakończyć się niepowodzeniem.
W poniższej tabeli przedstawiono uprawnienia ustawione dla bazy danych i plików dziennika po zakończeniu operacji dołączania lub odłączania oraz czy konto łączące może zostać zastępowane przez silnik bazy danych.
Operacja | Łączenie konta może być personifikowane | Uprawnienia do plików są przyznawane |
---|---|---|
Odłączyć | Tak | Tylko konto wykonujące operację. Dodatkowe konta można dodać przez administratora systemu operacyjnego, jeśli są one potrzebne po odłączeniu bazy danych. |
Odłączyć | Nie | Konto usługi programu SQL Server (MSSQLSERVER) i członkowie lokalnej grupy Administratorzy systemu Windows. |
Przymocować | Tak | Konto usługi programu SQL Server (MSSQLSERVER) oraz członkowie lokalnej grupy Administratorzy systemu Windows. |
Przymocować | Nie | Konto usługi programu SQL Server (MSSQLSERVER). |
Aby uzyskać więcej informacji na temat uprawnień do systemu plików przyznanych identyfikatorom SID dla każdej z usług w ramach usługi SQL Server, przejdź do Konfigurowanie uprawnień do systemu plików dla dostępu do modułu bazy danych.
Ostrożność
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 uzyskać więcej informacji na temat dołączania baz danych i informacji o zmianach wprowadzonych w metadanych podczas dołączania bazy danych, zobacz Database Detach and Attach (SQL Server).
Uprawnienia
Wymaga uprawnień CREATE DATABASE
, CREATE ANY DATABASE
lub ALTER ANY DATABASE
.
Korzystanie z programu SQL Server Management Studio (SSMS)
Przed przeniesieniem bazy danych
Jeśli przenosisz bazę danych, zanim odłączysz ją od istniejącego wystąpienia programu SQL Server, użyj strony właściwości Database, aby przejrzeć pliki skojarzone z bazą danych i ich bieżące lokalizacje.
W Eksploratorze obiektów SQL Server Management Studio połącz się z instancją silnika bazy danych SQL Server, a następnie rozwiń instancję.
Rozwiń Databases, a następnie wybierz bazę danych użytkownika, którą chcesz odłączyć.
Kliknij prawym przyciskiem myszy nazwę bazy danych, wybierz Właściwości. Wybierz stronę Pliki i przejrzyj wpisy w tabeli plików bazy danych: .
Przed odłączeniem, przeniesieniem i dołączeniem należy uwzględnić wszystkie pliki skojarzone z bazą danych. Następnie przejdź do kroków odłączania, kopiowania plików i dołączania bazy danych w następnej sekcji. Aby uzyskać więcej informacji, zobacz Odłączanie bazy danych.
Dołączanie bazy danych
W programie SQL Server Management Studio Eksplorator obiektówpołącz się z instancją silnika bazy danych SQL Server, a następnie rozwiń widok tej instancji w SSMS.
Kliknij prawym przyciskiem myszy pozycję Bazy danych i wybierz pozycję Dołącz.
W oknie dialogowym Dołączanie Baz Danych , aby określić bazę danych do dołączenia, wybierz pozycję Dodaj. W oknie dialogowym Lokalizuj pliki bazy danych wybierz lokalizację, w której znajduje się baza danych, i rozwiń drzewo katalogów, aby znaleźć i wybrać plik .mdf bazy danych; na przykład:
C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_Data.mdf
Ważny
Próba wybrania bazy danych, która jest już dołączona, generuje błąd.
Bazy danych do dołączenia
Wyświetla informacje o wybranych bazach danych.<brak nagłówka kolumny>
Wyświetla ikonę wskazującą stan operacji dołączania. Możliwe ikony są opisane w opisie stanu .Lokalizacja pliku MDF
Wyświetla ścieżkę i nazwę wybranego pliku MDF.nazwa bazy danych
Wyświetla nazwę bazy danych.Dołącz jako
Opcjonalnie określa inną nazwę bazy danych do dołączenia jako.właściciel
Zawiera listę rozwijaną możliwych właścicieli baz danych, z której można opcjonalnie wybrać innego właściciela.Status
Wyświetla stan bazy danych zgodnie z następującą tabelą:Ikona Tekst stanu Opis (Brak ikony) (Brak tekstu) Operacja dołączania nie została uruchomiona lub może być w trakcie dla tego obiektu. Jest to ustawienie domyślne po otwarciu okna dialogowego. Zielony, trójkąt skierowany w prawo W toku Operacja dołączania została uruchomiona, ale nie została ukończona. Zielony znacznik wyboru Sukces Obiekt został pomyślnie dołączony. Czerwony okrąg zawierający biały krzyż Błąd Operacja dołączania napotkała błąd i nie została ukończona pomyślnie. Okrąg zawierający dwie czarne ćwiartki (po lewej i prawej) i dwie białe ćwiartki (u góry i dołu) Zatrzymany Operacja dołączania nie została ukończona pomyślnie, ponieważ to Ty zatrzymałeś operację. Okrąg zawierający zakrzywioną strzałkę wskazującą przeciwnie do ruchu wskazówek zegara Cofnięta Operacja dołączania zakończyła się pomyślnie, ale została wycofana z powodu błędu podczas dołączania innego obiektu. komunikat
Wyświetla pusty komunikat lub hiperlink "Nie znaleziono pliku".Dodaj
Znajdź niezbędne pliki głównej bazy danych. Po wybraniu pliku .mdf odpowiednie informacje są automatycznie wypełniane w odpowiednich polach bazy danych w celu dołączenia siatki.Usuń
Usuwa wybrany plik z bazy danych w celu dołączenia siatki."<database_name>" szczegóły bazy danych
Wyświetla nazwy plików do dołączenia. Aby zweryfikować lub zmienić nazwę ścieżki pliku, wybierz przycisk Przeglądaj (...).Notatka
Jeśli plik nie istnieje, w kolumnie Message zostanie wyświetlony komunikat "Nie znaleziono". Jeśli plik dziennika nie zostanie znaleziony, istnieje w innym katalogu lub został usunięty. Musisz zaktualizować ścieżkę pliku w szczegółach bazy danych , aby wskazać poprawną lokalizację lub usunąć plik dziennika z siatki. Jeśli plik danych ndf nie zostanie znaleziony, musisz zaktualizować jego ścieżkę w siatce, aby wskazać poprawną lokalizację.
oryginalna nazwa pliku
Wyświetla nazwę dołączonego pliku należącego do bazy danych.typ pliku
Wskazuje typ pliku Data lub Log.bieżąca ścieżka pliku
Wyświetla ścieżkę do wybranego pliku bazy danych. Ścieżkę można edytować ręcznie.komunikat
Wyświetla albo pusty komunikat, albo hiperłącze "Nie znaleziono pliku".
Użyj Transact-SQL
Przed przeniesieniem bazy danych
Jeśli przenosisz bazę danych, zanim zostanie odłączona od istniejącego wystąpienia programu SQL Server, użyj widoku katalogu systemu sys.database_files
, aby przejrzeć pliki skojarzone z bazą danych i ich bieżące lokalizacje. Aby uzyskać więcej informacji, zobacz sys.database_files (Transact-SQL).
W programie SQL Server Management Studio wybierz pozycję Nowe zapytanie, aby otworzyć Edytor zapytań.
Skopiuj następujący skrypt Transact-SQL do Edytora zapytań, a następnie wybierz Wykonaj. Ten skrypt wyświetla lokalizację fizycznych plików bazy danych. Pamiętaj, aby uwzględnić wszystkie pliki podczas przenoszenia bazy danych za pośrednictwem odłączania/dołączania.
USE [database_name] GO SELECT type_desc, name, physical_name from sys.database_files;
Przed odłączeniem, przeniesieniem i dołączeniem należy uwzględnić wszystkie pliki skojarzone z bazą danych. Następnie przejdź do kroków odłączania, kopiowania plików i dołączania bazy danych w następnej sekcji. Aby uzyskać więcej informacji, zobacz Odłączanie bazy danych.
Aby dołączyć bazę danych
Połącz się z silnikiem bazy danych.
Na pasku Standardowa wybierz pozycję Nowe zapytanie.
Użyj instrukcji CREATE DATABASE z klauzulą
FOR ATTACH
.Skopiuj poniższy przykład i wklej go w oknie zapytania, a następnie wybierz pozycję Wykonaj. Ten przykład dołącza wszystkie pliki bazy danych AdventureWorks2022 i zmienia nazwę bazy danych na
MyAdventureWorks
.CREATE DATABASE MyAdventureWorks ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') FOR ATTACH;
Baza danych może zawierać dodatkowe pliki danych (często, .mdf lub ndf) i wymagać dodatkowych plików do uwzględnienia w instrukcji
CREATE DATABASE ... FOR ATTACH
. Ponadto wszystkie grupy plików dla danych FILESTREAM muszą być również uwzględnione w instrukcji . Aby uzyskać więcej informacji na temat dołączania bazy danych obsługiwanej przez FILESTREAM, zobacz Move a FILESTREAM-Enabled Database.Notatka
Alternatywnie można użyć procedury składowanej sp_attach_db lub sp_attach_single_file_db. Jednak te procedury zostaną usunięte w przyszłej wersji programu Microsoft SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zalecamy, aby użyć
CREATE DATABASE ... FOR ATTACH
zamiast tego.
Po uaktualnieniu bazy danych programu SQL Server
Poziom zgodności bazy danych
Po uaktualnieniu bazy danych przy użyciu metody dołączania baza danych stanie się dostępna. Baza danych zostanie automatycznie zaktualizowana do wewnętrznego poziomu wersji nowego wystąpienia. Jeśli baza danych zawiera indeksy pełnotekstowe, proces uaktualniania importuje, resetuje lub ponownie kompiluje je, w zależności od ustawienia właściwości Full-Text Opcji uaktualnienia serwera. Jeśli opcja uaktualnienia ma wartość Import lub Rebuild, indeksy pełnotekstowe są 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 10 razy dłużej. Należy również pamiętać, że jeśli opcja uaktualnienia jest ustawiona na Import, jeśli wykaz pełnotekstowy jest niedostępny, skojarzone indeksy pełnotekstowe zostaną ponownie skompilowane.
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).
Przechwytywanie zmian danych (CDC)
Jeśli dołączasz bazę danych z wystąpienia programu SQL Server 2014 (12.x) lub starszego, które ma włączoną funkcję przechwytywania zmian danych (CDC), należy wykonać następujące polecenie, aby uaktualnić metadane przechwytywania zmian danych (CDC):
USE <database name>
EXEC sys.sp_cdc_vupgrade
Aby uzyskać więcej informacji, zobacz błąd podczas dołączania bazy danych z włączoną usługą CDC do wystąpienia programu SQL Server 2016 lub SQL Server 2017 w systemie Windows.
Zobacz też
- Odłączanie i dołączanie bazy danych (SQL Server)
- Odłącz bazę danych
- CREATE DATABASE (SQL Server Transact-SQL)
- Konfigurowanie Uprawnień Systemu Plików na Potrzeby Dostępu do Silnika Bazy Danych