sp_detach_db (języka Transact-SQL)

Odłącza bazę danych, która nie jest obecnie używana z wystąpienia serwera i opcjonalnie uruchamia funkcję UPDATE STATISTICS dla wszystkich tabel przed odłączeniem.

Important noteImportant Note:

Jeśli odłączana baza jest replikowana, to trzeba najpierw anulować jej publikowanie.Aby uzyskać więcej informacji, zobacz sekcję „Uwagi” w dalszej części tego tematu.

Topic link iconKonwencje składni języka Transact-SQL

sp_detach_db [ @dbname= ] 'database_name' 
    [ , [ @skipchecks= ] 'skipchecks' ] 
    [ , [ @keepfulltextindexfile = ] 'KeepFulltextIndexFile' ] 

Argumenty

  • [ @dbname = ] 'database_name'
    Is the name of the database to be detached.database_name is a sysname value, with a default value of NULL.

  • [ @skipchecks = ] 'skipchecks'
    Określa, czy pominąć, czy też uruchomić funkcję UPDATE STATISTIC.Parametr skipchecks jest typu nvarchar(10), a jego wartość domyślna to NULL.Aby pominąć funkcję UPDATE STATISTICS, określ wartość true.Aby jawnie uruchomić funkcję UPDATE STATISTICS, określ wartość false.

    W wersji SQL Server 2005 Database Engine i nowszych funkcja UPDATE STATISTICS jest domyślnie wykonywana w celu zaktualizowania informacji o danych w tabelach i indeksach.Wykonanie funkcji UPDATE STATISTICS jest przydatne dla baz danych, które mają być przeniesione na nośnik tylko do odczytu.

  • [ @keepfulltextindexfile= ] 'KeepFulltextIndexFile'
    Specifies that the full-text index file associated with the database that is being detached will not be dropped during the database detach operation.KeepFulltextIndexFile is a nvarchar(10) value with a default of true.Jeśli KeepFulltextIndexFile jest false, wszystkie pliki indeks pełnotekstowy skojarzonymi z bazą danych i metadane indeksu pełnotekstowego są odrzucane, chyba że baza danych jest tylko do odczytu. Jeśli wartością tą jest NULL lub true, związanych z całego tekstu metadane są przechowywane.

    Important noteImportant Note:

    This feature will be removed in a future version of Microsoft SQL Server. Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible.

Wartości kodów powrotnych

0 (sukces) lub 1 (brak)

Zestawy wyników

None

Remarks

Gdy baza danych zostaje odłączona, wszystkie jej metadane są porzucane.Jeśli była to domyślna baza danych dla jakiejś nazwy logowania, to ich domyślną bazą danych staje się master.

Uwaga

Aby uzyskać dodatkowe informacje na temat wyświetlania domyślnej bazy danych dla wszystkich kont nazw logowania, zobacz sp_helplogins (Transact-SQL).Dysponując wymaganymi uprawnieniami można użyć polecenia ALTER LOGIN, aby przypisać nazwie logowania nową domyślną bazę danych.

Ograniczenia

Komunikat historia zadanie lub kroku.

  • Wynik zadanie lub kroku.Data zadanie lub kroku rozpoczęło się wykonywanie.

  • Czas zadanie lub kroku rozpoczęło się wykonywanie.

    Zanim można odłączyć bazy danych, należy wyłączyć publikowanie, uruchamiając sp_replicationdboption.

    Uwaga

    Jeśli nie można użyć sp_replicationdboption, replikacja można usunąć przez uruchomienie sp_removedbreplication.

  • Operator, który został pocztą e-mail dotyczące tego zadanie (ma wartość NULL dla historia krok).

    operator_netsentAby uzyskać więcej informacji zobaczHow to: Drop a Database Snapshot (Transact-SQL).

    Uwaga

    migawka bazy danych nie mogą być odłączone lub dołączony.

  • Operator, który został wysłany komunikat sieciowy dotyczące tego zadanie (ma wartość NULL dla historia krok).

    operator_pagedAby uzyskać więcej informacji zobaczRemoving Database Mirroring.

  • Operator, który został stronicowana dotyczące tego zadanie (ma wartość NULL dla historia krok).

    W SQL Server 2005 i nowszych wersji, należy umieocić podejrzanych bazy danych do trybu awaryjnego przed można odłączyć bazy danych. Aby uzyskać więcej informacji na temat do bazy danych w trybu awaryjnego Zobacz ALTER DATABASE języka Transact-SQL).

  • Baza danych jest systemową bazą danych.

Uzyskiwanie wyłącznego dostępu

Odłączenie bazy danych wymaga wyłącznego dostępu do tej bazy danychJeśli baza danych, która ma być odłączona, jest używana, to przed odłączeniem trzeba ustawić dla niej tryb SINGLE_USER w celu uzyskania wyłącznego dostępu.

Na przykład następujące ALTER DATABASE Instrukcja uzyskuje wyłącznego dostępu do AdventureWorks Baza danych po wszystkich bieżących użytkowników, odłącz od bazy danych.

USE master;
ALTER DATABASE AdventureWorks
SET SINGLE_USER;
GO

Uwaga

Aby wymusić opuszczenie bazy danych przez bieżącego użytkownika natychmiast lub w ciągu określonej liczby sekund, należy użyć opcji ROLLBACK: ALTER DATABASE database_name SET SINGLE_USER WITH ROLLBACK rollback_option.Aby uzyskać więcej informacji, zobacz ALTER DATABASE języka Transact-SQL).

Ponowne dołączanie bazy danych

sp_MShasdbaccess (języka Transact-SQL)Wyświetla nazwę i właściciela wszystkich baz danych, do których użytkownik ma dostęp.

Uprawnienia

Wymaga posiadania stałej roli db_owner.

Przykłady

W poniższym przykładzie odłącza AdventureWorks Baza danych o skipchecks wartość true.

EXEC sp_detach_db 'AdventureWorks', 'true';

W poniższym przykładzie odłącza AdventureWorks bazy danych i zachowuje pełnego tekstu indeksowania plików i metadane indeksu pełnotekstowego. Zawiera jeden wiersz dla każdego pliku danych lub dziennika bazy danych.

exec sp_detach_db @dbname='AdventureWorks'
    , @keepfulltextindexfile='true';