Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Dołącza bazę danych do serwera.
Ważne
Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zalecamy użycie CREATE DATABASE <database_name> FOR ATTACH zamiast tego. Aby uzyskać więcej informacji, zobacz CREATE DATABASE (TWORZENIE BAZY DANYCH). Aby odtworzyć wiele plików logów, gdy jeden lub więcej mają nową lokalizację, użyj CREATE DATABASE <database_name> FOR ATTACH_REBUILD_LOG.
Nie przyłączaj ani nie przywracaj 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.
Składnia
sp_attach_db
[ @dbname = ] N'dbname'
, [ { @filename1 ... @filename16 } = ] { N'*filename1*' ... N'*filename16*' }
[ ; ]
Arguments
[ @dbname = ] N'dbname'
Nazwa bazy danych, która ma być przypisana do serwera. @dbname to sysname, bez domyślnego ustawienia.
[ { ... @filename1@filename16 } = ] { N'filename1' ... N'filename16' }
Fizyczna nazwa, w tym ścieżka, pliku bazy danych. Ten parametr to nvarchar(260), z domyślnym parametrem NULL. Możesz podać do 16 nazw plików. Nazwy parametrów zaczynają się od @filename1 i zwiększają do @filename16. Lista nazw plików musi zawierać co najmniej główny plik (.mdf). Główny plik zawiera tabele systemowe wskazujące na inne pliki w bazie danych. Lista musi również zawierać pliki przeniesione po odłączeniu bazy danych.
Ten parametr odwzorowuje się na FILENAME parametr zdania CREATE DATABASE . Aby uzyskać więcej informacji, zobacz CREATE DATABASE (TWORZENIE BAZY DANYCH).
Uwaga / Notatka
Gdy dołączasz bazę danych SQL Server 2005 (9.x) zawierającą pełnotekstowe pliki katalogowe do nowszej wersji SQL Server, pliki katalogowe są przypisywane z ich poprzedniej lokalizacji wraz z innymi plikami bazy danych, tak samo jak w SQL Server 2005 (9.x). Więcej informacji znajdziesz w sekcji Ulepsz Full-Text Wyszukiwanie.
Zwracanie wartości kodu
0 (powodzenie) lub 1 (niepowodzenie).
Zestaw wyników
Żaden.
Uwagi
Procedura sp_attach_db przechowywana powinna być wykonywana tylko na bazach danych, które wcześniej zostały odłączone od serwera bazy danych za pomocą operacji jawnej sp_detach_db lub na skopiowanych bazach danych. Jeśli musisz określić więcej niż 16 plików, użyj CREATE DATABASE <database_name> FOR ATTACH lub CREATE DATABASE <database_name> FOR_ATTACH_REBUILD_LOG. Aby uzyskać więcej informacji, zobacz CREATE DATABASE (TWORZENIE BAZY DANYCH).
Każdy nieokreślony plik zakłada się, że znajduje się w swojej ostatniej znanej lokalizacji. Aby użyć pliku w innej lokalizacji, musisz określić nową lokalizację.
Nie można dołączyć bazy danych utworzonej przez najnowszą wersję programu SQL Server we wcześniejszych wersjach.
Uwaga / Notatka
Migawki bazy danych nie można odłączyć ani dołączyć.
Gdy dołączasz zreplikowaną bazę danych, która została skopiowana zamiast odłączona, rozważ następujące warunki:
Jeśli przypiszesz bazę danych do tej samej instancji serwera i tej samej wersji co oryginalna baza danych, nie są potrzebne dalsze kroki.
Jeśli dołączysz bazę danych do tego samego wystąpienia serwera, ale z uaktualnioną wersją, musisz wykonać sp_vupgrade_replication, aby uaktualnić replikację po zakończeniu operacji dołączania.
Jeśli baza danych zostanie dołączona do innego wystąpienia serwera, niezależnie od wersji, należy wykonać sp_removedbreplication, aby usunąć replikację po zakończeniu operacji dołączania.
Gdy baza danych jest po raz pierwszy dołączona lub przywracana do nowej instancji SQL Servera, kopia klucza głównego bazy danych (DMK) – zaszyfrowanego przez klucz głównego usługi (SMK) – nie jest jeszcze przechowywana na serwerze. Musisz użyć OPEN MASTER KEY tego wyroku, aby odszyfrować DMK. Po odszyfrowaniu DMK masz możliwość włączenia automatycznego odszyfrowania w przyszłości, używając ALTER MASTER KEY REGENERATE instrukcji do przekazania serwerowi kopii DMK, zaszyfrowanej SMK. Gdy baza danych jest aktualizowana z wcześniejszej wersji, DMK powinien zostać zregenerowany, aby użyć nowszego algorytmu AES. Aby uzyskać więcej informacji na temat ponownego generowania zestawu DMK, zobacz ALTER MASTER KEY. 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.
Permissions
Aby uzyskać informacje o tym, jak uprawnienia są obsługiwane przy dołączaniu bazy danych, zobacz CREATE DATABASE.
Przykłady
Poniższy przykład dołącza pliki z AdventureWorks2025 aktualnego serwera.
EXECUTE sp_attach_db
@dbname = N'AdventureWorks2022',
@filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_Data.mdf',
@filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_log.ldf';